//通过sqlite3创建一个数据库指针,将已有数据库的内容拷贝到沙盒中,对沙盒中的数据库数据进行操作

1.SQLite语句

在已有的数据库中创建表create table 表名称(ID integer primary key, name text not null, sex text default “男”)往表中插入数据insert into 表名称 (name, sex) values(“源源”, “男”) 字段可以无顺序,但是值一定要保证对应,并且此时 完全可以不设置sex字段的值,因为我们在创建表时 已经把性别设置为default了。insert into 表名称 values(11, “巴达”, “妖”) 必须保证设置的值与表中字段顺序一样修改表中某一条记录的信息update 表名称 set name = “hehe”, sex = “女” where ID = 1查询语句select ID,name,sex from 表名称 查询的结果与你查询的字段顺序是一样的。select * from 表名称 查询表中所有的字段信息,查询的结果与你表中字段顺序一样select * from 表名称 where ID = 1 后面可以跟条件查询具体想要的信息select * from 表名称 where ID > 1 and sex = “女” 可以跟多个条件,并且多个条件之间用and连接,此时查出来的是同up所有记录。如果多个条件之间用or连接,那么查出来的结果只需要满足其中一条就可以。select * from 表名称 where name like “%源%” 只要名字中包含源,都可以查询出来删除记录delete from 表名称 where name = “源源”

2.操作数据库步骤

创建一个类来操作数据库(注意要先导入libsqlite3.dylib)

static sqlite3 *db = nil;//打开数据库
+ (sqlite3 *)open{//此方法的主要作用是打开数据库,准确的说是连接数据库//方绘制是一个数据库指针//因为 这个数据库指针在很多的SQLite API(函数)中都会用到,我们声明一个类的方法来获取,更加方便if (db != nil) {return db;}//获取documents文件NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];//生成数据库文件在沙盒中的位置NSString *sqlPath = [docPath stringByAppendingPathComponent:@"studb.sqlite"];//获取文件管理对象NSFileManager *fileManager = [NSFileManager defaultManager];//判断沙盒路径中是否存在数据库文件,如果不存咋才执行拷贝操作,如果存在不在执行拷贝操作if ([fileManager fileExistsAtPath:sqlPath] == NO) {//获取数据库文件在包中的文件NSString *filePath = [[NSBundle mainBundle] pathForResource:@"studb" ofType:@"sqlite"];//使用文件管理对象完成管理对象
        [fileManager copyItemAtPath:filePath toPath:sqlPath error:nil];}//    //创建一个数据库指针
