检查更新查询是否受影响的行

时间:2014-09-25 18:00:42

标签: java mysql sql

如果我想在我的数据库中选择东西,我可以在ResultSet中执行execute并返回它以查看我得到的内容。但是,如果要插入或更新行,如何进行检查? 如何查看数据库返回的内容?如果它影响了什么?

public static boolean doUpdate(String statement) {
    openConnection();
    try {
        stmt = conn.createStatement();
        stmt.executeUpdate(statement);
        closeConnection();
        return true;
    } catch (SQLException ex) {
        System.out.println(DBhandler.class.getName()+"\n"+ex);
        closeConnection();
    }
    return false;
}

我试图给函数一个布尔返回值,但无论更新/插入是否有效,try中的代码都将继续。

2 个答案:

答案 0 :(得分:3)

executeUpdate method返回已执行的相应SQL语句的受影响行数。

  

返回:

     

(1)SQL数据操作语言(DML)语句的行数或(2)0表示不返回任何内容的SQL语句

int rows = executeUpdate(statement);

然后,您可以查看rows以查看它是否为0,并正确返回boolean

答案 1 :(得分:2)

executeUpdate命令返回受影响的行数。保留该数字,如果至少有一行受到影响,则返回true。此外,您应该在finally块中关闭连接,因此即使发生异常,也会执行closeConnection()。看看下面的代码。

public static boolean doUpdate(String statement) {
    boolean result = false;
    openConnection();
    try {
        stmt = conn.createStatement();
        result = stmt.executeUpdate(statement) > 0;
    } catch (SQLException ex) {
        System.out.println(DBhandler.class.getName()+"\n"+ex);
    } finally {
        closeConnection();
    }

    return result;
}