gpt4 book ai didi

java - 更新了表,但没有返回正确的值

转载 作者:行者123 更新时间:2023-12-02 11:20:34 26 4
gpt4 key购买 nike

可能很简单,但我花了很长时间才弄清楚。

我想保存评级栏评级,然后在重新打开 Activity 时加载该评级。但它总是返回0。

我有一个带有评级列的食谱表:

final String CREATE_TABLE_RECIPES = "CREATE TABLE IF NOT EXISTS " +
TABLE_RECIPES + "(" +
RECIPE_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
RECIPE_NAME + " TEXT, " +
RECIPE_INSTRUCTIONS + " TEXT, " +
RECIPE_RATING + " FLOAT " +
")";

我有一个 onRatingBarChange 监听器将评级保存到表中:

(id 和 rating 的值正确)

ratingbar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
db.addRating(id, rating);
}
});

db类中的addRating方法:

public void addRating(int id, float rating) {
String SET_RATING =
"UPDATE " + TABLE_RECIPES +
" SET " + RECIPE_RATING + " = " + rating +
" WHERE " + RECIPE_ID + " = " + id;

SQLiteDatabase db = this.getWritableDatabase();
db.rawQuery(SET_RATING, null);
db.close();
}

最后是 db 类中的 getRating 方法:

public float getRating(int id) {
String GET_RATING =
"SELECT " + RECIPE_RATING +
" FROM " + TABLE_RECIPES +
" WHERE " + RECIPE_ID + " = " + id;
SQLiteDatabase db = this.getReadableDatabase();
Cursor c = db.rawQuery(GET_RATING, null);
c.moveToFirst();
float rating = c.getFloat(0);
Log.i("getRating", "gotRating: " + rating);
return rating;
}

返回的评分始终为 0,因此要么未正确保存,要么未正确获取值。

最佳答案

db.rawQuery(SET_RATING, null);

您应该使用 execSQL() 进行 UPDATE 查询,而不是 rawQuery()。 (或者方便的包装器之一,例如 update()。)

rawQuery() 编译底层 SQL 但不执行它; execSQL() 编译并运行 SQL。

关于java - 更新了表,但没有返回正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49957030/

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