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

SQLite 쿼리문 오류입니다..

0 추천

SQLiteDatabase db = getReadableDatabase();
String[] columns = new String[] { "storeInfo.storeNum", "storeInfo.nation","storeInfo.caegory","storeLocale.storeName", "storeLocale.sale" };

Cursor c = db.rawQuery("select storeInfo.storeNum storeInfo.nation , storeInfo.category , storeLocale.storeName , storeLocale.sale"
						+" from storeInfo, storeLocale "
						+" where storeInfo.storeNum = storeLocale.storeNum "
						+" AND storeInfo.nation = 0"
						+" AND storeInfo.category = 0"
						+" AND storeLocale.language = 0", null);

에러로그 

03-20 11:50:31.876: E/AndroidRuntime(16404): FATAL EXCEPTION: main
03-20 11:50:31.876: E/AndroidRuntime(16404): Process: freevergroup.freevercard, PID: 16404
03-20 11:50:31.876: E/AndroidRuntime(16404): java.lang.RuntimeException: Unable to start activity ComponentInfo{freevergroup.freevercard/freevergroup.freevercard.activities.Category_list}: android.database.sqlite.SQLiteException: near ".": syntax error (code 1): , while compiling: select storeInfo.storeNum storeInfo.nation , storeInfo.category , storeLocale.storeName , storeLocale.sale from storeInfo, storeLocale  where storeInfo.storeNum = storeLocale.storeNum  AND storeInfo.nation = '0' AND storeInfo.category = '0' AND storeLocale.language = '0'
03-20 11:50:31.876: E/AndroidRuntime(16404): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2436)
03-20 11:50:31.876: E/AndroidRuntime(16404): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2495)
03-20 11:50:31.876: E/AndroidRuntime(16404): at android.app.ActivityThread.access$900(ActivityThread.java:170)
03-20 11:50:31.876: E/AndroidRuntime(16404): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1304)
03-20 11:50:31.876: E/AndroidRuntime(16404): at android.os.Handler.dispatchMessage(Handler.java:102)
03-20 11:50:31.876: E/AndroidRuntime(16404): at android.os.Looper.loop(Looper.java:146)
03-20 11:50:31.876: E/AndroidRuntime(16404): at android.app.ActivityThread.main(ActivityThread.java:5635)
03-20 11:50:31.876: E/AndroidRuntime(16404): at java.lang.reflect.Method.invokeNative(Native Method)
03-20 11:50:31.876: E/AndroidRuntime(16404): at java.lang.reflect.Method.invoke(Method.java:515)
03-20 11:50:31.876: E/AndroidRuntime(16404): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
03-20 11:50:31.876: E/AndroidRuntime(16404): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
03-20 11:50:31.876: E/AndroidRuntime(16404): at dalvik.system.NativeStart.main(Native Method)
03-20 11:50:31.876: E/AndroidRuntime(16404): Caused by: android.database.sqlite.SQLiteException: near ".": syntax error (code 1): , while compiling: select storeInfo.storeNum storeInfo.nation , storeInfo.category , storeLocale.storeName , storeLocale.sale from storeInfo, storeLocale  where storeInfo.storeNum = storeLocale.storeNum  AND storeInfo.nation = '0' AND storeInfo.category = '0' AND storeLocale.language = '0'
03-20 11:50:31.876: E/AndroidRuntime(16404): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
03-20 11:50:31.876: E/AndroidRuntime(16404): at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1113)
03-20 11:50:31.876: E/AndroidRuntime(16404): at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:690)
03-20 11:50:31.876: E/AndroidRuntime(16404): at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
03-20 11:50:31.876: E/AndroidRuntime(16404): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:59)
03-20 11:50:31.876: E/AndroidRuntime(16404): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
03-20 11:50:31.876: E/AndroidRuntime(16404): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
03-20 11:50:31.876: E/AndroidRuntime(16404): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1438)
03-20 11:50:31.876: E/AndroidRuntime(16404): at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1377)
03-20 11:50:31.876: E/AndroidRuntime(16404): at freevergroup.freevercard.data.DataBaseManager.getStoreInfo(DataBaseManager.java:69)
03-20 11:50:31.876: E/AndroidRuntime(16404): at freevergroup.freevercard.activities.Category_list.onCreate(Category_list.java:66)
03-20 11:50:31.876: E/AndroidRuntime(16404): at android.app.Activity.performCreate(Activity.java:5580)
03-20 11:50:31.876: E/AndroidRuntime(16404): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
03-20 11:50:31.876: E/AndroidRuntime(16404): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2400)
 
 
2개의 테이블에서 검색하는방법인데 .에서 오류가났다고 나오네요 ...  sqlite에서 2개의테이블검색하는 방법이 뭘까요 ㅠㅜ
kkong_93 (680 포인트) 님이 2015년 3월 20일 질문

