我正在使用 Spring 框架和 MySQL 数据库开发 J2EE 应用程序。我只想从 java 执行 SQL 脚本(可能带有请求映射)一次。我将 sql 语句作为键值对存储在属性文件中,然后遍历每个键并执行该语句。
Connection con = ds.getConnection();
Statement stmt = con.createStatement();
Enumeration enuKeys = properties.keys();
while (enuKeys.hasMoreElements()) {
String key = (String) enuKeys.nextElement();
String value = properties.getProperty(key);
stmt.execute(value);
}
这是正确的做法吗?还是有其他方法可以做同样的事情?提前致谢。
更新:
如评论中所述,我尝试了 Spring jdbc 初始化数据库,但它没有执行 sql 文件中的所有查询。仅第一个“创建”查询成功执行,并抛出“表‘table_name’已存在”。不执行 .sql 文件中的其他查询。每次我运行服务器时都会发生这种情况。请帮忙
最佳答案
当您的代码开始时,您正试图设置数据库模式,但其中一条语句无法运行,因为该表已经存在。您需要使用预先检查的语句(例如:CREATE TABLE IF NOT EXISTS
)或在执行每个语句后捕获异常,以便它可以继续执行下一个语句。
try {
stmt.execute(value);
} catch (Exception e) {
//.. raise some warning and continue ..
}
关于Java - 只执行一次SQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21545096/