gpt4 book ai didi

java - 更新行时 SQLite 中没有这样的列错误

转载 作者:行者123 更新时间:2023-11-29 15:33:51 25 4
gpt4 key购买 nike

我正在尝试更新我的数据库中行中的数据,但我发现没有这样的列(没有这样的列 'Moscow' 或其他列)

这是 DBHelper 代码:

public static final String tableName = "currentWeather";

public static final String KEY_ID = "_id";
public static final String cityName = "city";
public static final String cityTemp = "temperature";

并创建数据库:

sqLiteDatabase.execSQL("create table " + tableName + "(" + KEY_ID + " 
integer primary key autoincrement,"
+ cityName + " text," + cityTemp + " text, " + " UNIQUE(" + cityName +
"))");

当我尝试执行 execSQl 作为响应时显示错误:

sqLiteDatabase.execSQL(
"UPDATE " + DBHelper.tableName + " SET " +
DBHelper.cityTemp + "=" +
response.body().getForecastMain().getTemp() + "
WHERE "
+ DBHelper.cityName + "=" + cityName);

我希望按 cityName 更新行中的温度数据

最佳答案

cityNameresponse.body().getForecastMain().getTemp() 是字符串,应该将它们用单引号括起来传递给 sql 语句:

sqLiteDatabase.execSQL(
"UPDATE " + DBHelper.tableName + " SET " + DBHelper.cityTemp + "='" + response.body().getForecastMain().getTemp() + "'" +
"WHERE " + DBHelper.cityName + " = '" + cityName + "'"
);

但是推荐和安全的更新方式是使用 ContentValues 和 ? 作为参数的占位符:

ContentValues cv = new ContentValues();
cv.put(DBHelper.cityTemp, String.valueOf(response.body().getForecastMain().getTemp()));
int rows = sqLiteDatabase.update(
DBHelper.tableName,
cv,
DBHelper.cityName + " = ?",
new String[] {cityName}
);

您可以检查整数变量行的值。
如果它是 1,这意味着更新了 1 行(因为 cityName 是唯一的)所以更新成功。

关于java - 更新行时 SQLite 中没有这样的列错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57019580/

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