在数据库中我们经常会有这种需求,
插入时,某条记录不存在则插入,存在则更新。或更新时,某条记录存在则更新,不存在则插入。比如:
人员信息数据库,某个身份证若已经存在,重复插入则更新,否则新增记录。
网页缓存数据库,某个url已经存在,重复插入则更新,否则新增记录。
在mysql中可以使用replace into或是insert into …. on duplicate key update实现。在sqlite中我们同样可以使用replace into实现。分为两步,下面以http cache表为例,仅包含三个字段,主键_id, url, content
第一步:新建唯一索引: CREATE UNIQUE INDEX mycolumn_index ON mytable (myclumn);
CREATE UNIQUE INDEX unique_index_url ON http_cache (url);
java中可以直接在SQLiteOpenHelper的OnCreate中添加
public class DbHelper extends SQLiteOpenHelper {
public void onCreate(SQLiteDatabase db) {
db.beginTransaction();
try {
db.execSQL(DbConstants.CREATE_HTTP_RESPONSE_TABLE_UNIQUE_INDEX.toString());
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
}
}
第二步:调用replace into语句
REPLACE INTO http_cache (url, content) VALUES ('http://www.baidu.com/', '<html></html>' );
java中可以
sQLiteDatabase.replace(DbConstants.HTTP_RESPONSE_TABLE_TABLE_NAME, null, contentValues)
更多见:
http://www.trinea.cn/
分享到:
相关推荐
网上收集的sqlite避免重复插入数据。
今天在向Sqlite数据库里插入数据的时候,报了这样一个错: 代码如下: “too many terms in compound SELECT” 去Stackoverflow上查了一下,发现有人回答这个问题:链接 原来一次性向数据库里插入数据的条数不能太...
Node.js结合sqlite3模块实现Sqlite数据库建表并实现大数据量的快速插入
SQLite的表创建,插入和查询,望大家有什么问题留言。
下载来的资源,自己改了一下,共享出来,供小白使用,本想免费的,无奈最少是2分,再次吐槽一下csdn的下载规则变更,越来越商业化了。
根据万一老师博客写的移动版。实现简单的插入更新,可编译通过
sqlite高性能插入数据
VB 6.0操作Sqlite数据库(查询、添加、更新、删除)
使用环境是VS2010,往SQLite数据库的BLOB字段里插入jpg,主要修改路径和文件名也可以换成其他文件。工程里也自带SQLite的编译文件,如果需要的也可以下载。
android中SQLite数据库中用insert同时插入多条记录的方法和效率比较
这个代码创建了两个数据库,分别使用一个一个插入的方法和批量插入的方法,并且打印出时间,查看不同方法不同插入条数所使用的时间。
在SQLite中插入数据,然后通过查询,将查询数据封装为一个对象集合,最好赋值给listview
自动生成SQLite库,插入/删除/查询/数据/注册/登陆。
cities15000.sql 可以实现向Sqlite3数据库插入150000条城市/时区记录
VC++6/MFC操作SQLITE3(创建,查询,插入,删除等操作)以及中文编码插入与显示,使用VC6下的sqlite控件
NULL 博文链接:https://21jhf.iteye.com/blog/1915273
在Java下连接SQLite数据库 一、下载SQLite数据库的JDBC:http://www.zentus.com/sqlitejdbc/ 二、将下载到的包解压后得到jar包放到%JAVA_HOME%\lib下,并且将其添加到ClassPath系统环境变量中。一定要保证在类路径...
asp.net core6 MVC APP例子,使用SQLite数据库,VS2022创建,网上的例子和教程都是.net core5以前的,这个是全新创建没有Startup文件的。
1、代码实例 2、向SQLite数据库中插入对象(需要将对象序列化) 3、从SQLite数据库中取出所插入的对象(需要反序列化)
数据库满插入失败 SQLITE_CANTOPEN = 14; 不能打开数据库文件 SQLITE_PROTOCOL = 15; 数据库锁定协议错误 SQLITE_EMPTY = 16; (Internal Only)数据库表为空 SQLITE_SCHEMA = 17; 数据库模式改变 SQLITE_TOOBIG...