2011-05-29 79 views
0

我每次運行我的應用程序時都會收到此異常。不知道是什麼原因造成的。下面是這方面的一些背景資料:得到這個異常:「android.database.sqlite.SQLiteException:沒有這樣的列:_id:,同時編譯」當我有一個_id列

  • 我有這個在我的全局屬性:

    public static final String KEY_ID = "_id"; 
    
  • 並且在這之後我有一個字符串變量設置我的數據庫列:

    private static final String DATABASE_CREATE = 
          "create table sdCards (_id integer primary key autoincrement, " 
          + "arg0 text not null, " 
          + "arg1 integer not null, " 
            + "arg2 integer not null, " 
            + "arg3 integer not null, " 
            + "arg4 integer not null, " 
            + "arg5 integer not null);"; 
    
  • 最後,我創建這樣的數據庫:

    public void onCreate(SQLiteDatabase db) { 
        db.execSQL(DATABASE_CREATE); 
    } 
    

不完全確定發生了什麼事。我清楚地有一個_id列!任何幫助將不勝感激!

編輯:這是我的logcat

E/AndroidRuntime(24036): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mydomain.packagename/com.mydomain.packagename.MainClass}: android.database.sqlite.SQLiteException: no such column: _id: , while compiling: SELECT _id, arg0, arg1, arg2, arg3, arg4, arg5 FROM table_name 
E/AndroidRuntime(24036): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1741) 
E/AndroidRuntime(24036): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1757) 
E/AndroidRuntime(24036): at android.app.ActivityThread.access$1500(ActivityThread.java:123) 
E/AndroidRuntime(24036): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:998) 
E/AndroidRuntime(24036): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(24036): at android.os.Looper.loop(Looper.java:126) 
E/AndroidRuntime(24036): at android.app.ActivityThread.main(ActivityThread.java:4002) 
E/AndroidRuntime(24036): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(24036): at java.lang.reflect.Method.invoke(Method.java:491) 
E/AndroidRuntime(24036): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844) 
E/AndroidRuntime(24036): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) 
E/AndroidRuntime(24036): at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime(24036): Caused by: android.database.sqlite.SQLiteException: no such column: _id: , while compiling: SELECT _id, sdName, writes, modifications, moved, deletes FROM sdCards 
E/AndroidRuntime(24036): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method) 
E/AndroidRuntime(24036): at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64) 
E/AndroidRuntime(24036): at android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:147) 
E/AndroidRuntime(24036): at android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:368) 
E/AndroidRuntime(24036): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:131) 
E/AndroidRuntime(24036): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:95) 
E/AndroidRuntime(24036): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:46) 
E/AndroidRuntime(24036): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47) 
E/AndroidRuntime(24036): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1534) 
E/AndroidRuntime(24036): at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1414) 
E/AndroidRuntime(24036): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1370) 
E/AndroidRuntime(24036): at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1450) 
E/AndroidRuntime(24036): at com.mydomain.packagename.DbAdapter.fetchAllSd(DbAdapter.java:131) 
E/AndroidRuntime(24036): at com.mydomain.packagename.MainClass.fillData(SDBenchmark.java:70) 
E/AndroidRuntime(24036): at com.mydomain.packagename.MainClass.onCreate(SDBenchmark.java:28) 
E/AndroidRuntime(24036): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048) 
E/AndroidRuntime(24036): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1705) 
E/AndroidRuntime(24036): ... 11 more 
+0

請顯示您獲取此例外的代碼並粘貼LogCat-Output。 – 2011-05-29 20:56:21

+0

扔在logcat中 – anujahooja 2011-05-29 21:21:28

+0

我們需要看到fetchAllSd()的代碼和可能的fillData() – Squonk 2011-05-29 21:34:42

回答

3

嘗試刪除數據庫(可能是通過卸載你的應用程序),然後嘗試運行的應用程序。這將重新創建您的數據庫。一種可能是您已經創建了表,並且某處選擇失敗,因爲_id列從未創建過。

相關問題