您好我是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直接删除以检查db存在时有效。所以我的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);";
答案 0 :(得分:0)
在删除之前还要检查是否(mCursor.getCount() >0)
。
if (mCursor!=null && mCursor.getCount() > 0) {
delete = db.delete(SchemeShapes.Shape.TABLE_NAME, SchemeShapes.Shape.ID + "= ?", new String[]{String.valueOf(shapeID)});
}
答案 1 :(得分:0)
这一行:
const queryString = '?cn=asdf%20asdf&pn=asdf%20asdf&pe=asdf%40example.com&d=asdf%0A%0Aasdf&ye=test%40example.com&c=1234&tc=true';
const params = new URLSearchParams(queryString);
console.log(params.get('d'));
const queryObj = {};
for (const [key, val] of params.entries()) {
queryObj[key] = val;
}
console.log(JSON.stringify(queryObj));
应该是:
if (mCursor!=null) {
delete = db.delete(SchemeShapes.Shape.TABLE_NAME, SchemeShapes.Shape.ID + "= ?", new String[]{String.valueOf(shapeID)});
}
答案 2 :(得分:0)
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();
}