//    sqlite3 *db = nil;//打开数据库需要使用以下函数//第一个参数是数据库路径//第二个参数 是指向数据库指针的指针sqlite3_open([sqlPath UTF8String], &db);return db;
}//关闭数据库
+ (void)close{//关闭数据库
    sqlite3_close(db);//置空数据库指针db = nil;}

//打开数据库--创建语句对象(保存了关联的数据库,执行的sql语句,sql语句的长度等信息)--逐行获取数据,并将读出来的C语言转化为OC语言--将数据保存入模型存放在数组中--最后不要忘记释放语句对象

//查找学生
+ (Student *)findStudentByID:(int)ID{//打开数据库sqlite3 *db = [DB open];sqlite3_stmt *stmt = nil;Student *student = nil;int result = sqlite3_prepare_v2(db, "select * from Students where ID = ?", -1, &stmt, nil);if (result == SQLITE_OK) {//如果查询语句或者 其他sql语句 有条件,在准备语句对象的函数内部,sql中用?来代替条件,那么在语句执行之前一定要绑定sqlite3_bind_int(stmt, 1, ID);//第二个参数表示第几个问号,问号的下标从1 开始if (sqlite3_step(stmt) == SQLITE_ROW) {//获取记录中的字段信息const unsigned char *cName = sqlite3_column_text(stmt, 1);const unsigned char *cGender = sqlite3_column_text(stmt, 2);//将C语言字符串转换成OC字符串NSString *name = [NSString stringWithUTF8String:(const char *)cName];NSString *gender = [NSString stringWithUTF8String:(const char *)cGender];student = [Student studentWithID:ID name:name gender:gender];}}//先释放语句对象
    sqlite3_finalize(stmt);return student;
}

转载于:https://www.cnblogs.com/w150385/p/5251651.html

iOS进阶(数据库之SQLite)相关推荐

  1. IOS开发数据库篇—SQLite模糊查询

    IOS开发数据库篇-SQLite模糊查询 一.示例 说明:本文简单示例了SQLite的模糊查询 1.新建一个继承自NSObject的模型 该类中的代码: 1 // 2 // YYPerson.h 3 ...

  2. IOS开发数据库篇--- sqlite常用语句

    /*简单约束*/ CREATE TABLE IF NOT EXISTS t_student(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age I ...

  3. c 连接 mysql 创建数据库_c sqlite创建数据库连接

    iOS开发之SQLite-C语言接口规范(一)--Ready And Open Your SQLite 为什么要搞一搞SQLite的C语言接口规范呢? 因为在做iOS开发中难免会遇到操作数据库的情况, ...

  4. iOS学习笔记(十五)——数据库操作(SQLite)

    SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库.SQLite最初的设计目标是用于嵌入式系统,它占用资源非常少,在嵌入式设备中,只需要几百K的 ...

  5. 【iOS数据持久化】数据库(SQLite.swift)和FMDB

    数据持久化之SQLite数据库(SQLite.swift使用) 一.     简介 SQLite是一款轻型的嵌入式数据库,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就足够了.它的处理速 ...

  6. iOS进阶开发-iOS性能优化-关东升-专题视频课程

    iOS进阶开发-iOS性能优化-3316人已学习 课程介绍         介绍了性能优化方法,其中包括内存优化.资源文件优化.延迟加载.持久化优化.使用可重用对象和并发访问等.这些内容都是非常重要的 ...

  7. IOS操作数据库总结

    iOS学习笔记-数据库操作(使用FMDB) iOS中原生的SQLite API在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB. PlausibleDataba ...

  8. ios mysql数据库查询语句_ios fmdb数据库查询语句

    iOS开发数据库篇-FMDB简单介绍 iOS开发数据库篇-FMDB简单介绍 一.简单说明 1.什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语 ...

  9. iOS进阶课程-Passbook编程-关东升-专题视频课程

    iOS进阶课程-Passbook编程-1999人已学习 课程介绍         介绍了Passbook服务的重要性,Passbook服务的流程.还介绍了Pass风格.Pass内部结构.Pass创建. ...

最新文章

  1. usb打印机命令_Hyper-V与你的虚拟机共享设备、USB设备
  2. android sdk版本控制,1. 统一SDK版本管理配置
  3. html js定义json对象,javascript中的json及对象
  4. 转:Unity3D研究院之提取游戏资源的三个工具支持Unity5(八十四)
  5. 12306能删候补订单记录_12306候补购票功能在哪里怎么用 火车票候补购票使用攻略...
  6. centos7 python3 sqlserver,centos7中python3环境支持s
  7. DOTween的Sequence图例说明
  8. 解决win10下桌面右击新建没有文本文档(.txt)的问题
  9. 第十七届全国大学生智能车竞赛华南赛区报名信息
  10. 光纤上网是如何实现的?—Vecloud微云
  11. Rhino6.5软件安装教程|兼容WIN10
  12. 游戏开发核心技术之-存档与读档(1)
  13. 【思维】SCU 4437 Carries
  14. Python群发短信
  15. DOS批处理:FOR中的Delims和Tokens参数
  16. 12天背诵楞严咒的技巧_如何背诵楞严咒?背诵楞严咒的诀窍
  17. 大一女生废话编程爆火!懂不懂编程的看完都拴Q了
  18. About Codeblocks
  19. asp:ScriptManager
  20. 网络安全自学笔记05 - 网络协议基础与攻击

热门文章

  1. 二十一、补码 (计算机最小的单位为位)
  2. matlab实现一/多元非线性回归
  3. 关于在hue当中执行定时任务,时间的设置。
  4. hadoop常见算法(持续更新)
  5. [bzoj3238]差异(后缀数组+单调栈)
  6. 解决Windows下运行php Composer出现SSL报错的问题
  7. SYNCHRONIZE_DRAIN的用处
  8. 什么是引力波?它是怎么被发现的?
  9. 从 0 到 1,看我玩弄千万日志于股掌
  10. 手把手实现一条延时消息