iOS应用数据存储2-SQLite3数据库
SQLite3
- SQLite3是一款开源的嵌入式关系型数据库,可移植性好,易使用,内存开销小.
- SQLite3是无类型的,意味着你可以保存任何类型的数据到任意表的任意字段中.
- SQLite3常用的4种数据类型:text(文本字符串), integer(整型值), real(浮点值), blob(二进制数据(比如文件)).
- 在iOS中使用SQLite3,首先要添加库文件'libsqlite3.dylib'和导入主头文件#import<sqlite3.h>
SQL语句的特点:
1> 不区分大小写;
2> 每条语句都必须以分号;结尾
SQL中常用的关键字:
pselect、insert、update、delete、from、create、where、desc、order、by、group、table、alter、view、index等等
数据库中不可以使用关键字来命名表,字段.
数据库的使用:
- 创建数据库:
- sqlite3_open()打开数据库
- sqlite3_exec()创建数据库表(每个表都有表名,一个数据库可以有多个表)
- sqlite3_close()释放资源
- 查询数据:
- sqlite3_open() 打开数据库
- sqlite3_prepare_v2() 预处理SQL语句
- sqlite3_bind_text() 绑定参数
- sqlite3_step()执行SQL查询语句,遍历结果
- sqlite3_column_text()提取字段数据
- sqlite3_finalize()、sqlite3_close()释放资源
- 修改数据
- sqlite3_open() 打开数据库
- sqlite3_prepare_v2() 预处理SQL语句
- sqlite3_bind_text() 绑定参数
- sqlite3_step()执行SQL查询语句,遍历结果
- sqlite3_finalize()、sqlite3_close()释放资源
SQL语句种类:
1> 数据创建语句
包括create和drop等操作 ;
在数据库中创建新表或删除表(create table或 drop table).
创表:
create table if not exists database(id integer, name text, age inetger, score real) ;
删表:
drop table if exists database;
2> 数据操作语句(DML:Data Manipulation Language)
包括insert、update、delete等操作 ;
上面的3种操作分别用于添加、修改、删除表中的数据 .
- 插入数据(insert):
insert into database (name, age) values ('JN', 22) ;
注意:数据库中的字符串内容应该用单引号''括住.
- 更新数据(updata):
update database set name = 'jack', age = 20 ;
注意:上面的更新会将database表中所有记录的name都改为jack,age都改为20;
update database set name = ?, age = ? ;
?表示占位符,要改变的参数
- 删除数据(delete):
delete from database;
会将database表中所有记录都删掉.
如果只想更新或者删除某些固定的记录,那就必须在语句后加上一些条件.示例如下:
// 将database表中年龄大于10 并且 姓名不等于jack的记录,年龄都改为 5
update t_student set age = 5 where age > 10 and name != ‘jack’ ;
// 删除database表中年龄小于等于10 或者 年龄大于30的记录
delete from database where age <= 10 or age > 30 ;
3> 数据查询语句(DQL:Data Query Language)
可以用于查询获得表中的数据 ;
关键字select是DQL(也是所有SQL)用得最多的操作 ;
其他DQL常用的关键字有where,order by,group by和having创建.
查询语句(DQL):
// 条件查询条件语句:
select * from database where age > 10
//查询所有数据:
Select name, age from database
主键约束:
每张表都必须有一个主键,用来标识记录的唯一性.
什么是主键:
主键(Primary Key,简称PK),用来唯一的标识某一条记录.
例如database可以增加一个id字段作为主键,相当于人的身份证.
主键可以是一个字段或多个字段.
外键约束:
利用外键约束可以来建立表与表之间的联系.
外键的一般情况是:一张表的某个字段引用着另一张表的主键字段.
获取数据库方式:
- 自己建立数据库
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"database.sqlite"];
- 访问本地写好的数据库
NSString *filename = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@" database.sqlite "];
NSError *error;
// 将放在项目目录中的数据库复制到沙盒中
NSBundle *bundle = [NSBundle mainBundle];
NSString *filenameAgo = [bundle pathForResource:@" database " ofType:@" sqlite "];
NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager copyItemAtPath:filenameAgo toPath:filename error:&error];
解决路径为空的解决方法:
[NSPlaceholderString initWithUTF8String:]: NULL cString
- 在拖入db文件到工程时,苹果默认把add Target前面的勾给去掉了!!!导致无论如何也找不到我们导入的db文件,so,解决方法就是:
把db文件从工程中删除,然后重新拖进去,当弹出窗口时,别着急着看都没看就点next,把add Target前面的勾勾上,然后就会发现,真的好了!
iOS应用数据存储2-SQLite3数据库的更多相关文章
- iOS 应用数据存储方式(XML属性列表-plist)
iOS 应用数据存储方式(XML属性列表-plist) 一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存储自定义对象) ...
- iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist)
iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist) 一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存 ...
- iOS本地数据存储(转载)
看到一篇不错的文章,推荐给大家!!! 应用沙盒 1)每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒 2)应用沙盒的文 ...
- iOS应用数据存储的常用方式
iOS应用 数据存储的常用方式 XML属性列表 plist Preference 偏好设置 NSKeyedArchiver 归档 Core Data SQLite3 应用沙盒: Layer: ...
- IOS开发数据存储篇—IOS中的几种数据存储方式
IOS开发数据存储篇—IOS中的几种数据存储方式 发表于2016/4/5 21:02:09 421人阅读 分类: 数据存储 在项目开发当中,我们经常会对一些数据进行本地缓存处理.离线缓存的数据一般都 ...
- Android数据存储之SQLite数据库
Android数据存储 之SQLite数据库简介 SQLite的相关知识,并结合Java实现对SQLite数据库的操作. SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎. ...
- iOS开发UI篇—ios应用数据存储方式(偏好设置)
iOS开发UI篇—ios应用数据存储方式(偏好设置) 一.简单介绍 很多iOS应用都支持偏好设置,比如保存用户名.密码.字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能 每个应用 ...
- iOS开发UI篇—ios应用数据存储方式(归档)
iOS开发UI篇—ios应用数据存储方式(归档) 一.简单说明 在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用,且必须先获取路径相对麻烦: 偏好设置(将所有的东西都保存在同 ...
- iOS开发技术分享(1)— iOS本地数据存储
iOS开发技术分享(1)— iOS本地数据存储 前言: 我本是一名asp.net程序员,后来加入了iOS游戏开发队伍,到现在也有一年多的时间了.这一年来,每天都干到2.3点钟才睡觉,不为别的,只为了学 ...
- iOS开发UI篇—ios应用数据存储方式(归档) :转发
本文转发至:文顶顶http://www.cnblogs.com/wendingding/p/3775293.html iOS开发UI篇—ios应用数据存储方式(归档) 一.简单说明 在使用plist ...
随机推荐
- 20145227&20145201 《信息安全系统设计基础》实验二 固件开发
北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级:1452 姓名:(按贡献大小排名)鄢曼君 李子璇 学号:(按贡献大小排名)20145227 20145201 成绩: ...
- selenium操作H5视频
测试网址:http://www.w3school.com.cn/tiy/loadtext.asp?f=html5_video_simplepackage com.allin.pc;import jav ...
- Checkpoint--与lazy writer区别
checkpoint目的是减少数据库的恢复时间(服务奔溃或重启服务后的恢复),而lazy writer的目的是保证SQL OS 有空闲缓存块和系统有一定可用内存. Checkpoint和lazyWri ...
- [问题2014A03] 复旦高等代数 I(14级)每周一题(第五教学周)
[问题2014A03] 设 \(A=(a_{ij})\) 为 \(n\,(n\geq 3)\) 阶方阵,\(A_{ij}\) 为第 \((i,j)\) 元素 \(a_{ij}\) 在 \(|A|\) ...
- [问题2014A12] 解答
[问题2014A12] 解答 将问题转换成几何的语言: 设 \(\varphi,\psi\) 是 \(n\) 维线性空间 \(V\) 上的线性变换, 满足 \(\varphi\psi=\psi\va ...
- httpd服务安装
1.配置yum ps:详见YUM源设置篇 2输入yum install httpd -y 进行安装 3安装完成后,重启httpd服务 service httpd restart ...
- "Resuming debugger: error during debugging loop: TypeError: firstViewRangeElement is null"
翻译过来:“重启调试器:错误调试期间循环:TypeError:firstViewRangeElement为空” 写了一个项目,其中使用到了上传图片的插件,在本地上传图片一切正常,发布到服务器却不正常了 ...
- iOS开发数据库篇—SQL
iOS开发数据库篇—SQL 一.SQL语句 如果要在程序运行过程中操作数据库中的数据,那得先学会使用SQL语句 1.什么是SQL SQL(structured query language):结构化查 ...
- rest版的webservice
为了学习app做打算 今天就自学了下webservice,rest应该是其中一种 还有种就是soap,目前就先举个rest的demo吧 准备ws的jar和spring的jar,如何要连接数据的话就自行 ...
- Integer
import static java.lang.System.*; public class IntegerTestOne{ public static void main(String []args ...