代码之家  ›  专栏  ›  技术社区  ›  yaylitzis

计数已删除的记录,返回0

  •  0
  • yaylitzis  · 技术社区  · 9 年前

    我执行 DELETE 通过调用一个方法从我的servlet在我的表中 action.deleteBox(box); 执行删除功能

    deleteBox方法

    Connection c = null;
    PreparedStatement stm = null;
    sq = "DELETE FROM BOXES WHERE ...";
    
    try {       
        Class.forName(typeDB);
        c = DriverManager.getConnection(path);    
        stm = c.prepareStatement(sq);
        //...
        stm.executeUpdate();
    
    } catch (SQLException e) {             
        System.out.println(e.getMessage());
    } finally {
            System.out.println("my stm is closed : " + stm.isClosed());
            if (stm != null)
                        stm.close();
            if (c != null)
                        c.close();
    }
    

    删除被良好地执行。然后我想检查上次删除中删除了多少条记录:所以我调用这个方法:

    public int countDeletesRecords() 
            throws SQLException, ClassNotFoundException {
    
        Connection c = null;
        PreparedStatement stm = null;
        sq = "SELECT changes() as \"deletedRows\" ";
        int deletedRows=-1;
    
        try {       
            Class.forName(typeDB);
            c = DriverManager.getConnection(path);    
            stm = c.prepareStatement(sq);       
            ResultSet rs = stm.executeQuery();
    
            if (rs.next()) {
                deletedRows = rs.getInt("deletedRows");
            }
    
        } catch (SQLException e) {             
            System.out.println(e.getMessage());
        } finally {
            System.out.println("my stm is closed : " + stm.isClosed());
            if (stm != null)
                stm.close();
            if (c != null)
                c.close();
        } 
    
        return deletedRows; //I get 0..
    }
    

    我得到0,而1条记录被删除。

    2 回复  |  直到 9 年前
        1
  •  3
  •   hmjd    9 年前

    虽然这并不能直接回答这个问题,但另一种更简单的方法将捕获 executeUpdate() ,返回受影响(在本例中为已删除)的行数:

    final int deletedRowCount = stm.executeUpdate();
    
        2
  •  1
  •   CL.    9 年前

    这个 documentation 说:

    此函数返回数据库连接上最近完成的INSERT、UPDATE或DELETE语句修改、插入或删除的行数

    您正在创建一个从未执行过DELETE语句的新数据库连接。