Android 从sqlite中删除行不起作用

Android 从sqlite中删除行不起作用,android,sqlite,Android,Sqlite,我有一个表,在其中插入数据没有问题。但当我尝试删除一行时,它返回0 count。它不会删除该行。我的sql语句有什么问题 表创建 final String SQL_CREATE_DOG_TABLE = "CREATE TABLE " + DogContract.DogEntry.TABLE_NAME + " ( " + //identification DogContract.DogEntry._ID + " INTEGER PRI

我有一个表,在其中插入数据没有问题。但当我尝试删除一行时,它返回0 count。它不会删除该行。我的sql语句有什么问题

表创建

final String SQL_CREATE_DOG_TABLE = "CREATE TABLE " + DogContract.DogEntry.TABLE_NAME + " ( " +
                //identification
                DogContract.DogEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                DogContract.DogEntry.COLUMN_DOG_ID + " INTEGER NOT NULL, " +
                DogContract.DogEntry.COLUMN_DOG_TYPE + " TEXT NOT NULL, " +
                DogContract.DogEntry.COLUMN_OWNER_ID + " INTEGER, " +
                //position
                DogContract.DogEntry.COLUMN_BIRTH_TIME + " BIGINT NOT NULL, " +
                DogContract.DogEntry.COLUMN_DEATH_TIME + " BIGINT NOT NULL, " +
                //contact info
                DogContract.DogEntry.COLUMN_CONTACT_FIRSTNAME + " TEXT, " +
                DogContract.DogEntry.COLUMN_CONTACT_LASTNAME + " TEXT, " +
                DogContract.DogEntry.COLUMN_CONTACT_PHONE + " TEXT, " +
                //Dog data
                DogContract.DogEntry.COLUMN_FOODS + " TEXT, " +
                DogContract.DogEntry.COLUMN_TOYS + " TEXT, " +
                //address
                DogContract.DogEntry.COLUMN_ADDRESS_1 + " TEXT, " +
                DogContract.DogEntry.COLUMN_ADDRESS_2 + " TEXT, " +
                DogContract.DogEntry.COLUMN_CITY + " TEXT, " +
                DogContract.DogEntry.COLUMN_STATE + " TEXT, " +
                DogContract.DogEntry.COLUMN_ZIP_CODE + " TEXT" +
                ");";

        sqliteDatabase.execSQL(SQL_CREATE_DOG_TABLE);
删除查询

private int deleteByDogTypeAndId(Uri uri) {
    if (null == mOpenHelper) {
        mOpenHelper = new DogDBHelper(getContext());
    }
    final String TABLE_NAME = DogContract.DogEntry.TABLE_NAME;
    final String[] selectionArgs = DogContract.DogEntry.getDogTypeAndDogIdFromUri(uri);
    final String selection = DogContract.DogEntry.COLUMN_DOG_TYPE + " = ? AND " +
             DogContract.DogEntry.COLUMN_DOG_ID + " = ? ";
    final SQLiteDatabase db = mOpenHelper.getWritableDatabase();
    int count = db.delete(TABLE_NAME, selection, selectionArgs);
    if (0 < count) {
        getContext().getContentResolver().notifyChange(DogContract.DogEntry.CONTENT_URI, null);
    }
    return count;
}
private int deleteByDogTypeAndId(Uri){
if(null==mopenhelp){
mopenhelp=newdogdbhelper(getContext());
}
最终字符串TABLE_NAME=DogContract.DogEntry.TABLE_NAME;
最后一个字符串[]SelectionAgs=DogContract.DogEntry.getDogTypeAndDogIdFromUri(uri);
最终字符串选择=DogContract.DogEntry.COLUMN_DOG_TYPE+“=?和”+
DogContract.DogEntry.COLUMN_DOG_ID+“=?”;
final SQLiteDatabase db=mOpenHelper.getWritableDatabase();
int count=db.delete(表名称、选择、选择);
如果(0<计数){
getContext().getContentResolver().notifyChange(DogContract.DogEntry.CONTENT_URI,null);
}
返回计数;
}

一些注释。虽然我没有在这里显示日志记录,但实际上我正在记录这些步骤。dogType是字符串,dogId是长字符串。请注意,dogId与dbId不同。dogId是在服务器上设置的,而dbId是一个本地数据库结构。

注意:虽然dogId的类型很长,但实际上大小为5位,如
12345
45678
中所示。注意:虽然dogId的类型很长,但实际上大小为5位,如
12345
45678
中所示。