마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

데이터베이스에 ' 이 문자가 저장이 안됩니다.

0 추천
12-23 12:59:43.964: D/AndroidRuntime(1109): Shutting down VM
12-23 12:59:43.964: W/dalvikvm(1109): threadid=1: thread exiting with uncaught exception (group=0xa61b7908)
12-23 12:59:43.964: E/AndroidRuntime(1109): FATAL EXCEPTION: main
12-23 12:59:43.964: E/AndroidRuntime(1109): android.database.sqlite.SQLiteException: unrecognized token: "''')" (code 1): , while compiling: insert into memo_table(day, time, memo) values('2014-12-23', '12시 59분', ''')
12-23 12:59:43.964: E/AndroidRuntime(1109):  at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
12-23 12:59:43.964: E/AndroidRuntime(1109):  at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882)
12-23 12:59:43.964: E/AndroidRuntime(1109):  at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493)
12-23 12:59:43.964: E/AndroidRuntime(1109):  at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
12-23 12:59:43.964: E/AndroidRuntime(1109):  at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
12-23 12:59:43.964: E/AndroidRuntime(1109):  at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
12-23 12:59:43.964: E/AndroidRuntime(1109):  at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1663)
12-23 12:59:43.964: E/AndroidRuntime(1109):  at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1594)
12-23 12:59:43.964: E/AndroidRuntime(1109):  at example.star_memo_remodel.DatabaseHelper.Insert(DatabaseHelper.java:48)
12-23 12:59:43.964: E/AndroidRuntime(1109):  at example.star_memo_remodel.ReMainActivity$1.onClick(ReMainActivity.java:53)
12-23 12:59:43.964: E/AndroidRuntime(1109):  at android.view.View.performClick(View.java:4204)
12-23 12:59:43.964: E/AndroidRuntime(1109):  at android.view.View$PerformClick.run(View.java:17355)
12-23 12:59:43.964: E/AndroidRuntime(1109):  at android.os.Handler.handleCallback(Handler.java:725)
12-23 12:59:43.964: E/AndroidRuntime(1109):  at android.os.Handler.dispatchMessage(Handler.java:92)
12-23 12:59:43.964: E/AndroidRuntime(1109):  at android.os.Looper.loop(Looper.java:137)
12-23 12:59:43.964: E/AndroidRuntime(1109):  at android.app.ActivityThread.main(ActivityThread.java:5041)
12-23 12:59:43.964: E/AndroidRuntime(1109):  at java.lang.reflect.Method.invokeNative(Native Method)
12-23 12:59:43.964: E/AndroidRuntime(1109):  at java.lang.reflect.Method.invoke(Method.java:511)
12-23 12:59:43.964: E/AndroidRuntime(1109):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-23 12:59:43.964: E/AndroidRuntime(1109):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-23 12:59:43.964: E/AndroidRuntime(1109):  at dalvik.system.NativeStart.main(Native Method)
12-23 12:59:43.972: D/dalvikvm(1109): GC_CONCURRENT freed 135K, 2% free 16494K/16804K, paused 2ms+1ms, total 5ms

위와 같이 오류가 뜨면서 어플이 종료됩니다.

텍스트필드에 ' <- 이거 들어가면 memo_write.getText().toString() 로 가져오질 못하는건지... 오류가 발생하네요 이유가 머죠? ㅠ
Android초보개발자 (1,230 포인트) 님이 2014년 12월 23일 질문

3개의 답변

0 추천
데이터베이스 value 집어넣을때 '값' 해서 넣지않나요?

 

그럼 값중에 ' 가 들어가면 ' 가 중복되겠죠?

 

철수는 '영희야 안녕' 이라고 말했습니다.

 

라는 말을 집어넣으면

'철수는 '영희야 안냥' 이라고 말했습니다' 라고 들어갈텐데 당연히 오류가나겠죠

'와 비슷한 특수문자나 다른 특수문자를 집어넣어서 올려주고, 내려받을때 다시 ' 로 복호화 시키면됩니다.
기초개발자 (24,060 포인트) 님이 2014년 12월 24일 답변
0 추천
[ ] 로 감싸서 인서트 해도 안되나요?

json형태의 String 을 [ ] 로 감싸서 인서트 한적이 있는데...
삽질하세 (1,250 포인트) 님이 2014년 12월 24일 답변
0 추천
에러로그를 보니 폰자체의 DB를 사용하는가 본데

복잡하게 ' 와 같은 특수문자를 넣을것이 아니라

숫자만 넣고 어플 소스단에서 따로 처리해주심 되실듯...

sqlite에선 ' 이것이 명령어들을 구분해주는 소중한 넘이니까요
nicehee (73,100 포인트) 님이 2014년 12월 24일 답변
...