java - SQLite 如果存在现有数据跳过或覆盖
问题描述
我的 sqlite 中有一些 x,y 坐标,但是当我添加新数据时,我想检查数据以及是否有相同的数据覆盖或跳过它。坐标自动来自另一种方法。
public void DBCreate(){
SQLITEDATABASE = openOrCreateDatabase("LatLongDatabase", Context.MODE_PRIVATE, null);
SQLITEDATABASE.execSQL("CREATE TABLE IF NOT EXISTS myTable(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, mCurrentLocationLAT VARCHAR,mCurrentLocationLONG VARCHAR);");
}
public void SubmitData2SQLiteDB(){
SQLiteQuery = "INSERT INTO myTable (mCurrentLocationLAT, mCurrentLocationLONG) VALUES('"+mCurrentLocation.getLatitude()+"','"+mCurrentLocation.getLongitude()+"');";
SQLITEDATABASE.execSQL(SQLiteQuery);
Toast.makeText(CampaignActivity.this,"OK", Toast.LENGTH_LONG).show();
}
解决方案
如果表有主键,则使用 INSERT OR REPLACE,
INSERT OR REPLACE INTO myTable (id, mCurrentLocationLAT, mCurrentLocationLONG) VALUES(1, :lat, :long)
如果表没有主键,则修复它。
推荐阅读
- xml - 使用 sed 换行。sed 不一致或者我犯了一个大错误
- java - 添加 void addFoodFirst(String foodName) 仅使用 1 条语句在食物的开头添加 foodName 作为第一个元素
- r - 无法发布到 shinyapps.io
- php - Laravel 5 loadJsonTranslationsFrom 方法不会从包中加载所有 JSON 翻译文件
- matlab - 在 MATLAB 中为“现在”设置特定时间
- kubectl - 如何使用代理服务器进行 kubectl?
- python - 如何使用 matplotlib 或 plotly 在 3-D 曲面图上叠加等高线图?
- php - Flutter Unhandled Exception: FormatException: Unexpected character (at character 4)
- sql - 如何从每一列的最大值的行中选择一个 ID?
- mongodb - 当每个字段都可搜索和可排序时,如何在 MongoDB 上正确构建索引?