数据库基础知识:

plist:writetoFile,条件:只有一个对象拥有这个方法,才能使用plist存储,而且自定义对象不能用plist存储

Preference:偏好设置存储:NSUserDefault存储,好处:不需要关心文件名,快速存储,底层:就是用一个字典做存储.坏处:在iOS8之前,都必须做一下同步操作,目的让内存和硬盘同步.

NSCoding(NSKeyedArchiver\NSkeyedUnarchiver):用来自定义对象归档,自定义对象需要归档:遵守NSCoding协议,并且实现对应的方法,告诉系统哪些属性需要归档,哪些属性需要解档

SQLite3:好处:1.精确的读取数据2.快速的查询到自己想要的数据3.可以批量的读取数据(可以只读出一部分数据)

利用场合:1.用来做离线缓存(只读出需要展示数据,可以节省流量)

本地存储:都是以文件形式存储.

数据库:是以文件的形式存在

数据库第一步:创建数据库文件

第二步:创建表 -> 定义一个模型类

第三步:设计字段(这个表里面有哪些属性) -> 设计模型属性(主要是看你想存储哪些属性)

注意:一定需要一个主键,每条记录的唯一标识,自动增长

第四步:添加记录(设置每个属性的值) -> 创建模型,并且给模型赋值

1.创建数据库链接,就等于创建数据库文件

sql语句

DDL语句:创建表格和删除表格

1.创建表格 create table if not exists 表名(字段名 字段类型,...);

create table t_student (id integer primary key,name text,age integer);

判断下有没有这个表格

create table if not exists t_student (id integer primary key,name text,age integer);

2.删除表格 drop table if exists 表名;

drop table if exists t_student;

DML:增,删,改:操作的是记录

增 insert into 表名 (字段,...) values(字段值);

如果是字段是字符串类型,必须要用单引号(')扩住

insert into t_student (name,age) values ('a',10);

改 update 表名 set 字段 = 字段值,....

update t_student set name = 'c',age = 18;

删:会把t_student表里面的所有记录全部删掉

delete from t_student;

删 delete from 表名;把表里面的所有记录全部删除.

3. 条件语句

update t_student set age = 9 where age =1 and name = '左泽';

4.查询语句(DQL) select 字段 from 表名;

select s.name t_name from t_student s where age = 1 and name = '小泽';

模糊查询

%:代表所有的值

%3:前面无论是什么值,只要以3结尾就OK

3%:后面无论是什么值,只要以3就Ok

%3%:无论前面后面是什么,可以有值也可以没有值,只要有3就行

113:

第一步:创建数据库文件

1、导入sqlite3框架

2、导入头文件

3、创建数据库文件

1 NSString *docPatch = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES)[0];2 NSString *filePatch = [docPatch stringByAppendingPathComponent:@"student.splite"];3 /**4 * 打开数据库5 *6 * @param filename7 * @param ppDb8 *9 * @return 是否打开成功,只要打开成功,就会自动创建数据库文件,文件名就是filename,还有会给数据库实例赋值10 */

11 //sqlite3_open(, )12 //把OC中字符串转换成c语言字符串 -> NSUTF8String

13 sqlite3 *db;14 if (sqlite3_open(filePatch.UTF8String, &db)) {15 NSLog(@"打开成功");16 }else{17 NSLog(@"打开失败");18 }

二、创建表格语句

1 //创建表格

2 /**3 * 执行数据库语句4 *5 * @param sqlite3 数据库实例6 * @param sql sql语句7 * @param callback 执行完成的回调8 void * 回调的第一个参数9 errmsg 错误信息10 *11 * @return 如果执行成功会返回12 */

13 //sqlite3_exec(sqlite3 *, const char *sql, int (*callback)(void *, int, char **, char **), void *, char **errmsg);

14 char *errmsg;15 NSString *sql = @"crate table if not exists t_student (id integer primary key, name text not null);";16 //创建表格

17

