Android 尝试获取delete database语句时,如果有效或无效,则返回布尔值
我试图让我的delete函数返回一个布尔值,如果它有效或无效。用户输入一个数字,如果有一行带有该数字,它将删除该行。我遇到的问题是,如果我输入了一个无效的数字,就不会发生错误。Eclipse迫使我在db.delete语句周围放置一个try-catch。但是,当我使用调试器并输入错误的数字时,try语句会起作用,它会跳过catch部分。我试图弄清楚,如果delete语句不起作用,如何让它返回布尔值,这样我就可以使用if语句生成显示错误的toast。 下面是delete语句的代码Android 尝试获取delete database语句时,如果有效或无效,则返回布尔值,android,sqlite,try-catch,toast,Android,Sqlite,Try Catch,Toast,我试图让我的delete函数返回一个布尔值,如果它有效或无效。用户输入一个数字,如果有一行带有该数字,它将删除该行。我遇到的问题是,如果我输入了一个无效的数字,就不会发生错误。Eclipse迫使我在db.delete语句周围放置一个try-catch。但是,当我使用调试器并输入错误的数字时,try语句会起作用,它会跳过catch部分。我试图弄清楚,如果delete语句不起作用,如何让它返回布尔值,这样我就可以使用if语句生成显示错误的toast。 下面是delete语句的代码 public vo
public void deleteInspection(long _id)throws Exception
{
db.delete(DB_TABLE,"_id=" + _id , null);
}
下面是try-catch语句,它是一个警报对话框
new AlertDialog.Builder(this)
.setTitle("Delete a report")
.setMessage("Enter the Id number of the report to delete")
.setView(addView)
.setPositiveButton("Submit",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
String id = idNum.getText().toString();
long primaryId = Long.parseLong(id);
info.open();
try {
info.deleteInspection(primaryId);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
info.close();
dbInfo();
}
})
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
}
}).show();
}
db.delete()
应返回一个int
,这是受影响的行数。稍微修改一下代码,这就变得非常简单:
public boolean deleteInspection(long _id)throws Exception
{
int numResults = 0;
numResults = db.delete(DB_TABLE,"_id=" + _id , null)
return (numResults < 1);
}
public布尔deleteInspection(long\u id)引发异常
{
int numResults=0;
numResults=db.delete(db_TABLE,“\u id=”+\u id,null)
返回(numResults<1);
}
作为旁注,通常不赞成使用毯子捕获所有异常(捕获(异常e)
),最好逐个处理所有问题,因为您的捕获块可能在表面下隐藏了一些特别邪恶的错误
:)。谢谢,我忘了使用int作为真假。