我在验证我的删除查询时出现问题,即使数据不在我的数据库中它也会一直删除它说成功我希望它在用户输入数据库中不存在的数据时出错。这是我的代码:
try{
System.out.println("Enter record you want to delete: ");
frail = scn.nextLine();
}catch(Exception ee){
System.out.println(ee.getMessage());
}
try{
stmt = conn.createStatement();
String sqlII = "delete from tbl_test where test_name = ?";
PreparedStatement psII = conn.prepareStatement(sqlII);
psII.setString(1, frail);
psII.executeUpdate();
int rowAffacted = psII.executeUpdate();
if (rowAffacted != 0) {
System.out.println("Deleted!");
}else{
System.out.println("No Affected Rows!");
}
}
catch(Exception eer){
System.out.println(eer.getMessage());
}
答案 0 :(得分:1)
psII.executeUpdate();
返回一个int。如果这些值为零,则不会删除任何行,因此您可以看到用户存在不在数据库中,并且您可以显示错误。如果用户是核心,则值应该大于零。
int noOfAffectedRows =psII.executeUpdate();
if (noOfAffectedRows = 0){
//show Error
}
答案 1 :(得分:1)
您可以捕获executeUpdate的返回值,如下所示:
int rowAffacted = psII.executeUpdate();
if (rowAffacted != 0) {
System.out.println("Deleted!");
}
用于executeUpdate的Javadoc的返回值表示
either (1) the row count for SQL Data Manipulation Language (DML) statements or (2) 0 for SQL statements that return nothing
答案 2 :(得分:0)
executeUpdate()
返回已更改的行数,如果没有行受到影响,则返回0
,因此在您的情况下,您可以执行以下操作:
int alteredRows=psII.executeUpdate();
if(alteredRows==0)
{
System.out.println("No rows deleted");
}
else
{
System.out.println(alteredRows +"rows deleted");
}