【发布时间】:2019-07-10 11:49:20
【问题描述】:
我正在尝试在 SQLite 中保存不重复的记录,但即使 UNIQUE() 也无济于事。
这是我创建数据库的地方,我希望 cityName 是唯一的:
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL("create table " + tableName + "(" + KEY_ID + "integer primary key autoincrement,"
+ cityName + " text," + cityTemp + " text, " + " UNIQUE(" + cityName +"))");
}
以及存储在 DB 中的函数:
public void saveWeather(Response<CurrentWeather> response) {
contentValues = new ContentValues();
database = dbHelper.getWritableDatabase();
contentValues.put(DBHelper.cityName, response.body().getCityName());
contentValues.put(DBHelper.cityTemp,
response.body().getForecastMain().getTemp());
database.insert(DBHelper.tableName, null, contentValues);
}
我希望没有重复,但它们是
【问题讨论】:
-
@B001ᛦ,不,是这样的:cityName = "New-York", cityTemp = "20.4" -> 城市的每一行
-
如果您在首次创建表后添加了 UNIQUE 属性,请从设备中卸载应用程序,以便删除数据库并重新运行以重新创建数据库和具有该属性的表。
-
您最近是否添加了 UNIQUE 子句?如果是,您是否删除了数据库(删除应用程序的数据或卸载应用程序然后重新运行应用程序)?
-
@Alexander 很好。我添加了一个解释原因的答案。