2013-07-22 57 views
1

我創建了數據庫。但它給了我「沒有這樣的列錯誤」。我確信我的數據庫有這個顏色,因爲我使用SQLite Manager來添加數據。我不明白爲什麼我得到這樣的錯誤。我在這裏搜索這個問題,但答案從來沒有幫助過我。在Android SQLite中沒有這樣的列錯誤

大部分答案都表示,如果在寫入此代碼時列名之間沒有空格,則會出現此錯誤。但我想我正確寫道。

public void onCreate(SQLiteDatabase sqLiteDatabase) { 
    sqLiteDatabase.execSQL(
      "CREATE TABLE " + TABLE_NAME + " (" 
      + BNUM_COL + " TEXT, " 
      + PNAME_COL + " TEXT, " 
      + AUTHOR_COL + " TEXT, " 
      + TYPE_COL + " TEXT, " 
      + PYEAR_COL + "INTEGER);"); 
    } 

我logcat中也表現出了我:

Cursor c = db.query("btable", SELECT, null, null, null, null, null, null); 

請幫助我。

回答

13

最後一個字段在列名和關鍵字INTEGER之間沒有空格。你需要改變這一行:

+ PYEAR_COL + "INTEGER);"); 

這樣:

+ PYEAR_COL + " INTEGER);"); 
      ^
       | 
       Note the extra space! 

一個簡單的診斷工具,以幫助跟蹤這些類型的錯誤是將SQL查詢存儲在一個變量,並試圖登陸後它執行它。然後您可以檢查logcat輸出以查看實際構建的語句。

+0

我仍然不能相信我犯了這個愚蠢的錯誤。非常感謝! – Adaichi

+1

@Adaichi - 它可能感覺像一個愚蠢的錯誤,但每個程序員都做了同一個(可能很多次)。在我看來,我自己的代碼中的每一行總是完美的(除非有一個「FIXME」潛伏着),直到有人爲我回顧它說:「呃,這是對的嗎?」。 (答案總是,「[德哦!](http://en.wikipedia.org/wiki/D'oh!)」) –

+0

好的建議,存儲和輸出查詢 – Clocker