首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用MySQL和JDBC运行.sql脚本

使用MySQL和JDBC运行.sql脚本
EN

Stack Overflow用户
提问于 2009-06-25 14:14:24
回答 7查看 67.9K关注 0票数 68

我开始在JDBC中使用MySQL。

代码语言:javascript
复制
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脚本?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-06-25 16:19:44

好的。你可以在这里在你的项目中使用这个类(由于文件长度的原因,发布在pastebin上)。但请记住保留apache许可证信息。

JDBC ScriptRunner

它是对iBatis ScriptRunner的抄袭,删除了依赖项。

您可以像这样使用它

代码语言:javascript
复制
Connection con = ....
ScriptRunner runner = new ScriptRunner(con, [booleanAutoCommit], [booleanStopOnerror]);
runner.runScript(new BufferedReader(new FileReader("test.sql")));

就这样!

票数 75
EN

Stack Overflow用户

发布于 2012-09-11 02:27:35

我对此做了很多研究,找到了一个很好的util from spring。我认为使用SimpleJdbcTestUtils.executeSqlScript(...)实际上是最好的解决方案,因为它更易于维护和测试。

编辑:SimpleJdbcTestUtils已弃用。您应该使用JdbcTestUtils。已更新链接。

票数 26
EN

Stack Overflow用户

发布于 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执行如下所示的脚本:

代码语言:javascript
复制
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();
    }
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1044194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档