博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS-防止向SQLite数据库中插入重复数据记录:
阅读量:4660 次
发布时间:2019-06-09

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

原则:先检测该数据库的指定表中,是否已经存在我们要插入的这条数据记录,若已经存在,则不插入这条数据记录(即忽略此次插入操作),若尚不存在,才插入这条数据记录(即才执行此次插入操作)

我们这里使用的是FMDB框架

方法一:

FMDatabase *collectionBookDB = [FavoriteBooksDataBase favoriteBooksDataBase];

    NSString *sqlObjectiveString = [NSString stringWithFormat:@"INSERT INTO t_favoriteBooks (bookName, author, publisher, publishmentDate, briefIntroduction, bookImageURL, bookIdentifier) SELECT '%@','%@','%@','%@','%@','%@', %d WHERE NOT EXISTS (SELECT * FROM t_favoriteBooks WHERE bookIdentifier=%d)", book.bookName, book.author, book.publisher, book.publishmentDate, book.briefIntroduction, book.bookImageURL, book.bookIdentifier, book.bookIdentifier];

 BOOL collectionBookResult = [collectionBookDB executeUpdate:sqlObjectiveString];

方法二:

FMDatabase *saveDB = [FavoriteBooksDataBase favoriteBooksDataBase];

    // 先查询数据库的表中有没有这个标识的书

    FMResultSet *resultSet = [saveDB executeQuery:[NSString stringWithFormat:@"SELECT * FROM t_favoriteBooks WHERE bookIdentifier = %d;", book.bookIdentifier]];

    if ([resultSet next]) { // 表中已经有这个标识的书了

        return NO; // 那就直接返回,即不执行插入操作

     }

    // 若表中还没有这个标识的书,就执行这次插入操作

    BOOL result = [saveDB executeUpdateWithFormat:@"INSERT INTO t_favoriteBooks (bookName, author, publisher, publishmentDate, briefIntroduction, bookImageURL, bookIdentifier) VALUES (%@,%@,%@,%@,%@,%@,%d) ", book.bookName, book.author, book.publisher, book.publishmentDate, book.briefIntroduction, book.bookImageURL, book.bookIdentifier]

if (!result) {

        NSLog(@"该条数据记录尚不存在于该表中,但插入操作失败");

        return NO;

    }

    return result;

 

转载于:https://www.cnblogs.com/hello-Huashan/p/4734753.html

你可能感兴趣的文章
10月区块链领域投融资事件盘点
查看>>
Mybatis缓存策略
查看>>
卷积的意义【转】
查看>>
android图形系统详解五:Android绘制模式
查看>>
[剑指offer] 23. 二叉搜索树的后序遍历序列
查看>>
canvas绘画交叉波浪
查看>>
Linux 内核分析
查看>>
试一下:XP ( SP2 ) 本身就支持查杀流氓软件!
查看>>
centos6(7) minimal 基本环境配置
查看>>
P2837晚餐队列安排
查看>>
DP专题
查看>>
UVa 1402 Runtime Error 伸展树
查看>>
笔记本安装SSD固态硬盘详细的优化设置
查看>>
批处理语法介绍
查看>>
FFmpeg 基础库(三)模块组成
查看>>
Linq 查询 与方法调用
查看>>
iOS开源项目(旧)
查看>>
winform的datagridview控件滚动更新数据
查看>>
java中Object类 源代码详解
查看>>
开源控Meteor的个人资料
查看>>