gpt4 book ai didi

java - 更新查询游标 - 无法从 CursorWindow 读取第 0 行、第 -1 列

转载 作者:行者123 更新时间:2023-12-02 09:47:50 25 4
gpt4 key购买 nike

我想在选中 CheckBox 时更新表格中的列。

我试过了

Log.d("print", "  " + res.getString(res.getColumnIndex("name")));

但是给了我这个错误无法从 CursorWindow 读取第 0 行、第 -1 列。在访问游标中的数据之前,请确保游标已正确初始化。

RecyclerViewAdapter:

checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Log.d ("print", "item clicked");
if (checkBox.isChecked()){
databaseHandler.updateHabit(name.getText().toString(), false);
}else{
DatabaseHandler databaseHandler = new DatabaseHandler(ctx);
databaseHandler.updateHabit(name.getText().toString(), true);
}
}
});

数据库处理程序:


SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();
values.put(Constants.Habit.HABIT_COL_DONE, done);

Cursor res = db.rawQuery("SELECT DESCRIPTION from HABIT_DESCRIPTION WHERE NAME = '" + s + "'", null);

res.moveToFirst();
Log.d("print", " " + res.getString(res.getColumnIndex("name")));

我知道它没有更新,因为当我打印整个表格时,它是旧值。

最佳答案

I want to update a column in my table when CheckBox is checked

然后您需要使用一种方法在表上执行 SQL UPDATE 查询。您已经有了 ContentValues,您可以将它们传递给 update() .

But is giving me this error Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.

您的选择仅包含DESCRIPTION 列,但您正在尝试读取列name。对于光标中不存在的列,getColumnIndex() 返回 -1。

您还应该检查 moveToFirst() 的返回值 - 如果移动成功并且光标指向有效行,它会返回 true。

关于java - 更新查询游标 - 无法从 CursorWindow 读取第 0 行、第 -1 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56526325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com