SQLite-iOS

前言

iOS中的数据存储方式

  • Plist(NSArray\NSDictionary)
  • Preference(偏好设置\NSUserDefaults)

    http://www.jianshu.com/p/459c15cf6ce2

  • NSCoding(NSKeyedArchiver\NSkeyedUnarchiver)
  • SQLite3
  • Core Data(C语言操作的基础上增添面向对象,重量级)

1. SQLite

  • 什么是SQLite
  1. SQLite是一款轻型的嵌入式数据库
  2. 它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了
  3. 它的处理速度比Mysql、PostgreSQL这两款著名的数据库都还快
  • 什么是数据库
  1. 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库
  2. 数据库可以分为2大种类
  3. 关系型数据库(主流)
  4. 对象型数据库
  • 常用关系型数据库
  1. PC端:Oracle、MySQL、SQL Server、Access、DB2、Sybase
  2. 嵌入式\移动客户端:SQLite
  • 如何在程序运行过程中操作数据库中的数据
  1. 那得先学会使用SQL语句
  • 什么是SQL
  1. SQL(structured query language):结构化查询语言
  2. SQL是一种对关系型数据库中的数据进行定义和操作的语言
  3. SQL语言简洁,语法简单,好学好用
  • 什么是SQL语句
  1. 使用SQL语言编写出来的句子\代码,就是SQL语句
  2. 在程序运行过程中,要想操作(增删改查,CRUD)数据库中的数据,必须使用SQL语句
  • SQL语句的特点
  1. 不区分大小写(比如数据库认为user和UsEr是一样的)
  2. 每条语句都必须以分号 ; 结尾
  • SQL中的常用关键字有
  1. select、insert、update、delete、from、create、where、desc、order、by、group、table、alter、view、index等等
  2. 数据库中不可以使用关键字来命名表、字段
  • SQLite的种类
  • 数据定义语句(DDL:Data Definition Language)
  1. 包括create和drop等操作
  2. 在数据库中创建新表或删除表(create table或 drop table)
  • 数据操作语句(DML:Data Manipulation Language)
  1. 包括insert、update、delete等操作
  2. 上面的3种操作分别用于添加、修改、删除表中的数据
  • 数据查询语句(DQL:Data Query Language)
  1. 可以用于查询获得表中的数据
  2. 关键字select是DQL(也是所有SQL)用得最多的操作
  3. 其他DQL常用的关键字有where,order by,group by和having

2 Navicat

  • Navicat是一款著名的数据库管理软件,支持大部分主流数据库(包括SQLite)
  • 利用Navicat建立数据库连接
  • 建表
  • 查看DDL
  • 执行SQL语句

3. SQLite编码 (增、删、改、查)

  • 基本步骤
  1. 创建数据库文件
  2. 创建表
  3. 添加字段
  4. 添加记录
  • 说明
  1. 获取沙盒路径

NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

NSString *dbPath = [docPath stringByAppendingPathComponent:@"student.sqlite"];

  2.定义数据库

  只要调用sqlite3_open方法,系统就回自动去指定的路径加载sqlite文件,如果文件不存在就会自动创建数据库文件,并且打开数据库。如果数据库文件存在就会自动打开fileName:数据库文件的地址ppDb:已经打开的数据库

3. 打开数据库

   int success = sqlite3_open(dbPath.UTF8String, &_db); ///&self.db  &[self db]  错误写法

  if (success == SQLITE_OK) {

  NSLog(@"数据库打开成功");

          //创建表

    /*

  需要执行SQL语句的数据库对象

  需要执行的SQL语句

  执行成功的回掉

  回调函数的参数

  错误信息

  */

          char *error;

    NSString *sql = @"CREATE TABLE IF NOT EXISTS t_student(id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,score REAL DEFAULT 0)";

          /*不允许多线程同时操作,多个程序不能同时操作同一个数据库*/

    success = sqlite3_exec(self.db, sql.UTF8String, NULL, NULL, &error);

  if (success == SQLITE_OK) {

              NSLog(@"创建表成功");

    }

  else {

              NSLog(@"创建表失败");

    }

  }

  else {

          NSLog(@"数据打开失败");

    }

  4. 插入

  

