Android:使用IN运算符更新Sqlite DB

问题描述 投票:0回答:1

我想知道如何在table条款中用IN更新WHERE。我可以使用=运算符更新它,但不知道我应该如何使用IN

我试图在google和SO上搜索一下,但他们似乎只处理=

任何人都可以指导我一些链接或发布答案如何做到这一点。

这是我尝试的方式。

 database.update("State_Regions",
            cvs, "Country_ID IN ( ? )  AND State_ID IN ( ? ) AND Region_ID IN ( ? )", 
            new String[]{countryIDStr, stateIDStr, regionsIDStr});

参数是逗号分隔的整数列表,如1,2,3 ......

谢谢

android sqlite
1个回答
0
投票

所以你需要一个?的多个值,对吧?我不认为这是可能的。

每个? parameter最终将与[sqlite3_bind_XYZ](https://sqlite.org/c3ref/bind_blob.html)绑定,并且没有用于将多个值(如数组)绑定到一个参数的函数。

有两种方法可以解决它:

  1. 对每个所需的args组合运行一次更新。这将使您拥有的更多不同参数组合变得更加昂贵,但您可以通过将其全部包装在事务中来减轻一些开销。
  2. 生成具有适当数量问号的SQL字符串。如果使用不同数量的参数进行频繁更新,则可能会通过强制重复编译查询来影响性能,因为当参数数量不同时,Android的编译语句高速缓存将找不到匹配项。

有关Python中的相同案例,另请参阅this question

© www.soinside.com 2019 - 2024. All rights reserved.