统计删除的记录,返回 0

Posted

技术标签:

【中文标题】统计删除的记录,返回 0【英文标题】:Count deleted records, returns 0 【发布时间】:2016-03-21 10:25:04 【问题描述】:

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

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();

删除执行得很好。然后我想查看上次delete删除了多少条记录:所以我调用这个方法:

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 条记录被删除。

【问题讨论】:

【参考方案1】:

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

final int deletedRowCount = stm.executeUpdate();

【讨论】:

【参考方案2】:

documentation 说:

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

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

【讨论】:

以上是关于统计删除的记录,返回 0的主要内容,如果未能解决你的问题,请参考以下文章

Day02

ThinkPHP add save delete的返回说明

MongoDB--MapReduce分布统计s

Mybatis执行sql(insertupdatedelete)返回值问题

Swift cloudkit CKFetchRecordZoneChangesOptions 无法返回删除记录

插入,更新或删除记录时返回记录的ID