Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:如何更改sqlite列的值_Java_Android_Database_Sqlite - Fatal编程技术网

Java Android:如何更改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

我对在android世界中使用sqlite还比较陌生,目前我的sqlite数据库设置如下:

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方法更好,所以我将其合并到我的示例中。