在sqlite中,可以用以下方法防止插入重复数据:
设置表的联合主键
在INSERT语句中添加OR IGNORE,即可。
示例如下:
insert OR IGNORE into PDA_Test (DeviceID,MethodName) values('1112','测试原有')
sqlite避免重复插入数据
SQLite 数据库常用约束如下:
NOT NULL - 非空
UNIQUE - 唯一
PRIMARY KEY - 主键
FOREIGN KEY - 外键
CHECK - 条件检查
DEFAULT - 默认
用insert语句插入数据,为避免重复插入又不打断数据处理。
首先要避免重复插入,就必须在插入时引发冲突。在表中设置了id字段,该字段为UNIQUE属性,当插入的id已存在时引发冲突。
我给你提供个思路,不要光从sql角度考虑,从java语言提供的异常机智考虑会更简单.因为我在对数据库进行轮询的时候也经常遇到这样的问题.最好的解决之道就是如果不存在就插入,如果重复,就跳过.
//将插入语句放在循环体中
for(int i=0i<ni++){
try{
//............省略具体插入代码
//插入的代码块,如果插入异常,将会发生异常 ,并被catch捕捉,但程序不做任何处理.继续循环下面一条!!所有不存在的数据将会被正常插入.所有插入异常将会被忽略!
}catch(Exception e){
}
}
---这个解决之道就是正常则插入,异常则跳过,满足了你的要求的.呵呵,就是你想要的答案吧.
不知道你用的是什么数据库,以Mysql为例,有几种方式可以去重1. insert ignore into ... -- 这种方式当有重复主键的时不会更新数据
2. insert into ... on duplicate key update
3. replace into ...
既然是数据备份,理论上不应该会出现你说的问题,想着应该就是你备份数据的方式有问题
建议你再学习一下如何去实现数据库数据的备份
一般来说可以 数据库设置主从备份,这样数据的同步根本不用人为的去管理,自动就实现了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)