NSString *sql = @"INSERT INTO t_student(score,name) VALUES(100,‘tt‘);";

char *error;

int success = sqlite3_exec(self.db, sql.UTF8String, NULL, NULL, &error);

if (success == SQLITE_OK) {

NSLog(@"插入成功");

}

else {

NSLog(@"插入失败");

}

  5. 查询

//1. 准备查询

/*

需要查询的数据库

需要执行的查询语句

查询语句的长度,如果传递一个小于0的数系统会自动计算查询语句的长度

结果集对象

*/

sqlite3_stmt *stmt;

NSString *sql = @"SELECT * FROM t_student;";

int success = sqlite3_prepare_v2(self.db, sql.UTF8String, -1, &stmt, NULL);

if (success == SQLITE_OK) {

//2.取出查询的数据

//        int row = sqlite3_step(stmt);  //每次调用该方法都会跳到下一条记录

//        if (sqlite3_step(stmt) == SQLITE_ROW)

while (sqlite3_step(stmt) == SQLITE_ROW) {

NSLog(@"有数据");

const unsigned char *name = sqlite3_column_text(stmt, 1);

double score = sqlite3_column_double(stmt, 2);

NSLog(@"%s,%.f",name,score);

}

}

  6. 工具类封装

4. FMDB

  • 什么是FMDB
  1. FMDB是iOS平台的SQLite数据库框架
  2. FMDB以OC的方式封装了SQLite的C语言API
  • FMDB的优点
  1. 使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码
  2. 对比苹果自带的Core Data框架,更加轻量级和灵活
  3. 提供了多线程安全的数据库操作方法,有效地防止数据混乱
  • nFMDB的github地址
  1. https://github.com/ccgus/fmdb
  • FMDB有三个主要的类
  1. FMDatabase
  2. 一个FMDatabase对象就代表一个单独的SQLite数据库
  3. 用来执行SQL语句
  • FMResultSet
  1. 使用FMDatabase执行查询后的结果集
  • FMDatabaseQueue
  1. 用于在多线程中执行多个查询或更新,它是线程安全的
时间: 2024-11-06 18:08:26

SQLite-iOS的相关文章

ios开发学习笔记--数据持久化之数据库(SQLite.swift)

数据持久化之SQLite数据库(SQLite.swift使用) 一.     简介 SQLite是一款轻型的嵌入式数据库,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就足够了.它的处理速度比Mysql.PostgreSQL这两款著名的数据库都还快.SQLite提供的是一些C函数接口,你可以用这些函数操作数据库.通过使用这些接口,传递一些标准 sql 语句(以 char * 类型)给 SQLite函数,SQLite就会为你操作数据库 一个数据库中的表就算是一个文件,一般是将这个文件放

纯 Swift 封装的 SQLite 框架:SQLite.swift

