SQLite3

  1. SQLite3是一款开源的嵌入式关系型数据库,可移植性好,易使用,内存开销小.
  2. SQLite3是无类型的,意味着你可以保存任何类型的数据到任意表的任意字段中.
  3. SQLite3常用的4种数据类型:text(文本字符串), integer(整型值), real(浮点值),  blob(二进制数据(比如文件)).
  4. 在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等等

数据库中不可以使用关键字来命名表,字段.

数据库的使用:

  1. 创建数据库:
      1. sqlite3_open()打开数据库
      2. sqlite3_exec()创建数据库表(每个表都有表名,一个数据库可以有多个表)
      3. sqlite3_close()释放资源
  2. 查询数据:
  1. sqlite3_open() 打开数据库
  2. sqlite3_prepare_v2() 预处理SQL语句
  3. sqlite3_bind_text() 绑定参数
  4. sqlite3_step()执行SQL查询语句,遍历结果
  5. sqlite3_column_text()提取字段数据
  6. sqlite3_finalize()sqlite3_close()释放资源
  1. 修改数据
  1. sqlite3_open() 打开数据库
  2. sqlite3_prepare_v2() 预处理SQL语句
  3. sqlite3_bind_text() 绑定参数
  4. sqlite3_step()执行SQL查询语句,遍历结果
  5. 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字段作为主键,相当于人的身份证.

主键可以是一个字段或多个字段.

外键约束:

利用外键约束可以来建立表与表之间的联系.

外键的一般情况是:一张表的某个字段引用着另一张表的主键字段.

获取数据库方式:

  1. 自己建立数据库

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

NSString *documentsDirectory = [paths objectAtIndex:0]; 

NSString *path = [documentsDirectory stringByAppendingPathComponent:@"database.sqlite"];

  1. 访问本地写好的数据库

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

  1. 在拖入db文件到工程时,苹果默认把add Target前面的勾给去掉了!!!导致无论如何也找不到我们导入的db文件,so,解决方法就是:

把db文件从工程中删除,然后重新拖进去,当弹出窗口时,别着急着看都没看就点next,把add Target前面的勾勾上,然后就会发现,真的好了!

iOS应用数据存储2-SQLite3数据库的更多相关文章

  1. iOS 应用数据存储方式(XML属性列表-plist)

    iOS 应用数据存储方式(XML属性列表-plist) 一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存储自定义对象) ...

  2. iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist)

    iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist) 一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存 ...

  3. iOS本地数据存储(转载)

    看到一篇不错的文章,推荐给大家!!! 应用沙盒 1)每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒 2)应用沙盒的文 ...

  4. iOS应用数据存储的常用方式

    iOS应用 数据存储的常用方式 XML属性列表 plist Preference 偏好设置 NSKeyedArchiver 归档 Core Data SQLite3 应用沙盒: Layer:     ...

  5. IOS开发数据存储篇—IOS中的几种数据存储方式

    IOS开发数据存储篇—IOS中的几种数据存储方式 发表于2016/4/5 21:02:09  421人阅读 分类: 数据存储 在项目开发当中,我们经常会对一些数据进行本地缓存处理.离线缓存的数据一般都 ...

  6. Android数据存储之SQLite数据库

    Android数据存储 之SQLite数据库简介 SQLite的相关知识,并结合Java实现对SQLite数据库的操作. SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎. ...

  7. iOS开发UI篇—ios应用数据存储方式(偏好设置)

    iOS开发UI篇—ios应用数据存储方式(偏好设置) 一.简单介绍 很多iOS应用都支持偏好设置,比如保存用户名.密码.字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能 每个应用 ...

  8. iOS开发UI篇—ios应用数据存储方式(归档)

    iOS开发UI篇—ios应用数据存储方式(归档)  一.简单说明 在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用,且必须先获取路径相对麻烦: 偏好设置(将所有的东西都保存在同 ...

  9. iOS开发技术分享(1)— iOS本地数据存储

    iOS开发技术分享(1)— iOS本地数据存储 前言: 我本是一名asp.net程序员,后来加入了iOS游戏开发队伍,到现在也有一年多的时间了.这一年来,每天都干到2.3点钟才睡觉,不为别的,只为了学 ...

  10. iOS开发UI篇—ios应用数据存储方式(归档) :转发

    本文转发至:文顶顶http://www.cnblogs.com/wendingding/p/3775293.html iOS开发UI篇—ios应用数据存储方式(归档)  一.简单说明 在使用plist ...

随机推荐

  1. html里面的相对路径和绝对路径

    HTML有两种路径的写法:相对路径和绝对路径. 相对路径是在同一个目录的文件引用,如果源文件和引用文件在同一个目录里,直接写引用文件名即可. 如: a.html:     c:\test\menu\a ...

  2. CMD执行BCP命令

    C:\>BCP "EXEC GetU '2016-7-11' ,'-1'" queryout "C:\\C3Marketing\SummaryReport_test ...

  3. sql注入过滤的公共方法

    /// <summary> ///SQL注入过滤 /// </summary> /// <param name="InText">要过滤的字符串 ...

  4. Response.Clear()和Response.ClearContent()区别

    Response.Clear()方法 Clear方法删除所有缓存中的HTML输出.但此方法只删除Response显示输入信息,不删除Response头信息. Response.ClearContent ...

  5. WSDL2ObjC Unsupported Media Type

    调用WCF服务时,出这样的异常“415 Unsupported Media Type”, Because the WCF soap is v1.1, the http header should be ...

  6. Python学习笔记(0)

    Python 是什么类型的语言 Python是脚本语言 Python下载地址:https://www.python.org/downloads/ Python版本:Python 3.4.2 - 64b ...

  7. C# 使用lock关键字lock不同的对象

    c# lock关键字的本质 是调用Monitor.Enter(object obj)并且在finally的时候调用Monitor.Exit(obj) 在obj是不同数据类型的时候会出现不同的情况 1. ...

  8. android 待机流程

    以下分析基于android2.2的google源码.  开机启动时,首先执行PhoneWindowManager.systemReady()(这之前的流程不分析).调用KeyguardViewMed ...

  9. linux 知识汇总

    1 ) linux下文件系统类型的学习 2 )深入理解linux i节点(inode) 3 )RAID系列

  10. [Selenium] 拖拽一个 Component 到 Workspace

    先使Component可见,获取Component位置信息,获取Workspace位置信息,点击Component并拖拽到Workspace,最后释放.(调试时dragAndDropOffset()方 ...