1개의 답변

+1 추천
Cursor c = db.rawQuery("select storeInfo.storeNum storeInfo.nation , storeInfo.category , storeLocale.storeName , storeLocale.sale"
                        +" from storeInfo, storeLocale "
                        +" where storeInfo.storeNum = storeLocale.storeNum "
                        +" AND storeInfo.nation = 0"
                        +" AND storeInfo.category = 0"
                        +" AND storeLocale.language = 0", null);

 

쿼리 select 부분을 보시면 storeInfo.storeNum와 storeInfo.nation 사이에 콤마(,)가 빠졌습니다.
원조안드로이드 (58,190 포인트) 님이 2015년 3월 20일 답변
이것이 정답!!!!!!!!!!!!!!!!
,를 넣었더니..
03-20 03:17:00.807: E/AndroidRuntime(10218): java.lang.RuntimeException: Unable to start activity ComponentInfo{freevergroup.freevercard/freevergroup.freevercard.activities.Category_list}: java.lang.IllegalStateException: Couldn't read row 0, col 5 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.
03-20 03:17:00.807: E/AndroidRuntime(10218):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
03-20 03:17:00.807: E/AndroidRuntime(10218):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
03-20 03:17:00.807: E/AndroidRuntime(10218):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
03-20 03:17:00.807: E/AndroidRuntime(10218):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
03-20 03:17:00.807: E/AndroidRuntime(10218):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-20 03:17:00.807: E/AndroidRuntime(10218):     at android.os.Looper.loop(Looper.java:137)
03-20 03:17:00.807: E/AndroidRuntime(10218):     at android.app.ActivityThread.main(ActivityThread.java:5041)
03-20 03:17:00.807: E/AndroidRuntime(10218):     at java.lang.reflect.Method.invokeNative(Native Method)
03-20 03:17:00.807: E/AndroidRuntime(10218):     at java.lang.reflect.Method.invoke(Method.java:511)
03-20 03:17:00.807: E/AndroidRuntime(10218):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-20 03:17:00.807: E/AndroidRuntime(10218):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-20 03:17:00.807: E/AndroidRuntime(10218):     at dalvik.system.NativeStart.main(Native Method)
03-20 03:17:00.807: E/AndroidRuntime(10218): Caused by: java.lang.IllegalStateException: Couldn't read row 0, col 5 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.
03-20 03:17:00.807: E/AndroidRuntime(10218):     at android.database.CursorWindow.nativeGetString(Native Method)
03-20 03:17:00.807: E/AndroidRuntime(10218):     at android.database.CursorWindow.getString(CursorWindow.java:434)
03-20 03:17:00.807: E/AndroidRuntime(10218):     at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
03-20 03:17:00.807: E/AndroidRuntime(10218):     at freevergroup.freevercard.data.DataBaseManager.getStoreInfo(DataBaseManager.java:92)
03-20 03:17:00.807: E/AndroidRuntime(10218):     at freevergroup.freevercard.activities.Category_list.onCreate(Category_list.java:66)
03-20 03:17:00.807: E/AndroidRuntime(10218):     at android.app.Activity.performCreate(Activity.java:5104)
03-20 03:17:00.807: E/AndroidRuntime(10218):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
03-20 03:17:00.807: E/AndroidRuntime(10218):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
커서에서 데이터를 받을 때 컬럼 인덱스의 오류인 것 같습니다만..
0~4까지 컬럼이 생성될텐데 5를 입력한 것 같습니다.
...