Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 尝试获取delete database语句时,如果有效或无效,则返回布尔值_Android_Sqlite_Try Catch_Toast - Fatal编程技术网

Android 尝试获取delete database语句时,如果有效或无效,则返回布尔值

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

我试图让我的delete函数返回一个布尔值,如果它有效或无效。用户输入一个数字,如果有一行带有该数字,它将删除该行。我遇到的问题是,如果我输入了一个无效的数字,就不会发生错误。Eclipse迫使我在db.delete语句周围放置一个try-catch。但是,当我使用调试器并输入错误的数字时,try语句会起作用,它会跳过catch部分。我试图弄清楚,如果delete语句不起作用,如何让它返回布尔值,这样我就可以使用if语句生成显示错误的toast。 下面是delete语句的代码

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作为真假。