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 ...
随机推荐
- 给tabBar设置图片和字体颜色的几种方法
现在很多应用都使用到了tabBar,我们往往在给tabBar设置图片和字体的时候,当选中状态下,往往字体的颜色和图片的颜色不匹配,有时候就显得无从下手,我也常常忘了,所有写这个博客的目的,相当于给自己 ...
- Tiny Rss简明安装与配置笔记
对于某些自己喜欢的却没有RSS订阅功能的网站,可以通过Feed43定制抓取规则来获取所需信息.但由于其服务器在国外,抓取时常失败,且免费账户抓取频率太低,遂仿造他自行实现了一个并挂到服务器上,然后通过 ...
- js-统计选项个数
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- LeetCode----8. String to Integer (atoi)(Java)
package myAtoi8; /* * Implement atoi to convert a string to an integer. Hint: Carefully consider all ...
- python :HTML+CSS (Position)
position_fixed固定在某一个页面上 <!DOCTYPE html> <html lang="en"> <head> <meta ...
- 1350. Primary Arithmetic
Children are taught to add multi-digit numbers from right-to-left one digit at a time. Many find th ...
- MQ框架的比较
MQ框架的比较 MQ框架非常之多,比较流行的有RabbitMq.ActiveMq.ZeroMq.kafka.这几种MQ到底应该选择哪个?要根据自己项目的业务场景和需求.下面我列出这些MQ之间的对比数据 ...
- [问题2014S02] 解答
[问题2014S02] 解答 首先注意到: 两个实系数多项式 \(f(x),g(x)\) 互素当且仅当 \(f(x),g(x)\) 在复数域 \(\mathbb{C}\) 上没有共公根, 当且仅当结 ...
- Linux 日常命令
命令 介绍说明 pwd 打印出当前所在目录 mkdir 创建一个目录 rmdir 删除一个目录 rm 删除文件或目录 -r:删除目录时必须加上 cp 复制一个文件或目录 -r:复制 ...
- ARM处理器的寄存器
在ARM体系中通常有以下3种方式控制程序的执行流程: **在正常执行过程中,每执行一条ARM指令,程序计数器(PC)的值加4个字节:每执行一条Thumb指令,程序计数器寄存器(PC)加2个字节.整个过 ...