繁体   English   中英

SQLite如何覆盖相同的数据

[英]SQLite how to overwrite same data

我正在开发一个android项目,basalli我在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();


}

如果数据存在,则需要使用UPDATE查询来使用PRIMARY_KEY更新该行,或者需要INSERT新行。

由于您的表的idPRIMARY_KEY ,因此您可以检查行是否存在,如下所示。

SELECT EXISTS(SELECT 1 FROM myTable WHERE id='ROW_ID');

如果上面的查询返回1,则表明数据存在,您需要使用如下的UPDATE查询,否则使用INSERT查询。

UPDATE myTable SET mCurrentLocationLAT=value1, mCurrentLocationLONG=value2 WHERE id='ROW_ID';

SQLite有一个INSERT OR REPLACE语句,可以将其缩短为REPLACE,如果不存在则将插入新行,或者如果存在则替换(删除(然后插入))行。 阅读文档以了解主键约束以及如何处理它们。

REPLACE INTO positions (title, min_salary)
VALUES
 ('Full Stack Developer', 140000);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM