不知何故,當調試一些基於位置的android應用程序時,我得到一個奇怪的例外。看看並分享您的想法:Android sqlite3說「沒有_id」,但表格肯定有
我已通過ContentProvider
將ListActivity
連接到sqlite3數據庫。現在,總是當我開始了ListActivity
程序有異常,告訴我
column '_id' does not exist
(不帶表名),我創造我的ListActivity
的SimpleCursorAdapter
對象行死亡。
Cursor cursor = managedQuery(intent.getData(), new String[] {TrackTable.START_LOC, TrackTable.END_LOC}, null, null,
TrackTable.DEFAULT_SORT_ORDER);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.gps_track_entry, cursor, new String[] {
TrackTable.COLUMN_NAME_TIME_START,
TrackTable.COLUMN_NAME_TIME_END
}, new int[] { R.id.l_start, R.id.l_end });
我的數據庫看起來像這樣:
sqlite> .tables
.tables
android_metadata ocation track
sqlite> . schema track
.schema track
CREATE TABLE track (
_id INTEGER PRIMARY KEY,
start_location INTEGER,
end_location INTEGER,
start_time TEXT,
end_time TEXT
);
sqlite> .schema location
.schema location
CREATE TABLE location (
_id INTEGER PRIMARY KEY,
long TEXT,
lat TEXT,
alt TEXT,
accu TEXT,
bear TEXT,
sped TEXT,
time TEXT);
sqlite> .schema android_metadata
.schema android_metadata
CREATE TABLE android_metadata (locale TEXT);
我的意思是,這是不太可能的錯誤是一個Android的錯誤,但它肯定看起來像一個,因爲沒有一個_id的唯一表android_metadata
。但是,也許我以一種奇怪的方式寫了一些東西,虛擬機現在認爲我想使用android_metadata
而不是track
,我真的想使用它。
您能否顯示用於創建光標的代碼? _id字段必須是遊標結果集的一部分。 –
嘗試將其設置爲自動增量 - 創建表軌道(_id整數主鍵自動增量,........) – hooked82
@Erich道格拉斯:不知道爲什麼你沒有寫這個答案。這絕對是問題所在。 – erikbwork