当前位置: 首页 > news >正文

【iOS第三方框架】FMDB刚刚好

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

A、通过Pod安装FMDB

下面是FMDB的github地址:

https://github.com/ccgus/fmdb

B、使用FMDB

1、指定路径和sqlite文件名

这里将User.sqlite文件放在缓存目录中,通过下面的方法就得到了数据库文件的路径filePath。

//缓存目录 路径
NSString * cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, true).firstObject;
//拼接sqlite文件名
NSString & filePath = [cachePath stringByAppendingPathComponent:@"User.sqlite"];

2、使用单例获取FMDB对象

//单例方法 获取FMDB对象
FMDatabase * db = [FMDatabase databaseWithPath:filePath];

3、打开数据库

- (void)open{
    bool ret = [self.db open];
    if (ret) {
        NSLog(@"数据库打开成功");
    }else{
        NSLog(@"数据库打开失败");
    }
}

4、关闭数据库

- (void)close{
    bool ret = [self.db close];
    if (ret) {
        NSLog(@"数据库关闭成功");
    }else{
        NSLog(@"数据库关闭失败");
    }
}

5、创建表

表名:

UserList

字段:

name -> string 类型

tel -> string 类型

Id -> string 类型

bool created = [self.db executeUpdate:@"CREATE TABLE UserList (name text, tel text, Id text)"];
if (created) {
    NSLog(@"创建表成功");
}else{
    NSLog(@"创建表失败");
}

6、增

- (void)insertNewUser:(LYUser *)user{

    [self open];

    bool insert = [self.db executeUpdate:@"INSERT INTO UserList (name, tel, Id) VALUES (?,?,?)",user.name,user.tel,user.Id];
    if (insert) {
        NSLog(@"插入成功");
    }else{
        NSLog(@"插入失败");
    }

    [self close];
}

7、删

- (void)deleteUser:(LYUser *)user{

    [self open];

    bool delete = [_db executeUpdate:@"DELETE FROM UserList where Id like ?",user.Id];
    if (delete) {
        NSLog(@"删除成功");
    }else{
        NSLog(@"删除失败");
    }

    [self close];
}

8、改(更新)

- (void)updateUser:(LYUser *)user{

    [self open];

    bool update = [_db executeUpdate:@"UPDATE UserList SET name = ? , tel = ?  where Id = ?",user.name,user.tel,user.Id];
    if (update) {
        NSLog(@"更新数据成功");
    }else{
        NSLog(@"更新数据失败");
    }

    [self close];
}

9、查询

[self open];

FMResultSet * set = [self.db executeQuery:@"SELECT * FROM UserList"];

//遍历
while ([set next]) {
    LYUser * user = [[LYUser alloc]init];
    user.name = [set stringForColumn:@"name"];
    user.tel = [set stringForColumn:@"tel"];
    user.Id = [set stringForColumn:@"Id"];
    ...
}
    
[self close];

C、Demo

Demo github

https://github.com/ly918/Demos

转载于:https://my.oschina.net/Misayalvyuan/blog/732132

相关文章:

  • C#框架及概念
  • vue webpack 构建
  • 设计模式之观察者模式(c++)
  • codeforces 492E. Vanya and Field(exgcd求逆元)
  • tcp 重发 应用层重传
  • Log4j具体使用实例
  • ios8之后的界面旋转简单原理
  • 设计模式之桥接模式(Bridge模式)
  • jsdoc文档
  • ESXI虚拟化增加系统盘容量
  • php过滤textarea 中的换行符问题
  • Unity3D-光照贴图技术
  • 说说动画卡顿的解决方案
  • ffmpeg从AVFrame取出yuv数据到保存到char*中
  • Keepalived工作原理详解及配置实例
  • C# 免费离线人脸识别 2.0 Demo
  • Flannel解读
  • JavaScript的使用你知道几种?(上)
  • Java反射-动态类加载和重新加载
  • leetcode讲解--894. All Possible Full Binary Trees
  • Mocha测试初探
  • Node项目之评分系统(二)- 数据库设计
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 经典排序算法及其 Java 实现
  • 悄悄地说一个bug
  • 如何利用MongoDB打造TOP榜小程序
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 我与Jetbrains的这些年
  • 项目管理碎碎念系列之一:干系人管理
  • 小程序测试方案初探
  • 整理一些计算机基础知识!
  • ​【已解决】npm install​卡主不动的情况
  • # centos7下FFmpeg环境部署记录
  • #{}和${}的区别?
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (1)STL算法之遍历容器
  • (差分)胡桃爱原石
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • .NET BackgroundWorker
  • .Net core 6.0 升8.0
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET 中的轻量级线程安全
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • [C#][DevPress]事件委托的使用
  • [Contest20180313]灵大会议
  • [ffmpeg] x264 配置参数解析
  • [flask] flask的基本介绍、flask快速搭建项目并运行
  • [flink总结]什么是flink背压 ,有什么危害? 如何解决flink背压?flink如何保证端到端一致性?
  • [Gym-102091E] How Many Groups