2012-02-22 8 views
0

Я проектирование формы, содержащие поля и написал запрос вДублирования первичного ключа

db.execSQL("CREATE TABLE pdetails(phone INTEGER PRIMARY KEY ASC, fname TEXT, lname TEXT, gender TEXT, email TEXT, mainpin INTEGER)"); 

при нажатии кнопки передачи данные вставляются в базе данных, но проблема заключается в вставке данных с повторными первичными ключами. Можете ли вы решить мою проблему? мой вставки кода:

   long flag = 0; 
       int id = 1; 
       SQLiteDatabase db = helper.getWritableDatabase(); 
       Cursor cursor = db.query("pdetails", new String[]{"count(*) phone"}, null, null, null, null, null); 
       while(cursor.moveToNext()) 
       { 
        int idFromDatabase = cursor.getInt(cursor.getColumnIndex("phone")); 
        if(idFromDatabase != 0) 
        { 
         id = 1 + idFromDatabase; 
        } 
       } 
       ContentValues values = new ContentValues(); 
       //values.put("ID", id); 
       values.put("fname", fnametxt.getText().toString().trim()); 
       values.put("lname", lnametxt.getText().toString().trim()); 
       if(male.isChecked()) 
       { 
        values.put("gender","male"); 
       } 
       else 
       values.put("gender", "Female"); 
       values.put("email", emailtxt.getText().toString()); 
       values.put("phone", Integer.parseInt(phone.getText().toString())); 
       values.put("mainpin", mainpin.toString()); 
       flag = db.insert("pdetails", null, values); 
       if(flag != -1) 
       { 
        Toast toast = Toast.makeText(getApplicationContext(), "You have successful inserted this record into database! "+flag, Toast.LENGTH_LONG); 
        toast.show(); 
        db.close(); 
        return; 
       } 
       else 
       { 
        Toast toast = Toast.makeText(getApplicationContext(), "An error occured when insert this record into database!", Toast.LENGTH_LONG); 
        toast.show(); 
        db.close(); 
        return; 
       } 
      } 
     } 
    } 

ответ

0

Вы, вероятно, хотите добавить «AUTOINCREMENT» в столбце телефона. Это сообщает базе данных автоматически увеличивать ключ для каждой новой строки.

db.execSQL("CREATE TABLE pdetails(phone INTEGER PRIMARY KEY AUTOINCREMENT ASC, fname TEXT, lname TEXT, gender TEXT, email TEXT, mainpin INTEGER)"); 
0

Добавить «UNIQUE» на телефон coulmn .... В этом и можно избежать дублирования ключа

db.execSQL("CREATE TABLE pdetails(phone INTEGER PRIMARY KEY UNIQUE NOT NULL, fname TEXT, lname TEXT, gender TEXT, email TEXT, mainpin INTEGER)"); 

или, если и хотят, чтобы добавить AUTOINCREMENT то тогда нет необходимости в этой линии

 values.put("phone", Integer.parseInt(phone.getText().toString())); 

База данных будет автоматически увеличивать ключ. Надеюсь, что это поможет

Смежные вопросы