Android Sqlite IN,NOT IN语法

Bos*_*one 21 sql sqlite android

我正在尝试运行NOT INselect NOT IN列表是动态的.就像是

SELECT id, type FROM CONTACTS where type NOT IN ('connect','answer')
Run Code Online (Sandbox Code Playgroud)

在代码中,我徒劳的尝试是:

db.query(TABLE, new String[] { "id", ""}, " type NOT IN (?)", "connect,answer", 
    null, null, null); // didn't work
db.query(TABLE, new String[] { "id", ""}, " type NOT IN (?)", "'connect','answer'", 
null, null, null); // didn't work
Run Code Online (Sandbox Code Playgroud)

我对此的看法是,?替换将我的逗号列表视为单个参数.我确实找到了一个解决方案,但它相当难看,所以我不会在这里发布它,直到有人提出更优雅的东西

Ale*_*kka 21

你不能只放一个'?' 而不是值列表.因此,尝试参数化列表几乎没有什么好处.当然,人们可以创建2,4,16值准备语句,..." type NOT IN (?,?)", new String[]{ "connect","answer" },...但即使在具有远程RDBMS的服务器上,它也具有可疑价值.相反,做

db.query(TABLE, new String[] { "id", ""}, " type NOT IN ('connect','answer')", 
     null, null, null, null);
Run Code Online (Sandbox Code Playgroud) 如果列表是动态的,则必须转义字符串并将它们放入单引号列表中.