Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.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

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 SQlite删除具有特定字符串值的所有行_Android_Sqlite_Delete Row - Fatal编程技术网

Android SQlite删除具有特定字符串值的所有行

Android SQlite删除具有特定字符串值的所有行,android,sqlite,delete-row,Android,Sqlite,Delete Row,这段代码只删除我表中的一条记录,我想实现的是,删除所有具有给定字符串phone值的记录。我是SQlite的新手,非常感谢您的帮助。先谢谢你 此代码成功删除单个记录: public void delSmsData(int id){ String deleteQuery = "DELETE FROM "+TABLE_LO_SMSDATA+" WHERE _id="+id+""; SQLiteDatabase db = this.getWritableDatabase(); d

这段代码只删除我表中的一条记录,我想实现的是,删除所有具有给定字符串phone值的记录。我是SQlite的新手,非常感谢您的帮助。先谢谢你

此代码成功删除单个记录:

public void delSmsData(int id){
    String deleteQuery = "DELETE FROM "+TABLE_LO_SMSDATA+" WHERE _id="+id+"";
    SQLiteDatabase db = this.getWritableDatabase();
    db.execSQL(deleteQuery); //delete single row by ID in a table
    db.execSQL("vacuum");
    db.close();
    Log.e("Debug", "Successful delete of message with id no. " + id);
}
我成功地删除了带有此代码的所有记录。感谢那些帮助过我的人

public void delAllSmsByPhone(String phone){
    String deleteQuery = "DELETE FROM "+TABLE_LO_SMSDATA+" WHERE _phone='"+phone+"'";
    SQLiteDatabase db = this.getWritableDatabase();
    db.execSQL(deleteQuery); 
    db.execSQL("vacuum");
    db.close();
}
这是我的表格结构:

String CREATE_LO_SMSDATA_TABLE = "CREATE TABLE "
            +TABLE_LO_SMSDATA+"("
            +KEY_ID+" INTEGER PRIMARY KEY AUTOINCREMENT,"
            +KEY_EMAIL+" TEXT,"
            +KEY_TARGETNAME+" TEXT,"
            +KEY_SMSTYPE+" TEXT,"
            +KEY_PHONE+" TEXT,"
            +KEY_CONTACTNAME+" TEXT,"
            +KEY_SMSBODY+" TEXT,"
            +KEY_DATE+" TEXT"+")";
    db.execSQL(CREATE_LO_SMSDATA_TABLE);

我不完全理解你。你试过运行代码吗

此代码不是正确的方法

这是绝对正确的做法<代码>删除可以删除任意数量的行,而不仅仅是一行。它删除
WHERE
子句为true的所有行

证明:

sqlite> .tables sms sqlite> .schema sms CREATE TABLE `sms` ( `_id` INTEGER PRIMARY KEY AUTOINCREMENT, `_phone` TEXT ); sqlite> SELECT * FROM sms; 1|+79271234567 2|+79271234567 3|+79213983722 4|+79271234567 5|+78450738422 6|+79271234567 7|+77432739417 8|+74673627246 9|+79271234567 10|+79271234567 sqlite> DELETE FROM sms WHERE _phone='+79271234567'; sqlite> SELECT * FROM sms; 3|+79213983722 5|+78450738422 7|+77432739417 8|+74673627246 sqlite>.tables 短讯服务 sqlite>.schema sms 创建“sms”表( `_id`INTEGER主键自动递增, `_手机短信 ); sqlite>从sms中选择*; 1|+79271234567 2|+79271234567 3|+79213983722 4|+79271234567 5|+78450738422 6|+79271234567 7|+77432739417 8|+74673627246 9|+79271234567 10|+79271234567 sqlite>从sms中删除,其中_phone='+79271234567'; sqlite>从sms中选择*; 3|+79213983722 5|+78450738422 7|+77432739417 8|+74673627246
你的桌子结构是什么?
\u phone
是主键吗?@AdamForbis我更新了问题。
。。。其中_phone='“+phone+”'“
您可以添加需要删除但实际上只有一条被删除的数据吗?如果一条记录具有相同的列数据,为什么要删除一条记录而不删除其他记录。可能它们的结尾有空格字符?首先进行
选择
查询,看看它是否返回所有这些记录。如果是,
delete
应该可以。是的,我忘了,对不起,我的手机是加密的。谢谢你。。。其中_phone='“+phone+'”。这个。