Java - 只执行一次SQL查询

标签 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 文件中的所有查询。仅第一个“创建”查询成功执行,并抛出“表‘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/

相关文章:

java - 适用于 Java 的开源托管运行时环境 (MRTE) 服务器?

带内部子查询且where、order、group不使用索引的Mysql查询

java - 创建 web 应用程序的最佳方法,该应用程序通过外部客户端调用自己的其余服务来动态更新 UI

java - 在软键盘 android 上收听每个按键事件

java:简单类型转换

java - 如何打印 JComboBox 中的所有项目?

php - 根据来自多列的 LIKE 匹配项数量对 SQL 结果进行排序

mysql - R, Shiny ,应用程序之前的弹出窗口

Spring security logoutSuccessUrl to login?logout 似乎受到保护,虽然登录页面允许所有人

java - Spring 启动: Rest URL returns 404