SQLite.swift 是一个使用纯 Swift 语言封装 SQLite3 的操作框架. 特性: 简单的查询和参数绑定接口 安全.自动类型数据访问 隐式提交和回滚接口 开发者友好的错误处理和调试 文档完善 通过广泛测试 示例代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 import SQLite   let db = Database("

111111

简历 单例:一个类中只能有一个实例,且为这个实例提供一个访问他的全局节点 优点:能够防止在其他类中,创建出单例的副本,保证单例的唯一性, 能够降低类与类之间的耦合性 代理:为其他对象提供一种代理,以控制对这个对象的访问. 优点:我们给一个对象提供代理,是为了实现这个对象实现不了的方法 观察者:观察者模式是建立对象间一对多的依赖关系,多个观察者对象同时监听一个主题对象.当这个主题对象发生改变时.会通知观察者,他们会自动更新自己 模板方法:我们把不变的行为搬到超类,将可变的部分放入子类. 优点:帮助

[swift]技术分享-数据库开发基本使用

? ?MAKE BY - LJW -------转载请注明出处-------? 数据库 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库 ? 嵌入式/移动客户端使用SQLite ? iOS中数据存储的方式: ? Plist(NSArray\NSDictionary):? 特点: 只能存储系统自带的数据类型, 比如NSDictory, NSArray等等. 自定义的对象无法存储 ?????plist文件存储一般都是存取字典和数组,直接写成plist文件,把它存到应用沙盒当中.

iOS中 FMDB第三方SQLite数据库 UI_20

1.什么是FMDB? FMDB是iOS平台下SQLite数据库,只不过它是OC方式封装了C语言的SQLite语句,使用起来更加面向对象 2.FMDB的优点:1.使用起来更加面向对象; 2.对比苹果自带的 Core Data 数据管理工具更加的轻量级,更加的灵活,而且FMDB支持跨平台; 3.提供多线程下的数据安全保护机制,有效地防止数据混乱 3.FMDM中重要的类: FMDBDataBase: 它代表一个数据库对象,(我们需要创建数据库对象时就使用这个类) FMDBDataBaseQueue:

iOS开发数据库篇—SQLite简单介绍

转自:http://www.cnblogs.com/wendingding/p/3868893.html 一.离线缓存 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等. 说明:离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式 (1)归档:NSCodeing.NSKeyedArchiver (2)偏好设置:NSUserDefaults (3)Plist存储:writeToFile 提示:上述三种方法都有一个致命的缺点,那就是都无法存储大批量的数据,有性能的问题.

iOS 中SQLite数据库操作

在iOS中实现SQLite数据库的操作:1.导入框架(libsqlite3.0.tbd) 2.导入头文件<sqlite3.h> 3.实现数据的增删改查 实现简单 SQLite数据库操作 的 demo 具体过程: 1.创建名为 SQLite_Manage 的.h .m 文件,导入头文件 <sqlite3.h> 2.数据库在一个app中只有一个,使用单例模式:(代码如下) 1 + (SQLite_Manager *)sharedManager{ 2 static SQLite_Mana

IOS SQLite数据库

简介 在IOS中使用Sqlite来处理数据.如果你已经了解了SQL,那你可以很容易的掌握SQLite数据库的操作. 实例步骤 1.创建一个简单的View based application 2.选择项目文件,然后选择目标,添加libsqlite3.dylib库到选择框架 3.通过选择" File-> New -> File... -> "选择 Objective C class 创建新文件,单击下一步 4."sub class of"为NSObje

IOS开发-数据持久化(二)【sqlite数据库】

概要 本章主要简示了IOS开发中使用sqlite来持久化数据,其使用方法和C++中使用sqlite基本一致. 结果展示 (其实没啥看的) 流程概要 1.因为使用的是以前的工程,所以主需要再拖拉两个按钮就差不多了 2.因为要使用sqlite,所以需要引用sqlite库(sqlite框架),在工程设置里面的,如下图所示 3.在原先的序列化类里面添加保存和加载数据到数据库的函数,即可,具体见代码. 主要代码 数据库操作代码 -(id)initWithFilePath:(NSString*)file {

iOS开发数据库篇—SQLite的应用

iOS开发数据库篇—SQLite的应用 一.简单说明 在iOS中使用SQLite3,首先要添加库文件libsqlite3.dylib和导入主头文件. 导入头文件,可以使用库中的函数(是纯C语言的) 二.具体说明 新建一个项目,在项目的主界面中放四个按钮(分别是,增加.删除.修改.查询). 1.sqlite3_open(<#const char *filename#>, <#sqlite3 **ppDb#>)函数的一些说明: (1)作用:把一个文件名称传递给他,它会自动检测这个文件是