0

我有一个要求,我需要检查 sqlite where 子句中的多个值。查询是这样的。

String sql = "SELECT * FROM _jobcard_table as t1 " + 
    " left join _customer_table as t2 on (t1._custid=t2._custid) " + 
    " left join _make_table as t3 on (t1._job_make=t3._makeid) " + 
    " left join _model_table as t4 on (t1._jobmodel=t4._modid) " + 
    " where _addedby='" + Globals.mid + 
        "' AND _jobestimatedate='"+curr+"' " + 
    " group by _jobregno order by _custname";

这里 curr 是一个值的数组列表,我需要检查日期是否是 ArrayList 中的值之一,然后返回该行,我该怎么做?我可以检查一个值,比如 curr.get(0)。但不知道如何检查多个值,请帮忙!

4

2 回答 2

0

这是将数组传递给 sqlite的基本思想:

// Pseudocode
list = "";
separator = "";
for (i=0; i < array.length; i++) {
    list += '?';
    statement.parameters[i] = array[i]; 

    if (i != array.length-1) {
          list += ',';
    }
}
statement.text = "SELECT blah blah blah WHERE media.id IN (" + list + ")";

上面的代码使用占位符来避免 SQL 注入。创建的 SQL 类似于SELECT col from table WHERE col IN (?,?,...,?)使用SQLiteStatement.bind设置的实际值。

大数组仍然存在一个问题:代码至少应该检查数组中的元素数量是否很大,比如 100 个元素。

于 2013-05-21T06:54:46.613 回答
0

使用 IN 关键字。

"_jobedtimatedate IN (\"value1\", \"value2\", \"value3\")"   
于 2013-05-21T06:48:57.910 回答