我开始在JDBC中使用MySQL。
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql:///x", "x", "x");
stmt = conn.createStatement();
stmt.execute( "CREATE TABLE amigos" +
"("+
"id int AUTO_INCREMENT not null,"+
"nombre char(20) not null,"+
"primary key(id)" +
")");
我有3-4个表要创建,这看起来不太好。
有没有办法从MySQL JDBC运行.sql脚本?
发布于 2009-06-25 16:19:44
好的。你可以在这里在你的项目中使用这个类(由于文件长度的原因,发布在pastebin上)。但请记住保留apache许可证信息。
它是对iBatis ScriptRunner的抄袭,删除了依赖项。
您可以像这样使用它
Connection con = ....
ScriptRunner runner = new ScriptRunner(con, [booleanAutoCommit], [booleanStopOnerror]);
runner.runScript(new BufferedReader(new FileReader("test.sql")));
就这样!
发布于 2012-09-11 02:27:35
我对此做了很多研究,找到了一个很好的util from spring。我认为使用SimpleJdbcTestUtils.executeSqlScript(...)
实际上是最好的解决方案,因为它更易于维护和测试。
编辑:SimpleJdbcTestUtils
已弃用。您应该使用JdbcTestUtils
。已更新链接。
发布于 2012-11-04 10:03:11
Spring Framework的ResourceDatabasePopulator
可能会有所帮助。正如您所说的,您正在使用MySQL和JDBC,让我们假设您已经准备好了一个由MySQL支持的DataSource
实例。此外,让我们假设您的MySQL脚本文件是类路径可定位的。假设您使用的是WAR布局,并且脚本文件位于目录src/main/webapp/resources/mysql-scripts/...
或src/test/resources/mysql-scripts/...
中。然后,您可以使用ResourceDatabasePopulator
执行如下所示的脚本:
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
import javax.sql.DataSource;
DataSource dataSource = getYourMySQLDriverBackedDataSource();
ResourceDatabasePopulator rdp = new ResourceDatabasePopulator();
rdp.addScript(new ClassPathResource(
"mysql-scripts/firstScript.sql"));
rdp.addScript(new ClassPathResource(
"mysql-scripts/secondScript.sql"));
try {
Connection connection = dataSource.getConnection();
rdp.populate(connection); // this starts the script execution, in the order as added
} catch (SQLException e) {
e.printStackTrace();
}
https://stackoverflow.com/questions/1044194
复制相似问题