在android studio中的update execSQL语句中使用变量

iih3973s  于 2022-12-09  发布在  Android
关注(0)|答案(1)|浏览(160)

我想用一个函数更新sqlite数据库表,如下所示
execSQL在直接使用1时有效,但在使用变量dep时无效

public void update(long id,int dep) {
    Log.i("ee","havu entered in update");

    db.beginTransaction();
    db.execSQL("UPDATE deci set dp = dep WHERE _id = 1");
    //db.execSQL("UPDATE deci set dp = 1 WHERE _id = 1");
    db.setTransactionSuccessful();
    db.endTransaction();
    db.close();
    /*ContentValues contentValues = new ContentValues();
    contentValues.put(dp, dep);
    int i = db.update(deci, contentValues );*/
    return ;
}
e3bfsja2

e3bfsja21#

按如下方式传递变量:

db.execSQL("UPDATE deci set dp = " + dep + " WHERE _id = " + id );

在您的代码中,我看到使用ContentValues的注解语句
这是一种更好更安全的方式

ContentValues cv = new ContentValues();
cv.put("dp", dep); 
db.update(deci , cv, "_id = ?", new String[]{id});

相关问题