18 sqlite3 *db;

sqlite3_exec(db, sql.UTF8String, NULL, NULL, &errmsg);19 if(errmsg){20 NSLog(@"创建表格失败");21 } else{22 NSLog(@"创建表格成功");23 }

三、增-插入(增加)数据的语句

char *errmsg;

NSString*sql = [NSString stringWithFormat:@"insert into t_student (name) values('abc');"];//创建表格

sqlite3 *db;

sqlite3_exec(db, sql.UTF8String, NULL, NULL, &errmsg);if(errmsg) {

NSLog(@"插入失败");

}else{

NSLog(@"插入成功");

}

四、删-删除表格语句

char *errmsg;

NSString*sql = [NSString stringWithFormat:@"delete from t_student;"];//创建表格

sqlite3 *db;  sqlite3_exec(db, sql.UTF8String, NULL, NULL, &errmsg);if(errmsg) {

NSLog(@"删除失败");

}else{

NSLog(@"删除成功");

}

五、改-改掉表格中某个字段的语句

char *errmsg;

NSString*sql = [NSString stringWithFormat: @"update t_student set name = 'b';"];//创建表格

sqlite3 *db;

sqlite3_exec(db, sql.UTF8String, NULL, NULL, &errmsg);if(errmsg) {

NSLog(@"更新失败");

}else{

NSLog(@"更新成功");

}

六、 查- 查找数据的语句

查询跟增删改不一样,查询之前得先有一个准备,先看下查询语句的C语言函数

1 //查询跟增删改不一样2

3 //1.让数据准备一下

4 /**5 *6 *7 * db:数据实例8 * zSql:查询的准备语句9 int nByte 查询语句的字节 -1->就会自动计算字节10 ppStmt:句柄:操作数据库里面的记录11 返回值 准备成功就返回 SQLITE_OK , 失败返回 SQLITE_FAIL

12 */

13 sqlite3_prepare_v2(sqlite3 *db, const char *zSql, int nByte, sqlite3_stmt **ppStmt, const char **pzTail)

查询语句代码实例

1 sqlite3_stmt *stmt;2 sqlite3 *db;3 NSString *sql = [NSString stringWithFormat:@"select * from t_student;"];4 if (sqlite3_prepare_v2(db, sql.UTF8String, -1, &stmt, NULL) ==SQLITE_OK) {5 NSLog(@"准备成功");6 //执行句柄,去寻找下一条记录

7 while (sqlite3_step(stmt) ==SQLITE_ROW) {8 NSLog(@"找到数据");9 //获取哪一列的数据

10 const unsigned char *name = sqlite3_column_text(stmt, 1);11 Student *s =[[Student alloc] init];12 s.name = [NSString stringWithUTF8String:(const char *)name];13 [arrM addObject:s];14 }15

16

17 }

