Cursor cursor = db.rawQuery("SELECT * FROM mytable where numberType=? and id=?", new String[] { "2","5" });
在以下代码中,参数“6”和参数“4”均用于var id。 我认为代码会导致错误,我认为新的String [] {“6”,“4”}必须匹配两个变量,对吧?
db.delete("person", "id"+"=?", new String[]{"6","4"});
我不能使用db.delete(...)来实现相同的功能,就像从test.db中删除一样,其中id为('6','4') !对吧?
How can pass two parameters to rawQuery in android?
How can I create a code if I need to delete some record using In parameter in android?
答案 0 :(得分:2)
我认为代码会导致错误,我认为新的String [] {“6”,“4”}必须 匹配两个变量,对吧?
简答:是的。这段代码不起作用。
您想绑定两个参数 - 换句话说,您想要将两个占位符 ?
替换为bindArgs 1 (在您的情况下为6和4) 。
语句中的参数数量必须与绑定到语句的参数数量相匹配 - 因此,如果查询中有三个参数(否则将抛出异常):
select * from Users where id = ? and age = ?
您必须使用相同数量的参数(项目)创建 whereArgs 字符串数组:
String[] whereArgs = {"20345", "18"};
SQLiteDatabase如何区分一个var或的参数 android中的两个vars?
上面解释。针对您的案例的正确解决方案是:
WHERE
子句它看起来像:
db.delete("person", "id = ? and pin = ?", new String[] {"6", "4"});
db.delete("person", "id = ?", new String[] {"6"});
db.delete("person", "id in(?, ?)", new String[] {"6", "4"});
1 替换与经典Java中的相同:查询中的第一个参数将替换为数组中的第一个项目等。
答案 1 :(得分:1)
使用此例如。 db.execSQL(“从表名中删除id IN(1,2)”); 祝你好运!
答案 2 :(得分:0)
您可以从同一个表中删除如下。
DELETE FROM mytable WHERE id IN (
SELECT pid FROM (
SELECT person.id AS pid FROM person) AS ptable
)
现在,您可以根据需要更改嵌套查询。
PS:我写这篇文章只是为了给你指路。