내 애플리케이션은 현재 SQLite 데이터베이스를 사용하여 사용자에게 메시지를 저장합니다. 그러나 사용자가 필드 중 하나에 아포스트로피를 입력하면 데이터베이스가 충돌합니다. 이 문제는 SQLite가 따옴표 구분 기호로 아포스트로피를 사용하기 때문에 발생합니다. (메시지 텍스트 주위에 단일 아포스트로피를 저장합니다.)하지만이 문제를 해결할 수있는 좋은 방법은 없습니다. SQLite 데이터베이스에 어포 스트로피로 문자열을 저장하는 일반적인 방법이 있습니까?사용자가 입력 한 아포스트로피가 안드로이드 앱과 충돌합니다 (SQL 관련)
여기에 내가받은 오류의 예 :
java.lang.RuntimeException: Unable to resume activity {x.x.x.x/x.x.x.x.Main}: android.database.sqlite.SQLiteException: near "m": syntax error: , while compiling: SELECT title, contact_name, contact_number FROM contacts WHERE title='I'm at work'
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3128)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3143)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2684)
at android.app.ActivityThread.access$2300(ActivityThread.java:125)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:859)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:617)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.database.sqlite.SQLiteException: near "m": syntax error: , while compiling: SELECT title, contact_name, contact_number FROM contacts WHERE title='I'm at work'
at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91)
at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:80)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:46)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1454)
at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1338)
at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1293)
at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1373)
... 19 more
링크를 제공해 주셔서 감사합니다. 나는 비슷한 질문을 어디에서나 찾았지만 "작은 따옴표"대신 "아포스트로피"를 찾고있었습니다. –
굉장 :) 문제 없습니다 -이 upvote는 내> 2000 대표 마크입니다. 우 ~. – Jack
DatabaseUtils.sqlEscapeString이 나를위한 가장 쉬운 솔루션이었습니다. FTW –