Android Sqlite 如果不存在则插入
Posted
技术标签:
【中文标题】Android Sqlite 如果不存在则插入【英文标题】:Android Sqlite Insert if not exists 【发布时间】:2014-07-04 11:51:13 【问题描述】:在我的 android 应用程序中,我需要将数据保存到数据库中。这些值是用户名和 DOB 详细信息。因此,在保存详细信息之前,我需要检查数据是否存在。如果名字、姓氏和 dob arte 相同,则在名称中,则无需插入数据。如果有人知道,请在下面提供我的代码,请帮助。
EditText et1 = (EditText) findViewById (R.id.editText1);
EditText et2 = (EditText) findViewById (R.id.editText2);
EditText et3 = (EditText) findViewById (R.id.editText3);
EditText et4 = (EditText) findViewById (R.id.editText7);
EditText et5 = (EditText) findViewById (R.id.editText8);
EditText et6 = (EditText) findViewById (R.id.editText9);
EditText et7 = (EditText) findViewById (R.id.editText10);
EditText et8 = (EditText) findViewById (R.id.editText11);
String fname = et1.getText().toString();
String mname = et2.getText().toString();
String lname = et3.getText().toString();
String bday = et4.getText().toString();
String bmonth = et5.getText().toString();
String byear = et6.getText().toString();
String mno = et7.getText().toString();
String pem = et8.getText().toString();
db.execSQL("INSERT INTO Data2 VALUES('"+fname+"', '"+mname+"','"+lname+"','"+bday+"', '"+bmonth+"','"+byear+"', '"+mno+"', '"+pem+"');");
Toast.makeText(NumEntry.this, "Your details are successfully saved.", Toast.LENGTH_LONG).show();
【问题讨论】:
***.com/questions/2779823/… 【参考方案1】:检查数据库中是否已经存在行,并根据此更新或插入您的数据:
public Long saveUser(Some values)
long rowId;
String sql = "SELECT * FROM Data2 WHERE COLUMN_1 = ? AND COLUMN_2 = ?";
Cursor cursor = getSqLiteDatabase().rawQuery(sql, new String[]"column_value_1" ,"column_value_2");
if (cursor == null || !cursor.moveToFirst())
//Insert new
rowId = getSqLiteDatabase().insert(Data2, null, yourCV);
else
//Update
String clause = "COLUMN_1 = ? AND COLUMN_2 = ?";
String args[] = "column_value_1" ,"column_value_2";
rowId = getSqLiteDatabase().update(User.DB_KEYS.TABLE.toString(), UserSqlStorage.saveUserCV(user), clause, args);
closeCursor(cursor);
return rowId;
【讨论】:
【参考方案2】:您可以使用以下方法..
Cursor cursor = db.rawQuery("select id from tblUniqueNumber WHERE fname = " + fname + " && lname =" + lname + " && DOB = " + DOB, null);
if(cursor.moveToFirst())
else
// insert
【讨论】:
【参考方案3】:我总是创建一个saveOrUpdate()
方法,以便它尝试更新,但如果没有受影响的行,它会保存(因为这意味着数据是新的)
【讨论】:
以上是关于Android Sqlite 如果不存在则插入的主要内容,如果未能解决你的问题,请参考以下文章