2012-09-05 28 views
0

這是我的主要工作Activity。我在創建SQLite數據庫時出錯。「主鍵應該是唯一的SQLite」錯誤

private final String DB_NAME = "pocketCloudlets"; 
private final String TABLE_NAME_1 = "Members"; 
long count = 0; 
static final String userTable="user"; 

static final String userName = "User"; 
static final String userID = "_id"; 
static final String age ="age"; 
static final String gender = "gender"; 
static final String password = "password"; 
static final String email = "email"; 

// Creating Table for User Record 

protected static final String table1=(" CREATE TABLE IF NOT EXISTS " 
    + userTable + " (" 
    + userID + " INTEGER PRIMARY KEY NOT NULL, " 
    + userName + " VARCHAR ," 
    + age + " VARCHAR ," 
    + gender + " VARCHAR)"); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // setContentView(R.layout.main); 

     ArrayList<String> results = new ArrayList<String>(); 
     SQLiteDatabase sampleDB = null; 

     try {  
      sampleDB = this.openOrCreateDatabase(DB_NAME, MODE_PRIVATE, null); 
      sampleDB.execSQL(table1); 

      sampleDB.execSQL("INSERT INTO " + 
       userTable + 
       " Values ('13','dawdaa','4','female');"); 

      Cursor c = sampleDB.rawQuery("SELECT _id,userName, age, gender FROM " + 
       userTable + " ", null); 
     } catch (Throwable t) { 
      // completed by the editor of this question 
      // the 'catch' part of the try-catch structure was NOT present 
     } 
+2

通過發佈logcat來顯示錯誤 – Squonk

回答

0
Cursor c = sampleDB.rawQuery("SELECT _id,userName, age, gender FROM " + 
    userTable + " ", null); 

您在表中沒有userName列,而是你與user列創建表。

使用,而不是:

Cursor c = sampleDB.rawQuery("SELECT _id, user, age, gender FROM " + userTable, null); 
0

嘗試將用戶ID列整數主鍵自動遞增。我也很確定你不能在sqlite中使用VARCHAR - 你需要使用TEXT來代替。看看這個鏈接作爲參考:http://www.sqlite.org/datatype3.html

+0

沒有必要使用'AUTOINCREMENT'並且'VARCHAR'對'SQLite'有效。 – Squonk

+0

是的,我也這麼認爲。因爲VARCHAR在SQLLIte中工作。 –

2

我想這個工作第一次你開始的活動。現在,您已經插入了一行_id = 13,現在,每當您再次執行此操作時,您都會一遍又一遍地創建相同的ID。

正如您指定_id爲表的主鍵,這是不允許的 - 主鍵必須是唯一的。

+0

打敗我吧。 +1 biegleux指出,select查詢也被破壞了。 – Squonk

相關問題