我正在开发一个android项目,基本上我在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();
}
答案 0 :(得分:0)
如果数据存在或UPDATE
新行,则需要使用PRIMARY_KEY
查询用INSERT
更新行。
由于表的PRIMARY_KEY
为id
,因此您可以检查行是否存在,如下所示。
SELECT EXISTS(SELECT 1 FROM myTable WHERE id='ROW_ID');
如果上述查询返回1,则表明数据存在,您需要按以下方式使用UPDATE
查询,否则请使用INSERT
查询。
UPDATE myTable SET mCurrentLocationLAT=value1, mCurrentLocationLONG=value2 WHERE id='ROW_ID';
答案 1 :(得分:0)
SQLite有一个INSERT OR REPLACE语句,可以将其缩短为REPLACE,如果不存在则将插入新行,如果存在则替换(删除(插入然后插入))新行。阅读文档以了解主键约束以及如何处理它们。
REPLACE INTO positions (title, min_salary)
VALUES
('Full Stack Developer', 140000);