在Android Studio中的更新execSQL语句中使用变量

时间:2019-01-18 10:43:01

标签: android

我想使用以下功能更新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 ;
}

1 个答案:

答案 0 :(得分:0)

像这样传递变量:

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});