2014-08-31 63 views
1

這下面的代碼是我的數據庫架構和後運行onCreate方法我得到這個錯誤:的Android SQLite表有不止一個主鍵

08-28 08:13:23.984 3214-3214/ir.tsms E/Database﹕ Failure 1 (table "ReceiveFields" has more than one primary key) on 0x1175f8 when preparing 'CREATE TABLE ReceiveFields(id INTEGER PRIMARY KEY AUTOINCREMENT, lastId INTEGER , smsNumber VARCHAR , mobileNumber VARCHAR , senderName VARCHAR , smsBody TEXT , receiveDate VARCHAR , PRIMARY KEY (id));'. 

數據庫中創建架構變量:

private static final String DATABASE_CREATE = "CREATE TABLE " + RECEIVE_FIELDS_TABLE + "(" 
     + COLUMN_ID +   " INTEGER PRIMARY KEY AUTOINCREMENT, " 
     + COLUMN_LASTID +  " INTEGER , " 
     + COLUMN_SMSNUMBER +  " VARCHAR , " 
     + COLUMN_MOBILENUMBER + " VARCHAR , " 
     + COLUMN_SENDERNAME + " VARCHAR , " 
     + COLUMN_SMSBODY +  " TEXT , " 
     + COLUMN_RECEIVEDATE + " VARCHAR , PRIMARY KEY (" + COLUMN_ID + "));"; 

Log.i結果DATABASE_CREATE

CREATE TABLE ReceiveFields(

    id INTEGER PRIMARY KEY AUTOINCREMENT, 
    lastId INTEGER , 
    smsNumber VARCHAR , 
    mobileNumber VARCHAR , 
    senderName VARCHAR , 
    smsBody TEXT , 
    receiveDate VARCHAR , 
    PRIMARY KEY (id) 

); 

whats我創建表問題?謝謝

+2

取出'PRIMARY KEY'條款之一。 – Henry 2014-08-31 05:38:29

回答

0

DATABASE_CREATE末尾刪除PRIMARY KEY (" + COLUMN_ID + ")查詢字符串。
更改您的代碼:

private static final String DATABASE_CREATE = "CREATE TABLE " + RECEIVE_FIELDS_TABLE + "(" 
    + COLUMN_ID +   " INTEGER PRIMARY KEY AUTOINCREMENT, " 
    + COLUMN_LASTID +  " INTEGER , " 
    + COLUMN_SMSNUMBER +  " VARCHAR , " 
    + COLUMN_MOBILENUMBER + " VARCHAR , " 
    + COLUMN_SENDERNAME + " VARCHAR , " 
    + COLUMN_SMSBODY +  " TEXT , " 
    + COLUMN_RECEIVEDATE + " VARCHAR);"; 
+1

我想我的'COLUMN_ID'是'PRIMARY KEY'我可以嗎? – 2014-08-31 05:53:25

+1

是的,你可以。只需在定義一個字段的地方插入'PRIMARY KEY'語句即可。例如你可以使用:'... COLUMN_ID INTEGER PRIMARY KEY AUTOINCREMENT ...' – SerCna 2014-08-31 06:04:23