2014-10-02 39 views
2

根據一些博客,如http://reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/,甚至在這裏的一些下流道。如何爲多列主鍵獲取唯一的_id列?

將數據庫包含到項目之前的第一步是將表的主ID字段重命名爲「_id」,以便Android知道綁定表的id字段的位置。

應該如何處理具有組合主鍵的表格 假設我正在創建產品ID和商店ID之間的關係以分配其價格。

CREATE TABLE `Products-Stores` (
    `product` INTEGER NOT NULL, 
    `store` INTEGER NOT NULL, 
    `price` INTEGER NOT NULL, 
    PRIMARY KEY(product,store) 
); 

回答

0

沒有必要重命名數據庫中的任何列。 SQL允許列別名是這樣的:

SELECT integer_primary_key AS _id 
    ... 

是必要的唯一情況是,當你使用的是ListAdapter顯示從您的數據庫查詢光標的內容。您必須在遊標中有一個名爲「_id」的整數主鍵列才能這樣做

更好的是,每個SQLite數據庫表都有一個名爲「rowid」的隱式列。你甚至不必擁有自己的整數主鍵列。只要使用ROWID,就像這樣:

SELECT rowid AS _id 
    ... 

編輯,包括@ CL的工作說明JOINS

顯然,這一招是行不通的,對於很多類型的聯接。只要rowid在連接中的所有行上都是唯一的,但它工作正常。

+0

只要其值在查詢結果的所有行中都是唯一的,就可以使用某個表中的'rowid'。對於許多聯接來說這是真的。 – 2014-10-02 07:57:37

+0

@CL是的,你是絕對正確的。我沒有看到如何清楚地解釋這一點。回答編輯。謝謝。 – 2014-10-02 13:31:50