2014-04-08 5 views
1

안녕하세요이이 같은 쿼리 :안드로이드 오류 쿼리 SQLite는

String sql ="SELECT _id, field10, field11, SUM(field2) FROM Table WHERE field2>0 AND data LIKE '"+anno+"-%'"; 

데이터베이스에, 내가 구문 오류가 다음과 같이 얻을이 (PUBBLICITA ')와 같은 문자열이 저장되어있는 경우 :

Caused by: android.database.sqlite.SQLiteException: near "2014": syntax error (code 1): , while compiling: 
SELECT _id, field10, field11, SUM(field2) FROM Table WHERE field2>0 AND field10 LIKE 'PUBBLICITA'' AND data LIKE '2014-%' 

문제는 정점에 있으며 어떻게 해결할 수 있습니까?

업데이트 불행히도 모든 대답이 잘못되었습니다. 정점에 해당하는 문자열 인 경우 오류가 생성됩니다. 이미지보기 enter image description here

+0

이 변수'anno' 정수 :

그러나, 당신은 parameter로 문자열을 전달하여 수동으로이 일을 피할 수있다? – GrIsHu

+0

이 오류를 일으키는 쿼리가 아니며 모든 대답이 잘못된 문제를 해결하려고합니다. – laalto

+0

내 새로운 대답을 참조하십시오. 감사. 변수'anno'는 정수입니다. – user2847219

답변

1

"-%" 교체, 따옴표를 두 배로하여 이스케이프해야합니다 .

cursor = db.rawQuery("SELECT ... data LIKE ? || '-%'", 
        new String[] { anno }); 
0

sql에서 문자열을 사용하기 전에 인용 문자를 이스케이프 처리해야합니다.

public static String escapeSQLQuotes(final String in) { 
    return in.replaceAll("'", "''"); 
} 

사용 :

String sql ="SELECT _id, field10, field11, SUM(field2) FROM Table WHERE field2>0 AND data LIKE '"+escapeSQLQuotes(anno)+"-%'"; 
-1

것을보십시오 :

String sql ="SELECT _id, field10, field11, SUM(field2) FROM Table WHERE field2>0 AND data LIKE '"+anno+"%'"; 

"-%'" replace "%'" 
-1

SQL 문자열 리터럴에서 "%"

String sql ="SELECT _id, field10, field11, SUM(field2) FROM Table WHERE field2>0 AND data* LIKE '"+anno+"%'";