java - 在循环中执行 SQL 查询

标签 java sql resultset

我有这样的场景。我将在服务器中触发一个作业,一旦该作业被触发,作业表中就会生成一个 Execution_status_code 为 1 的条目。我需要等待一段时间,比如 5 分钟,然后重新检查 Execution_status_code 值。一旦该值更改为 2,我就需要继续进行。

我正在使用现有连接来连接到数据库。我需要执行 SQL,如果 SQL 输出为 In Progress,我需要等待一段时间,然后再次执行该语句。这样做直到SQL输出成功,直到此时继续等待。

下面是我尝试过的代码。

Thread t = new Thread();
java.sql.Connection conn_javaComp = (java.sql.Connection)globalMap.get("conn_tNetezzaConnection_1");
java.sql.Statement st = null;
java.sql.ResultSet rs = null;
String check = null;
String dbquery_javaComp = "select case when EXECUTION_STATUS_CODE = 2 then 'Success' when EXECUTION_STATUS_CODE = 1 then 'In progress' else 'Failure' end as EXECUTION_STATUS_CODE from JOB_BKUP_NCR where JOB_TYPE_CODE="+context.JobTypeCode+" and Load_id = (select max(load_id) from JOB_BKUP_NCR where job_type_code="+context.JobTypeCode+") and START_DATETIME = (select max(START_DATETIME) from JOB_BKUP_NCR where job_type_Code="+context.JobTypeCode+")";
try 
    {
        do 
        {
            st = conn_javaComp.createStatement();
            rs = st.executeQuery(dbquery_javaComp);
            if(rs.next()) 
            {
            check = rs.getString(1);
            System.out.println(check);
            if (check.equalsIgnoreCase("In Progress"))
            {
                t.sleep(1000);
                System.out.println("thread executed1");
                System.out.println(dbquery_javaComp);
                System.out.println(check);
            } 
            } 
            else {
            System.out.println(" No data found");
            }
        }while (!"Success".equals(check));

    }
catch (Exception e) {
    e.printStackTrace();
} finally {
    try {
        if( rs != null) 
            rs.close();
        if( st!= null)
            st.close();
    } 
    catch (Exception e1) {
        e1.printStackTrace();
    }
}

我得到的输出是“正在进行”。即使我更改了数据库中的值,循环也会出现在进行中。我不确定我哪里做错了。有什么建议吗?

最佳答案

您正在循环内创建一个新语句和一个新结果集,因此它们应该在循环内关闭。我认为您的连接因多个语句和结果集而损坏,而没有关闭它们。请尝试关闭它们,看看是否有效。

关于java - 在循环中执行 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22032124/

相关文章:

java - 在没有中间类的情况下将数据插入到 JavaFX TableView

java - 创建带有计算值的枚举

java - 类似于 GSON in Jackson for arrays

sql server 分组结果

MySQL 查询 : How can I find top 5 images in each brand ?

java - PreparedStatement ResultSet - 列包含所选列名称作为字符串而不是所选列的实际值

java - 在Java中将十六进制字符串转换为ASCII

java - Java 中更高精度的 double 函数和三角函数

PHP AND 子句不显示结果,但 OR 是

mysql - 使用 vba 的 MS-Access 前端中的 MySQL 存储过程的多个结果集?