Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.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 如何使用rawQuery检查数据库记录是否存在?_Android_Database - Fatal编程技术网

Android 如何使用rawQuery检查数据库记录是否存在?

Android 如何使用rawQuery检查数据库记录是否存在?,android,database,Android,Database,您好,我是android数据库新手,我有一个在画布上绘制矩形和圆形的应用程序。有一个删除按钮可以删除我绘制的形状。在我的ShapesDbHelper.java中,我有一个名为deleteShape的方法,在删除之前必须检查db记录是否存在 public boolean deleteShape(int shapeID) { boolean result = false; //did the delete succeed or not //check if db record is

您好,我是android数据库新手,我有一个在画布上绘制矩形和圆形的应用程序。有一个删除按钮可以删除我绘制的形状。在我的ShapesDbHelper.java中,我有一个名为deleteShape的方法,在删除之前必须检查db记录是否存在

public boolean deleteShape(int shapeID) {
    boolean result = false; //did the delete succeed or not

    //check if db record is present
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor mCursor = db.rawQuery("SELECT * FROM " + SchemeShapes.Shape.TABLE_NAME + " WHERE SchemeShapes.Shape.ID = ?",new String[]{String.valueOf(shapeID)} );
    int delete =0

    if (mCursor!=null) {
         delete = db.delete(SchemeShapes.Shape.TABLE_NAME, SchemeShapes.Shape.ID + "= ?", new String[]{String.valueOf(shapeID)});

    }
    if (delete!=0){
        result=true;
    }

   mCursor.close();
    db.close();
    return result;
}
但是,只有当我直接删除而不使用rawQuery检查数据库是否存在时,delete按钮才起作用。所以我的rawQuery输入参数一定有问题。我已经阅读了文档,但我并不真正理解它

这是我的createTable方法。任何帮助都将不胜感激

private final static String SHAPES_TABLE_CREATE =
            "CREATE TABLE " +
                    SchemeShapes.Shape.TABLE_NAME + " (" +
                    SchemeShapes.Shape.ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " +
                    SchemeShapes.Shape.SHAPE_NAME + " TEXT, " +
                    SchemeShapes.Shape.SHAPE_TYPE + " TEXT," +
                    SchemeShapes.Shape.SHAPE_X + " INTEGER," +
                    SchemeShapes.Shape.SHAPE_Y + " INTEGER," +
                    SchemeShapes.Shape.SHAPE_WIDTH + " INTEGER," +
                    SchemeShapes.Shape.SHAPE_HEIGHT + " INTEGER," +
                    SchemeShapes.Shape.SHAPE_RADIUS + " INTEGER," +
                    SchemeShapes.Shape.SHAPE_BORDER_THICKNESS + " INTEGER," +
                    SchemeShapes.Shape.SHAPE_COLOR + " TEXT);";
在删除之前还要检查
(mCursor.getCount()>0)

if (mCursor!=null && mCursor.getCount() > 0) {
         delete = db.delete(SchemeShapes.Shape.TABLE_NAME, SchemeShapes.Shape.ID + "= ?", new String[]{String.valueOf(shapeID)});

}
这一行:

if (mCursor!=null) {
         delete = db.delete(SchemeShapes.Shape.TABLE_NAME, SchemeShapes.Shape.ID + "= ?", new String[]{String.valueOf(shapeID)});

}
应该是:

if (mCursor!=null && mCursor.moveToFirst()) {
             delete = db.delete(SchemeShapes.Shape.TABLE_NAME, SchemeShapes.Shape.ID + "= ?", new String[]{String.valueOf(shapeID)});

}
我希望这对你有用。
//检查id是否存在
公共布尔CheckRecordInDBorNot(字符串id){
String Query=“Select*from SchemeShapes.Shape.TABLE_NAME where SchemeShapes.Shape.ID=”“+ID+””;
Cursor Cursor=db.rawQuery(查询,空);

if(cursor.getCount())在删除之前,我已经尝试过if mCursor!=null mCursor.moveToFirst(),但在我按下删除按钮后,应用程序仍然崩溃。请发布崩溃日志
I hope this will work for you.
//For Check id is present or not
public boolean CheckRecordInDBorNot(String id) {
String Query = "Select * from SchemeShapes.Shape.TABLE_NAME where SchemeShapes.Shape.ID='" + id + "'";
    Cursor cursor = db.rawQuery(Query, null);
    if (cursor.getCount() <= 0) {
        cursor.close();
        return false;
    }
    cursor.close();
    return true;
}

//for Delete
public void deleteShape(String id){
long l= db.delete("SchemeShapes.Shape.TABLE_NAME", " SchemeShapes.Shape.ID"+ " = ?", new String[]{id});
Log.e("count",""+l);
}

//paste these method and check this way.

if(CheckRecordInDBorNot(your id)){
deleteShape(your id);
}else{
  Toast.makeText(getActivity(), "Record Not Present...",  Toast.LENGTH_SHORT).show();
}