3

我面临一个问题。我不知道这是否正确。

我正在执行一个准备好的语句查询,它将返回 true/false 作为布尔值。当查询应该成功执行时,它将以布尔值返回 true,但返回 false。

我应该怎么办?

代码如下:

String updateListQuery = "UPDATE RECON_EXCEPTION_ETM_DCR SET GROUP_ID = ?, ASSIGN_DT = SYSDATE WHERE RECON_ID = ? AND UPPER(TRIM(REASON_DESC)) <> 'RECONCILED' AND TRUNC(DUTY_DATE) = ? " ;
try{
    conn = Connect.getConn();
    getGroupNameStmt = conn.prepareStatement(updateListQuery);
    
    getGroupNameStmt.setString(1, groupId);
    getGroupNameStmt.setString(2, reconId);
    getGroupNameStmt.setString(3, defFormatDt);
    
    flag = getGroupNameStmt.execute();
     
     flag = true;
    
}catch(SQLException e){
    flag = false;
    e.printStackTrace();
}finally{
    try{
        conn.commit();
        getGroupNameStmt.close();
        conn.close();
    }catch(SQLException e){
        e.printStackTrace();
    }
4

2 回答 2

5

对于数据操作语言 (DML) 语句,例如 INSERT、UPDATE 或 DELETE,您可以使用ExecuteUpdate()返回更新的行数,这在运行更新语句时很有用。在您的情况下,不需要它,因为您知道要插入多少条记录。

int updateCount=pst.executeUpdate();

if(updateCount>0)
{
    flag=true;
}
于 2013-07-24T05:05:03.847 回答
0

要更新任何内容,您应该使用该executeUpdate方法。它的返回类型是整数。因此,您只需检查是否:

if((getGroupNameStmt.executeUpdate())>0)
{
    do something
}
else
{
    do something
}
于 2013-07-24T05:03:38.627 回答