`

seam里面在发布的时候自动创建数据库

    博客分类:
  • JDBC
阅读更多
(1)下面是发布模板的代码:
public void publishOneTemplate(){
	try{
		ssId = this.getFTPClientInfo();
		if(ssId != null && !"".equals(ssId)){
			this.connectServerAndSetFileType();
			localFilePath = this.getFileAbsolutePath();
			System.out.println("localFilePath="+localFilePath);
			if(localFilePath != null && flag == true){
				createDatabase(localFilePath);
				this.createDirectoryName(publishWebsiteName,ftpClient,new File(localFilePath),localFilePath);
				}
				this.closeConnect();
			}
		}catch(java.net.SocketException se){
			se.printStackTrace();
		}catch(Exception e){
			e.printStackTrace();
		}
}

 

(2)下面是自动建立数据库mysql
public void createDatabase(String path){
		Connection connection = null;
		 try {
			String jdbcFile = path + "/WEB-INF/conf/jdbc.properties";
			InputStream in = new FileInputStream(jdbcFile);
			Properties p = new Properties();
			p.load(in);
			String driver = p.getProperty("jdbc.driver");
			String url = p.getProperty("jdbc.url");
			String  databaseUrl = url.substring(0, url.lastIndexOf("/"))+"/information_schema";
			String databaseName = url.substring(url.lastIndexOf("/")+1,url.length());
			String user = p.getProperty("jdbc.username");
			String password = p.getProperty("jdbc.password");
			Class.forName(driver);
			connection = DriverManager.getConnection(databaseUrl, user, password);
			connection.setAutoCommit(false);
			Statement statement = connection.createStatement();
			ResultSet rs = statement.executeQuery("select * from SCHEMATA where SCHEMA_NAME='"+databaseName+"'");
			if (!rs.next()){
				statement.clearBatch();
				statement.addBatch("create database if not exists `"+databaseName+"`");
				File scriptFile = new File(path + "/WEB-INF/script/database.sql");
				String script = FileUtil.convertFile2String(scriptFile);				
				statement.addBatch("USE `"+databaseName+"`");
				String[] scripts = script.split(";");
				for (int i = 0; i < scripts.length; i++){
					if (!"".equals(scripts[i].trim()))
						statement.addBatch(scripts[i]);
				}
				statement.executeBatch();
				connection.commit();
			}
		} catch (FileNotFoundException e) {
			logger.error(e.getMessage());
		} catch (IOException e) {
			logger.error(e.getMessage());
		} catch (ClassNotFoundException e) {
			logger.error(e.getMessage());
		} catch (SQLException e) {
			if (connection != null){
				try {
					connection.rollback();
				} catch (SQLException e1) {
					logger.error(e1.getMessage());
				}
			}
			logger.error(e.getMessage());
		} finally {
			if (connection != null){
				try {
					connection.close();
				} catch (SQLException e) {
					logger.error(e.getMessage());
				}
			}
		}
}

 

(3)这是它里面调用的一个方法。
public static String convertFile2String(File file, String encoding) throws IOException{
		byte[] bs = new byte[new Long(file.length()).intValue()];
		FileInputStream in = new FileInputStream(file);
		try{
			in.read(bs);
		}finally{
			in.close();
		}
		return encoding==null? new String(bs):new String(bs,encoding);
}

public static String convertFile2String(File file) throws IOException{
		return convertFile2String(file,null);
}

 

分享到:
评论

相关推荐

    seam创建工程

    这篇博客文章“seam创建工程”很可能是指导读者如何在开发环境中设置和初始化一个Seam项目。 首先,创建Seam工程通常涉及以下步骤: 1. **环境准备**:确保你的开发环境中已经安装了Java JDK、Eclipse IDE(或其他...

    JBoss Seam工程的创建

    生产环境的数据库schema通常不会在部署时自动导出,需要手动处理。 通过上述步骤,你将成功创建一个基础的JBoss Seam工程。值得注意的是,尽管Seam项目中可能包含大量XML配置,但大部分是标准的Java EE配置,一旦...

    JBOSS SEAM组件中文手册

    Seam自动管理组件的生命周期,包括创建、初始化、销毁等过程。 2. **事件(Events)**: 事件模型是Seam的一大特色,允许组件之间通过发布和监听事件进行通信,增强了组件间的解耦合。 3. **注入(Injection)**: ...

    Seam-gen生成基础项目骨架

    Seam-gen 是一款用于快速生成基于 Seam 框架的基础项目结构的工具,它通过简单的命令行交互式过程,帮助开发者构建项目的雏形,并且能够根据数据库信息自动生成管理数据库的 CRUD(Create, Read, Update, Delete)...

    seam 框架整合hibernate+jsf

    3. **事务管理**:Seam自动管理Hibernate的事务,使得开发者无需编写繁琐的事务控制代码。在JSF动作事件触发时,Seam可以自动开启、提交或回滚事务。 4. **安全性和身份验证**:Seam提供了内置的安全框架,可以轻松...

    Jboss Seam中文版

    2. **建立新的Eclipse项目**:通过Seam-gen插件自动创建项目模板。 3. **创建新操作**:演示了如何使用Seam-gen添加新功能或页面。 4. **生成应用程序**:从现有数据库中自动生成完整的Seam应用。 5. **部署EAR**:...

    seam in action 中文 english

    1. **组件化**:Seam引入了一种强大的组件模型,使得开发人员可以轻松地创建、管理和组合应用程序组件。这些组件可以是UI元素、业务逻辑或者数据访问对象,它们通过依赖注入(Dependency Injection, DI)进行通信,...

    SEAM 中文开发指南

    - **从现有数据库生成应用程序**:利用现有的数据库架构自动生成 SEAM 代码。 - **将应用部署为EAR**:打包为 EAR 文件以便部署到 Java EE 容器。 - **Seam与增量热部署**:支持热部署,提高开发效率。 - **在Jboss...

    eclipse 工程的 Seam 例子

    本文将详细讲解如何在Eclipse环境中创建并理解一个Seam工程的实例,结合EJB(Enterprise JavaBeans)和JSF(JavaServer Faces)的应用。 **Seam框架** Seam是一个开源的Java EE框架,它简化了企业级应用的开发过程...

    整合了seam的一些资源

    在Seam框架中,`JSF`是用于构建用户界面的MVC(Model-View-Controller)框架,它允许开发者通过声明式的方式创建动态和交互式的Web页面。`JPA`则负责数据持久化,与数据库进行交互,使得开发者能够方便地管理和操作...

    jboss seam 2.01GA REF DOC

    - **Seam 和 jBPM 集成**:通过将 Seam 组件与 jBPM 流程引擎相结合,实现业务流程的自动化。 - **任务管理**:Seam 负责用户界面和交互逻辑,jBPM 负责处理任务的执行流程。 **1.4.2 工作原理** - **流程定义**:...

    Seam_2.0_Reference_zh_CN

    2. **组件模型**:Seam引入了自己的组件模型,允许开发者声明式地创建和管理对象。这种模型允许组件之间的依赖注入,并提供了生命周期管理,使得代码更加简洁和可测试。 3. **JSF集成**:Seam与JavaServer Faces的...

    Seam_Reference_Guide.pdf

    - **使用Seam创建CRUD数据库应用**:这部分内容详细介绍了如何使用Seam Dev Tools快速生成一个CRUD数据库应用。 #### 12. CRUD应用实践教程 - **使用CRUD应用**:这部分内容提供了关于如何使用之前创建的CRUD应用...

    Seam Framework 2.0 Reference中文版

    - **从现有数据库生成应用程序**:使用 Seam-gen 从现有的数据库结构自动生成应用程序。 - **将应用部署为 EAR**:介绍了如何将 Seam 应用程序打包成 EAR 文件进行部署。 - **Seam 与增量热部署**:介绍了如何利用 ...

    Seam 2.1 安全模块框架

    5. **验证码支持**:为了防御自动化攻击,如脚本或恶意软件,Seam 提供了验证码功能,增强网站的安全性,防止非法登录和其他恶意行为。 对于开发人员来说,Seam 提供了方便的 API 和组件来控制这些功能。例如,可以...

    seam_reference英文文档,讲解Seam更详细

    - **数据库逆向工程**:这部分介绍了如何使用Seam框架的工具从现有数据库中自动生成应用程序。 ##### 6. 从现有的JPA/EJB3实体生成应用 - **实体逆向工程**:这部分介绍了如何使用Seam框架从现有的Java持久化API ...

    Seam_开发工具配置手册.pdf

    - **创建CRUD数据库应用程序**:使用Seam框架可以快速搭建具有增删改查功能的应用程序,包括数据库设计、实体类生成、页面开发等步骤。 #### 九、CRUD应用程序实战演示 - **使用CRUD应用程序**:介绍如何使用已经...

Global site tag (gtag.js) - Google Analytics