Java - 仅执行一次SQL查询

时间:2014-02-04 06:03:43

标签: java mysql spring jdbc spring-data

我正在使用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文件中的其他查询。每次运行服务器时都会发生这种情况。请帮助

1 个答案:

答案 0 :(得分:1)

听起来你正试图在代码启动时设置数据库模式,并且由于表已经存在而无法运行其中一个语句。您需要使用事先检查的语句(例如:CREATE TABLE IF NOT EXISTS)或在执行每个语句后捕获异常,以便它可以继续执行下一个语句。

try {
  stmt.execute(value);
} catch (Exception e) {
  //.. raise some warning and continue ..
}