我正在设计一个包含字段的表单,并将查询编写为
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 :(得分:0)
您可能想在手机栏中添加“AUTOINCREMENT”。这告诉数据库自动增加每个新行的密钥。
db.execSQL("CREATE TABLE pdetails( phone INTEGER PRIMARY KEY AUTOINCREMENT ASC, fname TEXT, lname TEXT, gender TEXT, email TEXT, mainpin INTEGER)");
答案 1 :(得分:0)
将“UNIQUE”添加到您的手机中......在此,您可以避免重复按键
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()));
数据库会自动增加密钥。 希望这有帮助