2012-02-08 29 views
6

可能重複:
Is it possible to apply primary key on the text fields in android database如何將主鍵添加到android sqlite中的文本數據類型?

我都喜歡這些讓部隊密切完成。

private static final String CREATE_NEWCUSTOMER = "create table newcustomer (_id integer primary key autoincrement, " 
      + "cname text primary key, date text , " + "caddress text);"; 

它工作的整數,如果有任何想法,請幫助我。

+0

看到這個:http://stackoverflow.com/questions/7591492/is-it-possible-to-apply-primary-key-on-the-text-fields-in-android-database – 2012-02-08 13:51:05

回答

7

你不會像在SQLite中那樣創建主鍵。我沒有測試以下,但根據文檔它應該工作:

private static final String CREATE_NEWCUSTOMER = "create table newcustomer (_id integer autoincrement, cname text, date text, caddress text, PRIMARY KEY(_id, cname));"; 
+1

它是工作,但cname列採取雙倍值 – sai 2012-02-09 07:37:32

+1

當然它!單獨的「cname」列不是唯一的。它只與'_id'列結合使用,因爲它們都屬於主鍵。由於'_id'列是'autoincrement',所以'cname'的每個值都有一個唯一的組合。然而,你的問題不是如何使'cname'列獨一無二。 – 2012-02-09 07:50:59

-3

試試這個:

final String CREATE_TABLE_JobTime = 
    "CREATE TABLE jt (q_id INTEGER PRIMARY KEY AUTOINCREMENT,description VARCHAR);"; 
db.execSQL(CREATE_TABLE_JobTime); 
+1

他明確詢問TEXT字段上的主鍵,它在您提供的解決方案中缺失。 – 2012-02-08 13:50:00

+0

AUTOINCREMENT從不應用於文本主鍵,其唯一實現的整數值 – Deepak 2014-09-03 12:46:10

3

您可以添加主鍵屬性沒有任何問題的文本。在上面的查詢中存在一個主要問題。如果主鍵由多個列組成,則不能應用「AutoIncrement」屬性。

  • AUTOINCREMENT不允許如果主鍵是在兩個或多個列

下面是創建與由上兩列的主鍵的表的示例性查詢,一個列具有整數數據類型和其他文本PRIMARY KEY ("col_1", "col_2")

CREATE TABLE "Table_Name" ("col_1" INTEGER NOT NULL , "col_2" TEXT NOT NULL , "col_3" TEXT, "col_4" VARCHAR, PRIMARY KEY ("col_1", "col_2")) 
相關問題