我正在使用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文件中的所有查询。只有第一个'create'查询成功执行,它抛出一个execption“Table'table_name'已经存在”。不执行.sql文件中的其他查询。每次运行服务器时都会发生这种情况。请帮助
答案 0 :(得分:1)
听起来你正试图在代码启动时设置数据库模式,并且由于表已经存在而无法运行其中一个语句。您需要使用事先检查的语句(例如:CREATE TABLE IF NOT EXISTS
)或在执行每个语句后捕获异常,以便它可以继续执行下一个语句。
try {
stmt.execute(value);
} catch (Exception e) {
//.. raise some warning and continue ..
}