iOS开发能用mysql吗_iOS开发之数据库的简单使用
数据库基础知识:
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开发之数据库的简单使用相关推荐
- springboot mysql行锁_SpringBoot基于数据库实现简单的分布式锁
本文介绍SpringBoot基于数据库实现简单的分布式锁. 1.简介 分布式锁的方式有很多种,通常方案有: 基于mysql数据库 基于redis 基于ZooKeeper 网上的实现方式有很多,本文主要 ...
- ios view 切上部分圆角_IOS开发入门之给view添加圆角并指定位置
本文将带你了解IOS开发入门之给view添加圆角并指定位置,希望本文对大家学IOS有所帮助. ios中给view添加圆角并指定位置 在ios开发中,为了有个不错的UI交互效果,我们经常会用到为视图添加 ...
- ios 仿电脑qq登录界面_iOS开发UI篇—模仿ipad版QQ空间登录界面
iOS开发UI篇-模仿ipad版QQ空间登录界面 一.实现和步骤 1.一般ipad项目在命名的时候可以加一个HD,标明为高清版 2.设置项目的文件结构,分为home和login两个部分 3.登陆界面的 ...
- ios 仿电脑qq登录界面_iOS开发UI篇—模仿ipad版QQ空间登录界面-阿里云开发者社区...
一.实现和步骤 1.一般ipad项目在命名的时候可以加一个HD,标明为高清版 2.设置项目的文件结构,分为home和login两个部分 3.登陆界面的设置 (1)设置第一个控制器和自定义的控制器类(登 ...
- ios 更新尺寸调用什么方法_iOS开发:iPhone尺寸和适配
1:iPhone尺寸规格 尺寸表格:1 inch(英寸) = 2.54cm = 25.4mm 2:屏幕尺寸 我们通常所说的iPhone5屏幕尺寸为4英寸.iPhone6屏幕尺寸为4.7英寸,指的是显示 ...
- ios 如何在cell中去掉_iOS开发:关于 去除UITableViewCell复用机制 的几种方法
UITableView继承自UIScrollview,是苹果为我们封装好的一个基于scroll的控件.上面主要是一个个的UITableViewCell,可以让UITableViewCell响应一些点击 ...
- ios 持续获取定位 高德地图_iOS开发-- 高德地图的接入使用(1)定位
单次定位 @property(nonatomic,strong)AMapLocationManager * locationManager;// 开启定位 // 懒加载创建你的定位的Manager - ...
- ios 开发设置左滑退出_iOS 开发UITableView左滑出现删除按钮的运用方法
释放双眼,带上耳机,听听看~! UITableView的编辑模式 实现UITableView简单的删除功能(左滑出现删除按钮) 首先UITableView需要进入编辑模式.实现下面的方法,即使什么代码 ...
- ios 按钮下面加下划线_iOS开发UILabel和UIButton添加下划线
关于UILabel和UIButton有的时候需要添加下划线,一般有两种方式通过默认的NSMutableAttributedString设置,第二种就是在drawRect中画一条下划线,本文就简单的选择 ...
最新文章
- linux命令积累!
- 智能假手与机器人融合可以灵活抓取物品
- [leetcode] 141.环形链表
- 关于通配泛型类型有几种_5.7 泛型通配符和类型参数的范围
- Netty实现原理浅析
- 【JavaScript】网站源码防止被人另存为
- 流量专家为114搜索提供权威流量访问统计
- 手写bind_一次搞定前端“四大手写”
- SQL Server性能调优--优化建议(二)
- Linux系统(X64)7 安装Oracle11g完整安装图文教程另附基本操作
- 跟我从零基础学习Unity3D开发--NGUI入门基础
- 内存取证分析,笔记版+实战,基础
- EXCEL科学计数法转为文本格式
- 【技术答疑】Swarm BZZ常见技术问题解答
- ∀x(P(x) → Q(x))和∀xP(x) → ∀xQ(x) 的区别
- 阿里巴巴达摩院发布2019十大科技趋势:数字身份将成为第二张身份证
- Google网络硬盘(GDrive):千呼万唤不出来
- c语言json库如何编译,C语言的JSON库Jansson
- 【容斥】2017 ACM Arabella Collegiate Programming Contest
- elixir 读取 marc条目 目次区字段信
热门文章
- 学习率对神经网络迭代次数和准确率的影响以及近似数学表达式
- 一个用于推算神经网络理论收敛迭代次数的方法
- oracle适配器接口,Oracle
- 【Paper】31_[18]On a Dynamic Extension of the Theory of Graphs
- 3.0 神经网络 - PyTorch学习笔记
- verilog基础--sign表达式
- Ubifs文件系统和mkfs.ubifs以及ubinize工具的用法
- 在Eclipse上搭建Android C开发环境
- 科沃斯机器人双十一全渠道成交额超7亿 两大爆款单品携手破亿
- mysql awr v1.0.1发布