1、程式中用到了sqlite,結果運行時報錯如下:
1 |
java.lang.IllegalArgumentException: column '_id'
does not exist
|
2、網上搜尋一番,出現該錯誤原因是:
使用Cursor相關的Adapter時需要一個自增的列,且名字必需為 _id。而我建立的表裡沒有這個欄位,只有一個名為id的自增列。
3、解決辦法:
1)建立資料表時插入一個名為_id的列,類型為自增量,因為在使用Cursor相關的Adapter時需要用到這個列
2)如果實在不需要這個列的話,可以把資料表中某一列使用AS映射為 _id,再進行操作
如,我有一個表, 表中兩個欄位分別為id, 和jokeContent, 現在我想用一個SimpleCursorAdapter來把這個表中的資料顯示到一個listView上,注意其中有"id as _id", 以及new String[]{"_id", "jokeContent"}.
ListView lv = getListView();
lv.setOnItemClickListener(this);
SQLiteDatabase db = .....;
Cursor result = db.query("jokesExport",
new String[]{"id as _id",
"jokeContent"}, null,
null, null,
null, null);
startManagingCursor(result);
if (result !=
null) {
SimpleCursorAdapter la =
new SimpleCursorAdapter(this, R.layout.customcell, result,
new String[]{"_id",
"jokeContent"}, new
int[]{R.id.mytext1, R.id.mytext2});
lv.setAdapter(la);
}
// 然後就能把這個已經存在的資料庫用listView顯示出來了