Android SQlite删除具有特定字符串值的所有行
这段代码只删除我表中的一条记录,我想实现的是,删除所有具有给定字符串phone值的记录。我是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
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+'”。这个。