1

我正在尝试选择距当前日期超过 7 天的行。使用的数据库是 DB2 版本 9。

您能告诉我如何在查询中准确使用日期时间吗?日期表字段是时间戳类型。

我能够毫无问题地手动运行查询。但是,当我在准备好的语句中使用时,
应用程序在执行查询结果时挂起 = pselect.executeQuery(); 因此,我们需要重新启动 db2 实例才能清除它。你能帮忙看看可能是什么问题吗?我根本没有看到任何例外。如果我删除 select_query 部分,代码的其他部分工作正常。

try{
    String select_query = "SELECT URL_ID ,URLVAL FROM URL_TAB WHERE " +
                  "UPDATED_DATE < TIMESTAMP(CURRENT_DATE - 7 DAYS, '00.00.00')";
    System.out.println("select_query=" + select_query);

    conn = JDBCDataObjectFactoryManager
            .getConnection("JDBCConnectionFactory-SDE");

    pselect = conn.prepareStatement(select_query);
    System.out.println("pselect=" + pselect);

try{    
    System.out.println("inside try");   
    result = pselect.executeQuery();        
    System.out.println("result=" + result);
}catch(Exception e){ 
    System.out.println("inside catch"); 

    System.out.println("error message==============>"+e.getMessage());

}

if ((result != null) && (result.next())) {
            System.out.println("3 >>>>>>>>>>>>>>>>>>>>>>>>>");

             url_id = result.getInt(1);
             url = result.getString(2);
}//end if
4

1 回答 1

1

有两种可能性:查询处于锁定等待状态,或者运行时间过长以至于看起来被挂起。

检查 LOCKWAIT 数据库配置参数的值是多少——默认为 -1,表示无穷大,您通常希望将其设置为更合理的值,通常为 30 或 60 秒。如果是锁等待导致您的应用程序“挂起”,那么您会得到一个异常,这将帮助您进一步调试。

如果问题是由较差的查询性能引起的,您需要与 DBA 一起找出根本原因并加以解决。

于 2013-06-19T23:29:26.703 回答