Java Android:如何更改sqlite列的值
我对在android世界中使用sqlite还比较陌生,目前我的sqlite数据库设置如下:Java Android:如何更改sqlite列的值,java,android,database,sqlite,Java,Android,Database,Sqlite,我对在android世界中使用sqlite还比较陌生,目前我的sqlite数据库设置如下: db.execSQL("CREATE TABLES " + DATABASE_TABLE + " (" + KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_LOCKERNUMBER + " TEXT NOT NULL, " + KEY_STATUS + " IN
db.execSQL("CREATE TABLES " + DATABASE_TABLE + " (" + KEY_ROWID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_LOCKERNUMBER
+ " TEXT NOT NULL, " + KEY_STATUS + " INTEGER DEFAULT 0, "
+ KEY_PIN + " INTEGER DEFAULT 0);");
我有以下方法将数据插入数据库:
// function to add lockers to database
public long createLockerEntry(String lockerNumber, int status) {
ContentValues cv = new ContentValues();
cv.put(KEY_LOCKERNUMBER, lockerNumber);
cv.put(KEY_STATUS, status);
return ourDatabase.insert(DATABASE_TABLE, null, cv);
}
// function to create a pin for the locker
public void createPin(String lockerNumber, int pin, int status) {
}
// function to remove pin
public void removePin(String lockerNumber, int pin, int status) {
}
我的意图是在方法Create pin中的KEY_pin列中添加某个锁柜号码的pin号码,然后将status值更改为1。我假设我会使用where子句语句,但我不能完全确定语法,或者这是否是编写方法。有什么建议吗?您想要的方法是update()
您可以通过搜索此页面上的“更新”来阅读: 一种使用方法是:
// function to create a pin for the locker
public void createPin(tring lockerNumber, int pin, int status) {
ContentValues cv = new ContentValues()
cv.put(KEY_PIN, pin);
cv.put(KEY_STATUS, status);
ourDatabase.update(DATABASE_TABLE, cv, KEY_LOCKERNUMBER + " = ?"
, new String[] {lockerNumber});
}
下面是一个切换条目值的示例。它是一个用作二进制(即1或0)的int值。 这两种方法分别是checkAsWildTest和uncheckAsWildTest
public void checkAsWildTest(Cursor c, int val) {
assertDbOpen();
String[] _params = { String.valueOf(c.getInt(ID_COLUMN)) };
//next 4 lines are just for debug
log(".uncheckAsWildTest(), " + "c.getCount() = " + c.getCount());
log("row selected = " + c.getInt(ID_COLUMN));
log("cursor content: " + c.getString(ANSWERS_RESPONSE_COLUMN));
log("cursor columns" + Arrays.toString(c.getColumnNames()));
ContentValues cv = new ContentValues();
cv.put(KEY_ANSWERS_CHECKED, val);
db.update(ANSWERS_TABLE, cv, "_id=?", _params);
}
public void uncheckAsWildTest(Cursor c) {
assertDbOpen();
int unchecked = 0;
String[] _params = { String.valueOf(c.getInt(ID_COLUMN)) };
//next 4 lines are just for debug
log(".uncheckAsWildTest(), " + "c.getCount() = " + c.getCount());
log("column selected = " + c.getInt(ID_COLUMN));
log("cursor content: " + c.getString(ANSWERS_RESPONSE_COLUMN));
log("cursor columns" + Arrays.toString(c.getColumnNames()));
ContentValues cv = new ContentValues();
cv.put(KEY_ANSWERS_CHECKED, unchecked);
db.update(ANSWERS_TABLE, cv, "_id=?", _params);
}
我相信您可以使用它,并根据您的目的对其进行修改。我可以看一个示例以便更好地理解它吗?是这样的:ourDatabase.update(DATABASE_TABLE,cv,KEY_LOCKERNUMBER+“=?”,新字符串[]{LOCKERNUMBER})@乔纳桑迪卡米洛:是的。事实上,您的示例甚至更好,因为它使用了查询参数。我同意where args方法更好,所以我将其合并到我的示例中。