作为我的标题问题,我想删除SQLite上包含特定字符串的表的某些行。 这是我尝试过的方法,但是没有任何行被删除。我通过检查SQLite数据库表并将其放入从https://sqlitebrowser.org/下载的SQLite数据库浏览器中
public void delete1(String table,String COLUMN,String link) {
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL("DELETE FROM "+table+" WHERE "+COLUMN+" LIKE "+link+"%");
}
public void delete2(String table,String name){
SQLiteDatabase db = this.getWritableDatabase();
db.delete(table, "PRODUCTNAME" + "LIKE ?", new String[]{name+"%"}) ;
}
您能告诉我怎么做或我如何更正代码吗?
答案 0 :(得分:0)
使用db.delete(table, "PRODUCTNAME " + "LIKE ?", new String[]{name+"%"}) ;
只会删除以name中的值开头的行。
您想要的Perhpas:-
db.delete(table, "PRODUCTNAME " + "LIKE ?", new String[]{"%"+name+"%"}) ;
然后它将删除包含该值的行,而不是以该值开头的行。
使用db.execSQL("DELETE FROM "+table+" WHERE "+COLUMN+" LIKE "+link+"%");
,您需要将字符串括在单引号中,并假设要删除包含该值的行,然后使用:-
db.execSQL("DELETE FROM "+table+" WHERE "+COLUMN+" LIKE '%"+link+"%'");
如果使用以下命令,这将编写圆顶调试信息,这可能有助于调试:-
public void delete2(String table,String name){
SQLiteDatabase db = this.getWritableDatabase();
Log.d("DELETEINFO","Attempting to delete rows with \n\t->" + name);
int deletedCount = db.delete(table, "PRODUCTNAME " + "LIKE ?", new String[]{"%"+name+"%"}) >0) ;
Log.d("DELETEINFO","Deleted " + deletedCount + " rows.");
}