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 ...
随机推荐
- html里面的相对路径和绝对路径
HTML有两种路径的写法:相对路径和绝对路径. 相对路径是在同一个目录的文件引用,如果源文件和引用文件在同一个目录里,直接写引用文件名即可. 如: a.html: c:\test\menu\a ...
- CMD执行BCP命令
C:\>BCP "EXEC GetU '2016-7-11' ,'-1'" queryout "C:\\C3Marketing\SummaryReport_test ...
- sql注入过滤的公共方法
/// <summary> ///SQL注入过滤 /// </summary> /// <param name="InText">要过滤的字符串 ...
- Response.Clear()和Response.ClearContent()区别
Response.Clear()方法 Clear方法删除所有缓存中的HTML输出.但此方法只删除Response显示输入信息,不删除Response头信息. Response.ClearContent ...
- WSDL2ObjC Unsupported Media Type
调用WCF服务时,出这样的异常“415 Unsupported Media Type”, Because the WCF soap is v1.1, the http header should be ...
- Python学习笔记(0)
Python 是什么类型的语言 Python是脚本语言 Python下载地址:https://www.python.org/downloads/ Python版本:Python 3.4.2 - 64b ...
- C# 使用lock关键字lock不同的对象
c# lock关键字的本质 是调用Monitor.Enter(object obj)并且在finally的时候调用Monitor.Exit(obj) 在obj是不同数据类型的时候会出现不同的情况 1. ...
- android 待机流程
以下分析基于android2.2的google源码. 开机启动时,首先执行PhoneWindowManager.systemReady()(这之前的流程不分析).调用KeyguardViewMed ...
- linux 知识汇总
1 ) linux下文件系统类型的学习 2 )深入理解linux i节点(inode) 3 )RAID系列
- [Selenium] 拖拽一个 Component 到 Workspace
先使Component可见,获取Component位置信息,获取Workspace位置信息,点击Component并拖拽到Workspace,最后释放.(调试时dragAndDropOffset()方 ...