gpt4 book ai didi

java - 使用 JDBC 创建数据库模式的模式

转载 作者:行者123 更新时间:2023-11-29 08:17:59 25 4
gpt4 key购买 nike

我有一个 Java 应用程序,它使用 JDBC 将数据从遗留文件格式加载到 SQLite 数据库中。如果指定的数据库文件不存在,则应该创建一个新文件。目前,数据库的模式在应用程序中是硬编码的。我宁愿将它作为 SQL 脚本放在单独的文件中,但显然没有简单的方法通过 JDBC 执行 SQL 脚本。有没有其他方法或模式可以实现这样的目标?

最佳答案

您的句子 “现在有一种通过 JDBC 执行 SQL 脚本的简便方法” 让我困惑了一分钟,但我认为您是在说没有 简单的方法"。 :)

根据其他人的说法,是的......完美的世界场景是使用 ORM 工具,比如 Hibernate,但我也理解当你在工作中处理遗留问题时,你的团队可能不想花太多时间重构该项目。

我同意您应该将数据库模式重构到一个单独的文件中。您实际上可以使用 JDBC 执行 SQL 脚本。当我运行某些测试用例时,我总是这样做。

这是我的做法。在我的案例中,我使用 SQL Server 数据库。因此,您需要调整代码以满足您的需求。

String ddl = ... // load your SQL script file into this string
String delimiter = "GO"; // in my case, SQL Server uses GO as delimiter, you use whatever you want here.


private void executeDDL(String ddl, String delimiter) {
Connection con = null;

try {
con = ... // get the connection

// enable transaction
con.setAutoCommit(false);

Statement statement = con.createStatement();

// for every DDL statement, execute it
for (String sql : ddl.split(delimiter)) {
if (StringUtils.isNotBlank(sql)) {
statement.executeUpdate(sql);
}
}

statement.close();
con.commit();
}
catch (Exception e) {
e.printStackTrace();
}
finally {
try {
con.close();
}
catch (Exception ignored) {
}
}
}

关于java - 使用 JDBC 创建数据库模式的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2911806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com