java - 受影响的行数, SQL

标签 java mysql sql jdbc

我一直在阅读一些与我的问题相关的其他主题,但找不到好的答案,所以我决定自己写一个。 我正在处理的问题:

一个带有两个参数的 java 方法,餐厅名称和rateid。 此方法更新数据库(在本例中为删除)并返回一个 boolean 值(如果进行了删除,则返回 true;如果未找到符合指定条件的要删除的记录,则返回 false)。

我虽然可以通过分别检查受影响的行数来为该 boolean 值赋予值:如果受影响的行数为 0,则 boolean 值应该为 false,否则应该为 true。 但我被困在这部分代码中,因为我找不到计算受影响行数的方法...... 方法如下:

public boolean deleteRate(String restaurantname,int rateid){
        boolean result = false;
        db = new Database();
        String updatesql ;

        updatesql = "delete from rate where  id = ? and restaurantname = ?";

    try{
        dbConnection = db.getDBConnection();
        preparedStatement = dbConnection.prepareStatement(updatesql);
        preparedStatement.setInt(1,rateid);
        preparedStatement.setString(2, restaurantname);
        db.setPreparedStatement(preparedStatement);
        int count = db.getPreparedStatement().executeUpdate();

        //System.out.println(count);
        if (count == 0 ){
            result = false;
        }

        else {
            result = true ;
        }

        recomputeAverageRate(restaurantname);

    }catch(SQLException ex){

    }

    return result ;

}

每次我进行删除时,计数都等于 0 。 如果我能得到一些帮助,我会很高兴。 如果有更简单的方法或简单的方法或不同的方法来获得我需要的结果,我愿意接受您的所有建议! 等待回复。 谢谢您

数据库表费率元组:

int Id primary key ,
int count ,
varchar comment , 
varchar restaurantname ,
varchar phone , 
varchar registrationtime 

最佳答案

我对我的本地代码进行了一些尝试,并且得到了您希望的预期结果。

代码:

            preparedStatement = dbConnection.prepareStatement("drop table if exists rate; "
                    + "create table rate(id int, restaurantname varchar(20)); "
                    + "insert into rate values(1,'a'),(2,'b'),(1,'a')");
            preparedStatement.execute();

            String updatesql ;
            updatesql = "delete from rate where  id = ? and restaurantname = ?";
//          dbConnection = db.getDBConnection();
            preparedStatement = dbConnection.prepareStatement(updatesql);
            preparedStatement.setInt(1,1);
            preparedStatement.setString(2, "a");
//          db.setPreparedStatement(preparedStatement);
            int count = preparedStatement.executeUpdate();
            //System.out.println(count);
            boolean result = count > 0;
            System.out.println("count : " + count + ", result : " + result);

结果:

count : 2, result : true

因此,我认为问题可能出在表中的数据上,而不是java代码中。

关于java - 受影响的行数, SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36691519/

相关文章:

java - 如何翻译javaFX中的弹出窗口?

sql - 使用 Oracle SQL 连接同一列中的 2 个值

mysql - 查询从当天到 future 7 天的数据返回 null

c# - 如何编写正确的语法以从 C# 代码重命名 SQL Server 数据库表?

mysql - 需要稍微修改的 SQL 查询

java - Java中无法分割字符串

java - css文件不适用于我的jsp(maven/spring/hibernate元素)

java - 在配置文件中创建 map

php - 如何在mysql中将二进制数据解释为整数

mysql - 如何在 SQL 中连接多个表,其对象将使用继承建模?