/**
* 创建数据库
* @param conn
* @param databaseName 数据库名称
* @throws SQLException
*/
private void createDatabase(Connection conn, String databaseName) throws SQLException{
try {conn.createStatement().execute("create database " + databaseName);
} catch (SQLException e) {
throw new SQLException("数据库创建失败。原因:" + e.getCause());
}
}
/**
* 初始化数据库(需要ibaits.jar)
* @param conn 一个打开的数据库链接
* @param sourceFilePath 数据库脚本文件路径:可创建数据库;向表中插入数据
* @throws IOException
* @throws SQLException
*/
private void initializeDatabaseByScriptRunner(Connection conn, String sourceFilePath) throws IOException, SQLException{
try {
ScriptRunner runner = new ScriptRunner(conn, false, false);
runner.setErrorLogWriter(null);
runner.setLogWriter(null);
runner.runScript(Resources.getResourceAsReader(sourceFilePath));
} catch (SQLException e) {
throw new SQLException("数据库初始化失败。原因:" + e.getCause());
}
}
/**
* 初始化数据库(需要ant.jar)
* @param driverClass
* 驱动类名称:<br>
* oracle.jdbc.driver.OracleDriver、<br>
* com.ibm.db2.jdbc.app.DB2Driver、<br>
* com.microsoft.jdbc.sqlserver.SQLServerDriver、<br>
* dm.jdbc.driver.DmDriver、<br>
* com.sybase.jdbc.SybDriver、<br>
* com.informix.jdbc.IfxDriver、<br>
* com.mysql.jdbc.Driver、<br>
* org.postgresql.Driver、<br>
* sun.jdbc.odbc.JdbcOdbcDriver
* @param jdbcUrl
* JDBC连接串:<br>
* jdbc:oracle:thin:@localhost:1521:orcl、<br>
* jdbc:db2://localhost:5000/sample、<br>
* jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb;SelectMethod=cursor、<br>
* jdbc:dm://localhost/system、<br>
* jdbc:sybase:Tds:localhost:5007/myDB、<br>
* jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver、<br>
* jdbc:mysql://10.0.0.2:3306/test、<br>
* jdbc:postgresql://localhost/myDB、<br>
* jdbc:odbc:Driver={MicroSoft Access Driver
* (*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb")
* @param user
* 用户名
* @param password
* 密码
* @param sourceFilePath 数据库.sql文件
* @throws IOException
* @throws SQLException
*/
private void initializeDatabaseByAnt(String driver, String url, String user, String password, String sourceFilePath) throws IOException, SQLException{
SQLExec sqlExec = new SQLExec();
//设置数据库参数
sqlExec.setDriver(driver);
sqlExec.setUrl(url);
sqlExec.setUserid(user);
sqlExec.setPassword(password);
//要执行的脚本
sqlExec.setSrc(new File(sourceFilePath));
//有出错的语句该如何处理
sqlExec.setOnerror((SQLExec.OnError)(EnumeratedAttribute
.getInstance(SQLExec.OnError.class, "abort")));
// sqlExec.setPrint(true); //设置是否输出
// //输出到文件 sql.out 中;不设置该属性,默认输出到控制台
// sqlExec.setOutput(new File("src/sql.out"));
sqlExec.setProject(new Project()); // 要指定这个属性,不然会出错
sqlExec.execute();
}
注意:
如果您使用的.sql文件是从数据库中导出的,例如
那么需要进行如下更改
首先,去掉 "USE [***]";
然后,替换所有的所有的“GO”为“”、去掉注释,以及print语句
最后,在每一条sql语句后面加";"
OK,祝您好运!