2012-01-05 3 views
0

John's day과 같이 따옴표가있는 구를 쿼리하려고 할 때마다 오류가 발생합니다. 어떻게 처리할까요? 표시 모든 사람을위한작은 따옴표가있는 항목을 쿼리하면 처리됩니다.

사용이 개 따옴표 :

Cursor c = db.query(EVENTS_TABLE, new String[] {ID,EVENT,DATE,REAL_START_TIME,REAL_END_TIME} 
    ,EVENT + "='" +name+"'",null,null,null,null); 

이름 http://orafaq.com/faq/에서 로그 캣

01-05 12:25:17.551: E/AndroidRuntime(17085): android.database.sqlite.SQLiteException: near "s": syntax error: , while compiling: SELECT _id, event, date, rstime, retime FROM Events_Table WHERE event='Martin Luther King, Jr's Day' 
01-05 12:25:17.551: E/AndroidRuntime(17085): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:143) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:361) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:127) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:94) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:53) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1564) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1449) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1405) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1485) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at com.app.notifyme.CalendarDB.getId(CalendarDB.java:243) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at com.app.notifyme.Calendar.getRow(Calendar.java:378) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at com.app.notifyme.Calendar$3.onItemLongClick(Calendar.java:85) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at android.widget.AbsListView.performLongPress(AbsListView.java:2580) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at android.widget.AbsListView$CheckForLongPress.run(AbsListView.java:2530) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at android.os.Handler.handleCallback(Handler.java:605) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at android.os.Handler.dispatchMessage(Handler.java:92) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at android.os.Looper.loop(Looper.java:137) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at android.app.ActivityThread.main(ActivityThread.java:4340) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at java.lang.reflect.Method.invokeNative(Native Method) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at java.lang.reflect.Method.invoke(Method.java:511) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
01-05 12:25:17.551: E/AndroidRuntime(17085): at dalvik.system.NativeStart.main(Native Method) 
+0

롤 질문 http://stackoverflow.com/questions/8719499/syntax-error-when-querying-contacts- database-for-an-email 내 대답 :) – Selvin

+0

haha ​​nice, thanks – tyczj

답변

1

John's day

것이 내 쿼리입니다. 예 :

SELECT 'Frank''s Oracle site' AS text FROM DUAL; 

텍스트 :

또한 프랭크의 오라클 사이트 : Android quotes within an sql query string

+0

그래서 기본적으로 문자열을 복사해야하고, 따옴표가 어떤 위치에 있는지 찾아 다른 문자열을 다른 문자열에 복사하면서 다른 따옴표를 추가해야합니까? – tyczj

+0

잘 원하는 솔루션에 따라, ''가 작동하면 문자열의 문자를 바꿀 수 있습니다. – Pyrodante

관련 문제