我一直在阅读一些与我的问题相关的其他主题,但找不到好的答案,所以我决定自己写一个。 我正在处理的问题:
一个带有两个参数的 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/