2011-04-09 54 views
11

運行形式的SQL查詢後:Android的SQLite的錯誤「要求列名和表名」

SELECT table_name.column_name FROM table_name,table_name2,etc... WHERE condition1,condition2,etc..., 

我碰到下面的錯誤,不關閉我的程序:

請求列名和表名 - TABLE_NAME.COLUMN_NAME

谷歌搜索這句話的錯誤導致我android.database.sqlite.SQLiteCursor line 314

314行的上面有一條註釋,該代碼是對錯誤903852的響應。但我似乎無法在Google上找到此錯誤。

所以這是一個問題的兩個部分:

  1. 這是錯誤的名字列 名與SQL表? (我是 的印象是,這是一個 最佳實踐)
  2. 我如何找到 Android的bug報告903852讓我 可以理解的問題是什麼? (使用Google的Android的bug 903852不 工作)
+0

你可以發佈你的代碼嗎? – 2011-04-09 06:05:35

+0

只是爲了讓你啓動並運行:從table_name中選擇a.column_name a where ...這並不回答你的問題,但應該可以幫助你防止被卡住。 – 2011-04-09 06:15:48

+0

請參閱[AbstructCursor不允許在期間使用列名](https://code.google.com/p/android/issues/detail?id=7201)作爲#2。 – ooi 2015-02-28 16:44:20

回答

0

我發現,最好的做法就是圍繞單引號所有的表名和條件值! [即使查詢在我的獨立sqlite管理器中工作,我也會在android中出現'未知列名'錯誤。]

6

因此,我在創建Cursor時遇到了此問題,該問題將傳遞到SimpleCursorAdapter。事實證明,儘管可以在'查詢'列字符串[]的前面加上前綴,但傳遞給SimpleCursorAdapter constructor的後續String[] from參數不是需要添加前綴,以便適配器正確映射結果集。

+0

這個!史詩般的迴應,非常感謝! – 2013-02-15 21:56:11

9

在我的情況,當我用

select table_name.column_name as column_name_alt WHERE .... 

和以後,在我的CursorAdapter,稱爲它的字符串數組中僅作爲column_name_alt的問題得到解決。

希望這會有所幫助。

+0

錯誤的上述邏輯是什麼? – 2015-02-09 22:12:28

+1

對這個問題和類似的建議很好的描述,在這個回覆中:http://massimilianosciacco.com/sqlite-cursor-and-table-alias-bug-android-database – shtolik 2015-09-25 10:40:32