2014-07-26 3 views
0

첫 번째 앱을 개발 중이며 일부 도시에서는 arraylist를 채우고 있지만 그 중 하나 ("Reggio nell'Emilia")에는 이름에 아포스트로피가 있으며 선택하면 응용 프로그램에서 충돌합니다. 여기아라 스트라스트 채우기에서 아포스트로피가 발생하는 오류

SQLiteDatabase db_read = db.getReadableDatabase(); 
city = new ArrayList<Object>(); 
Cursor result; 
for (int i =0 ; i<region.size(); i++) { 
    result = db_read.rawQuery("select distinct city from merchants where region='"+region.get(i)+"' order by city ASC",null); 
    ArrayList<String> cities = new ArrayList<String>(); 
    while (result.moveToNext()) { 
     String city = result.getString(0); 
     cities.add(city); 
    } 
    city.add(cities); 
} 

로그 캣에서 오류입니다 :

07-26 14:25:4 0.11 0: I/Timeline(155 06): Timeline: Activity_launch_request id:com.example.myapp time:1 0873122 
07-26 14:25:4 0.225: E/SQLiteLog(155 06): (1) near "Emilia": syntax error 
07-26 14:25:4 0.225: D/AndroidRuntime(155 06): Shutting down VM 
07-26 14:25:4 0.225: W/dalvikvm(155 06): threadid=1: thread exiting with uncaught exception (group= 0x41f17ce 0) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): FATAL EXCEPTION: main 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): Process: com.example.myapp, PID: 155 06 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapp/com.example.myapp.ListMerchant}: android.database.sqlite.SQLiteException: near "Emilia": syntax error (code 1): , while compiling: Select _id,title,phone,comune from merchants where city='Reggio nell'Emilia' 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2217) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2266) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at android.app.ActivityThread.access$8 0 0(ActivityThread.java:145) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:12 06) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at android.os.Handler.dispatchMessage(Handler.java:1 02) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at android.os.Looper.loop(Looper.java:136) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at android.app.ActivityThread.main(ActivityThread.java:5141) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at java.lang.reflect.Method.invokeNative(Native Method) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at java.lang.reflect.Method.invoke(Method.java:515) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:611) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at dalvik.system.NativeStart.main(Native Method) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): Caused by: android.database.sqlite.SQLiteException: near "Emilia": syntax error (code 1): , while compiling: Select _id,title,phone,comune from merchants where city='Reggio nell'Emilia' 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:5 0 0) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1253) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at com.example.myapp.ListMerchant.createListFromCity(ListMerchant.java:63) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at com.example.myapp.ListMerchant.onCreate(ListMerchant.java:43) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at android.app.Activity.performCreate(Activity.java:5231) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1 087) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2171) 
07-26 14:25:4 0.24 0: E/AndroidRuntime(155 06): ... 11 more 

문제가 될 수 방법과 그것을 해결하기 위해 어떻게 여기 코드는? 나는 마침내 이중 아포스트로피 단일 아포스트로피를 대체 해결

답변

0

... 나는 코드의이 부분을 희망이 오류 로그는 문제가 무엇인지 알아 내기에 충분하다 : 그것은 응용 프로그램에 지금 작동하지만

String city = result.getString(0); 
city = city.replace("'", "''"); 
+0

전 이중 어포 스트로피로 이름을 지어주십시오 : ( 최종 해결책은 무엇입니까? – smartmouse