2010-08-21 3 views
0

_id 오류가 발생했습니다. 예 저널 테이블에 "_id"컬럼이 있습니다.해당 열 없음 : _id SQLite 오류입니다. Android

는이 코드에 오류 받고 있어요 :

 
mDb.execSQL("UPDATE "+DATABASE_PLANTS_TABLE+" SET "+ KEY_PLANT_DAYS+ 
      " = (SELECT COUNT(*) FROM "+DATABASE_PLANTS_TABLE+" WHERE " 
       +DATABASE_JOURNAL_TABLE+"."+KEY_JROWID+" = "+DATABASE_PLANTS_TABLE +"." 
         +KEY_PLANT_HOMEID+")"); 

다음 코드는합니까 작업 :

 
mDb.execSQL("UPDATE "+DATABASE_JOURNAL_TABLE+" SET "+KEY_JOURNAL_PLANTS+ 
        " = (SELECT COUNT(*) FROM "+DATABASE_PLANTS_TABLE+" WHERE " 
        +DATABASE_JOURNAL_TABLE+"."+KEY_JROWID+" = "+DATABASE_PLANTS_TABLE +"." 
        +KEY_PLANT_HOMEID+")"); 

로그 캣 :

 
08-21 00:07:46.614: ERROR/Database(12943): Failure 1 (no such column: journals._id) on 0x421470 when preparing 'UPDATE plants SET days = (SELECT COUNT(*) FROM plants WHERE journals._id = plants.homeid)'. 
08-21 00:07:46.614: DEBUG/AndroidRuntime(12943): Shutting down VM 
08-21 00:07:46.614: WARN/dalvikvm(12943): threadid=3: thread exiting with uncaught exception (group=0x4001b390) 
08-21 00:07:46.614: ERROR/AndroidRuntime(12943): Uncaught handler: thread main exiting due to uncaught exception 
08-21 00:07:46.624: ERROR/AndroidRuntime(12943): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.growjournal.beta/com.grower.beta.plantsList}: android.database.sqlite.SQLiteException: no such column: journals._id: UPDATE plants SET days = (SELECT COUNT(*) FROM plants WHERE journals._id = plants.homeid) 
08-21 00:07:46.624: ERROR/AndroidRuntime(12943):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2596) 
08-21 00:07:46.624: ERROR/AndroidRuntime(12943):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2621) 
08-21 00:07:46.624: ERROR/AndroidRuntime(12943):  at android.app.ActivityThread.access$2200(ActivityThread.java:126) 
08-21 00:07:46.624: ERROR/AndroidRuntime(12943):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1932) 
08-21 00:07:46.624: ERROR/AndroidRuntime(12943):  at android.os.Handler.dispatchMessage(Handler.java:99) 
08-21 00:07:46.624: ERROR/AndroidRuntime(12943):  at android.os.Looper.loop(Looper.java:123) 
08-21 00:07:46.624: ERROR/AndroidRuntime(12943):  at android.app.ActivityThread.main(ActivityThread.java:4595) 
08-21 00:07:46.624: ERROR/AndroidRuntime(12943):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-21 00:07:46.624: ERROR/AndroidRuntime(12943):  at java.lang.reflect.Method.invoke(Method.java:521) 
08-21 00:07:46.624: ERROR/AndroidRuntime(12943):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
08-21 00:07:46.624: ERROR/AndroidRuntime(12943):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
08-21 00:07:46.624: ERROR/AndroidRuntime(12943):  at dalvik.system.NativeStart.main(Native Method) 
08-21 00:07:46.624: ERROR/AndroidRuntime(12943): Caused by: android.database.sqlite.SQLiteException: no such column: journals._id: UPDATE plants SET days = (SELECT COUNT(*) FROM plants WHERE journals._id = plants.homeid) 
08-21 00:07:46.624: ERROR/AndroidRuntime(12943):  at android.database.sqlite.SQLiteDatabase.native_execSQL(Native Method) 

답변

2

당신은 저널을 확인하지 않는 표! "FROM"은 당신이 찾고있는 테이블을 결정합니다. 아마도 내부 조인을 원할 것입니다.

+0

무슨 뜻인지 확실하지 않습니다. 작동하는 코드에서 나는 두 개의 개별 테이블을 참조합니다. – Brian

+0

아니요, 그렇지 않습니다. 내가 말했듯이 FROM은 어떤 테이블에 액세스 할 지 결정합니다. 당신은 "FROM plants"라고 말했기 때문에 테이블 "plants"의 데이터에만 액세스 할 수 있습니다. "저널"의 모든 내용은 귀하에게 완전히 접근 할 수 없습니다. JOIN 문을 사용하거나 FROM 부분에 두 개의 테이블이 있어야합니다. – EboMike

+0

이것은 올바른 anwser인데도 왜 내가 WHERE 구문의 plants 테이블과 비교할 수 있는지 설명 할 수 있습니까? – Brian

관련 문제