如果数据库中的名字和姓氏将更新分数,我想提出一个条件,否则数据将作为新用户正常插入。
我的代码:
public void data(View view)
{
scor=String.valueOf(qc1.scor);
db.execSQL("UPDATE Student SET email='"+scor+"' WHERE fname ='"+exo.fname+"' AND lname ='"+exo.lname+"';");
Toast toast = Toast.makeText(getApplicationContext(), "data updated", Toast.LENGTH_LONG);
toast.show();
}
答案 0 :(得分:0)
这样的事情可以解决问题:
Cursor cursor = db.rawQuery("select 1 from Student where fname=? AND lname =?",
new String[] { exo.fname, exo.lname });
if(cursor.getCount() > 0) {
// this means we found at least one entry that matches the name
// update database here
} else {
// otherwise that user doesn't exist yet
// insert into database here
}
答案 1 :(得分:0)
这可能会对你有所帮助
ContentValues cv = new ContentValues();
cv.put(columnName,columnValue);
long x = sqLiteDatabase.update(TableName,cv,columnName1 " = ? and "+columnName2+" = ? ",new String[]{coulmn1Val,column2val});
if(x<=0){
// insert data because no any record is updated
//insert statement here
}
答案 2 :(得分:0)
如果您有唯一约束,则可以将insertWithOnConflict与conflictAlgorithm CONFLICT_REPLACE一起使用
当发生UNIQUE约束违规时......总是发生插入或更新
答案 3 :(得分:0)
您可以通过几种不同的方式解决此问题:
query()
)。如果是,则插入,否则,更新。我建议使用方法2,因为它可以为您节省一个语句执行(特别是如果更新很常见)。例如:
ContentValues values = new ContentValues();
values.put("email", scor);
if (db.update("Student", values, "fname = ? AND lname = ?", new String[] { exo.fname, exo.lname }) == 0)
{
// Not an update. Insert
values.put("fname", exo.fname);
values.put("lname", exo.lname);
db.insert("Student", null, values);
}