2013-01-15 28 views
0

我在最後5-6小時內停留在此處。沒有任何工作。我想獲取與用戶輸入的查詢相對應的密鑰,以便用戶可以修改與該特定ID對應的數據。在嘗試檢索fts3中的rowid時變爲null

這段代碼在這裏出了點問題.. ??

db.execSQL("CREATE VIRTUAL TABLE " + DATABASE_TABLE 
       + " USING fts3 (" + KEY_ID 
       + " INTEGER PRIMARY KEY ASC, " + KEY_NAME 
       + " TEXT NOT NULL, " + KEY_ADDRESS 
       + " TEXT NOT NULL, " + KEY_CONTACT + " TEXT NOT NULL, " 
       + KEY_BALANCE + " DOUBLE);"); 

我得到這個KEY_ID列爲空。我想得到這個id(使用遊標元素,就像我們使用cursor.getString(int))一樣,讓用戶修改對應於所選id的值,所以我需要從某處獲取id。有沒有辦法調用fts3表的默認ID而不是使用別名?

+0

「KEY_ID」的值和您的查詢是什麼? – Sam

+0

KEY_ID =「_id」 我想獲取爲每一行定義的唯一ID。 –

+0

我試圖訪問由fts3表定義的默認ID,但沒有工作,所以我試圖創建一個別名,但該列是空的。我不知道爲什麼。 :/ –

回答

0

有沒有辦法調用fts3表的默認ID而不是使用別名?

的問題是,在適配器中使用遊標必須具有與名稱_id的整數主鍵列,但_id不是由SQLite的一個公認的別名。所以不,你需要使用你自己的別名。您可以使用docid as _idrowid as _id


加成
因爲我不相信你可以以任何改變CREATE VIRTUAL TABLE語句內docid INTEGER PRIMARY KEY列,你將需要申請別名在SELECT語句,例如:

SELECT docid as _id, bar FROM Foo WHERE bar MATCH 'John'; 
+0

我已經嘗試過rowid以及..也不起作用。 –

+0

&山姆..在我的表中有單獨的列_id&默認id(顯示爲'docid'btw)..這就是爲什麼我得到一個空列。 :/ –

+0

你在「CREATE TABLE」中試着這個,你在哪裏?如果您閱讀[創建和銷燬FTS表](http://www.sqlite.org/fts3.html#section_1_2),您會發現除列名以外的任何內容都是「純語法糖」,這意味着它被忽略...所以我不相信你可以在CREATE語句中創建一個別名,你可以在每個SELECT語句中使用別名。 – Sam

相關問題