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

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

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

        }

    }

}

更多相关文章

  1. 我的MSSQL2000数据库自从我的系统从XPHOME升级到XPP版以后表都打
  2. SQL2000数据库脱机/只读/紧急模式 修复
  3. 十万火急!如何远程复制sql2000数据库
  4. 谁能给我讲讲用C#在windows mobile上开发sql server 2005 mobile
  5. 怎么判断连接SqlServer数据库成功
  6. 像Farmville这样的在线游戏使用什么数据库?
  7. 数据库不支持中文解决方案(mysql)
  8. SQL SERVER 2005 数据库对比工具,并自动生成更新SQL脚本
  9. C# 往SQL数据库插入listbox的值

随机推荐

  1. 播放音乐ProgressBar进度条
  2. Android Studio 打包错误org.gradle.api.
  3. error: resource android:attr/fontVaria
  4. android 启动时会多显示一个闪现屏
  5. Android内核编译和裁剪
  6. Spinner 使用方法小结
  7. ListView中使用线程实现无限加载
  8. Android发送邮件
  9. 2010.12.28——— android menu用法
  10. android 中的定时任务