博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sqlite插入或更新
阅读量:6085 次
发布时间:2019-06-20

本文共 1056 字,大约阅读时间需要 3 分钟。

在数据库中我们经常会有这种需求,插入时,某条记录不存在则插入,存在则更新。或更新时,某条记录存在则更新,不存在则插入。比如:

人员信息数据库,某个身份证若已经存在,重复插入则更新,否则新增记录。

网页缓存数据库,某个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)

 

更多见:

 

转载于:https://www.cnblogs.com/trinea/archive/2013/05/15/3079169.html

你可能感兴趣的文章
【原创】Ubuntu以root用户自动登录
查看>>
JavaScript+IndexedDB实现留言板:客户端存储数据
查看>>
问题:如何在固定大小的DIV层插入N多个图片
查看>>
iOS中使用 Reachability 检测网络
查看>>
访问者模式
查看>>
【Android】13.2 使用自定义的CursorAdapter访问SQLite数据库
查看>>
01-普通轮播图-左右滚动
查看>>
Java Android 注解(Annotation) 及几个常用开源项目注解原理简析
查看>>
2011年中国Android智能手机用户调查研究报告
查看>>
Java 集合转换(数组、List、Set、Map相互转换)
查看>>
通过注解实现Spring 声明式事务管理
查看>>
关于javascript中的变量对象和活动对象
查看>>
int main(int argc,char* argv[])参数详解
查看>>
Linux Kernel文件系统写I/O流程代码分析(一)
查看>>
matplotlib.pyplot画图笔记
查看>>
James Munkres Topology: Sec 22 Example 1
查看>>
测试第一次上机报告 3013218151 叶乔菲
查看>>
localStorage之本地储存
查看>>
最快下载速度100Mbps!4G LTE技术全解析
查看>>
怎么将手动设定的IP变成固定的自动IP.
查看>>