2013-05-21 3 views
0

sqlite where 절에서 여러 값을 확인해야하는 요구 사항이 있습니다. 쿼리는 이렇게됩니다. 여기여러 값에 대한 Sqlite 확인 - Android

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에이고, 나는 그렇게 할 수있는 방법을, 다음, 날짜가 ArrayList에 값 중 하나인지 확인 해당 행을 반환해야합니까? 나는 하나의 값을 확인 curr.get (0) 말할 수 있어요. 하지만 여러 값을 확인하는 방법을 잘 모르는 경우 도움주세요.

+0

[sql injection] (http://en.wikipedia.org/wiki/SQL_injection) 문제를 해결하십시오. –

답변

0

IN 키워드를 사용하십시오. SQLite는 배열로 통과

"_jobedtimatedate IN (\"value1\", \"value2\", \"value3\")" 
0

Here is the basic idea :

// 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 개가 아니라는 것을 적어도 확인해야합니다.

관련 문제