iOS开发能用mysql吗_iOS开发之数据库的简单使用相关推荐

  1. springboot mysql行锁_SpringBoot基于数据库实现简单的分布式锁

    本文介绍SpringBoot基于数据库实现简单的分布式锁. 1.简介 分布式锁的方式有很多种,通常方案有: 基于mysql数据库 基于redis 基于ZooKeeper 网上的实现方式有很多,本文主要 ...

  2. ios view 切上部分圆角_IOS开发入门之给view添加圆角并指定位置

    本文将带你了解IOS开发入门之给view添加圆角并指定位置,希望本文对大家学IOS有所帮助. ios中给view添加圆角并指定位置 在ios开发中,为了有个不错的UI交互效果,我们经常会用到为视图添加 ...

  3. ios 仿电脑qq登录界面_iOS开发UI篇—模仿ipad版QQ空间登录界面

    iOS开发UI篇-模仿ipad版QQ空间登录界面 一.实现和步骤 1.一般ipad项目在命名的时候可以加一个HD,标明为高清版 2.设置项目的文件结构,分为home和login两个部分 3.登陆界面的 ...

  4. ios 仿电脑qq登录界面_iOS开发UI篇—模仿ipad版QQ空间登录界面-阿里云开发者社区...

    一.实现和步骤 1.一般ipad项目在命名的时候可以加一个HD,标明为高清版 2.设置项目的文件结构,分为home和login两个部分 3.登陆界面的设置 (1)设置第一个控制器和自定义的控制器类(登 ...

  5. ios 更新尺寸调用什么方法_iOS开发:iPhone尺寸和适配

    1:iPhone尺寸规格 尺寸表格:1 inch(英寸) = 2.54cm = 25.4mm 2:屏幕尺寸 我们通常所说的iPhone5屏幕尺寸为4英寸.iPhone6屏幕尺寸为4.7英寸,指的是显示 ...

  6. ios 如何在cell中去掉_iOS开发:关于 去除UITableViewCell复用机制 的几种方法

    UITableView继承自UIScrollview,是苹果为我们封装好的一个基于scroll的控件.上面主要是一个个的UITableViewCell,可以让UITableViewCell响应一些点击 ...

  7. ios 持续获取定位 高德地图_iOS开发-- 高德地图的接入使用(1)定位

    单次定位 @property(nonatomic,strong)AMapLocationManager * locationManager;// 开启定位 // 懒加载创建你的定位的Manager - ...

  8. ios 开发设置左滑退出_iOS 开发UITableView左滑出现删除按钮的运用方法

    释放双眼,带上耳机,听听看~! UITableView的编辑模式 实现UITableView简单的删除功能(左滑出现删除按钮) 首先UITableView需要进入编辑模式.实现下面的方法,即使什么代码 ...

  9. ios 按钮下面加下划线_iOS开发UILabel和UIButton添加下划线

    关于UILabel和UIButton有的时候需要添加下划线,一般有两种方式通过默认的NSMutableAttributedString设置,第二种就是在drawRect中画一条下划线,本文就简单的选择 ...

最新文章

  1. linux命令积累!
  2. 智能假手与机器人融合可以灵活抓取物品
  3. [leetcode] 141.环形链表
  4. 关于通配泛型类型有几种_5.7 泛型通配符和类型参数的范围
  5. Netty实现原理浅析
  6. 【JavaScript】网站源码防止被人另存为
  7. 流量专家为114搜索提供权威流量访问统计
  8. 手写bind_一次搞定前端“四大手写”
  9. SQL Server性能调优--优化建议(二)
  10. Linux系统(X64)7 安装Oracle11g完整安装图文教程另附基本操作
  11. 跟我从零基础学习Unity3D开发--NGUI入门基础
  12. 内存取证分析,笔记版+实战,基础
  13. EXCEL科学计数法转为文本格式
  14. 【技术答疑】Swarm BZZ常见技术问题解答
  15. ∀x(P(x) → Q(x))和∀xP(x) → ∀xQ(x) 的区别
  16. 阿里巴巴达摩院发布2019十大科技趋势:数字身份将成为第二张身份证
  17. Google网络硬盘(GDrive):千呼万唤不出来
  18. c语言json库如何编译,C语言的JSON库Jansson
  19. 【容斥】2017 ACM Arabella Collegiate Programming Contest
  20. elixir 读取 marc条目 目次区字段信

热门文章

  1. 学习率对神经网络迭代次数和准确率的影响以及近似数学表达式
  2. 一个用于推算神经网络理论收敛迭代次数的方法
  3. oracle适配器接口,Oracle
  4. 【Paper】31_[18]On a Dynamic Extension of the Theory of Graphs
  5. 3.0 神经网络 - PyTorch学习笔记
  6. verilog基础--sign表达式
  7. Ubifs文件系统和mkfs.ubifs以及ubinize工具的用法
  8. 在Eclipse上搭建Android C开发环境
  9. 科沃斯机器人双十一全渠道成交额超7亿 两大爆款单品携手破亿
  10. mysql awr v1.0.1发布