iOS:本地数据库sqlite3的使用

一、数据库的概念:

1.、什么是数据库

  SQL Server 2010、Oracle、MySQL

  关系数据库

  NoSQL数据库-非关系型数据库

  数据库主要由表组成

  表由字段组成

  数据 就是表中的记录

  表间的关系:一对一、一对多(订单:订单的头和订单明细)

  外键

  主键:建立索引,不能重复

2、SQL(结构化查询语言)语句

  A、数据操作的SQL语句:

     2.1 查询

       select(字段名) from(表名);

       where 子句:定义查询条件

       排序:order by 字段名 (asc,desc)

       分组:group by 字段名

    2.2 删除

    delete from(表名)  where name = @“admin”;

    2.3 插入

  insert into(表名)(字段列表) values(字段列表对应的字段值);

    2.4 更新

update(表名) set 字段=值 where 子句;

  B、对数据库维护的SQL语句:

    创建表:

    create table (表名) (定义字段:字段名 字段类型);

sqlite3 数据库名    //在终端下进入某一个本地的数据库(如果不存在就自动创建一个)

 .schema 表名  //在终端下可以快速查看某一个表中的所有字段

 .table        //在终端下可以查看创建的所有表

   .exit/.quit         //在终端下退出某一个数据库

二、SQLite的基本使用

SQLite支持的常见数据类型如下所示。

–INTEGER 有符号的整数类型

–REAL 浮点类型

–TEXT 字符串类型,采用UTF-8和UTF-16字符编码

–BLOB 二进制大对象类型,能够存放任何二进制数据

(C语言中)使用步骤:

1.新建项目时,先导入系统框架(C语言). (libsqlite3)

2.头文件#import<sqlite3.h>

3. sqlite3_open(fileName.UTF8String, &_db); 打开或者创建一个数据

*_db自己定义一个sqlite3的成员变量.进行增删改查时要用

4.sqlite3_exec(_db, sql, NULL, NULL,&error);  //不带结果集的语句,只是对表做操作,不会返回出结果

*该函数可进行insert,delete,update操作.

5.查询操作select. //带结果集的查询语句,会返回出结果,从表中查询到的数据都会放到stmt结构体中

*sqlite3_prepare_v2(_db, sql, -1, &stmt, NULL);做查询前准备,检测SQL语句是否正确.

*sqlite3_step(stmt) 提取查询到的数据,一次提取一条.//通过循环可以取出所有数据

*sqlite3_column_text(stmt, 0)取出第0列的数据.

6.关闭数据库 sqlite3_close(sqlite3 *);

————————————————————————————————————————————————————

————————————————————————————————————————————————————

执行带参数的SQL语句

NSString *sqlStr = @"INSERT OR REPLACE INTO note (cdate,content) VALUES (?,?)";

sqlite3_stmt *statement;
//预处理过程,产生结果集
if (sqlite3_prepare_v2(db, [sqlStr UTF8String], -1, &statement,

NULL) == SQLITE_OK)

{

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
  NSString *nsdate = [dateFormatter stringFromDate:model.date];

//绑定参数开始
  sqlite3_bind_text(statement, 1, [nsdate UTF8String], -1, NULL);  sqlite3_bind_text(statement, 2, [model.content UTF8String],

-1,    NULL);

//执行插入
if (sqlite3_step(statement) != SQLITE_DONE)

{

NSAssert(NO, @"插入数据失败。"); }

}

}

//清理结果集,防止内存泄露

sqlite3_finalize(statement);

单例模式:(这里主要用来保证初始化的数据库是唯一的,只要创建了一次,那么它就不会被再创建)

+ (NoteDAO*)sharedManager

{

static dispatch_once_t once;

dispatch_once(&once, ^{

sharedManager = [[self alloc] init];

[sharedManager   createEditableCopyOfDatabaseIfNeeded]; }

);

return sharedManager;

}

时间: 2024-10-20 08:01:43

iOS:本地数据库sqlite3的使用的相关文章

数据库sqlite3的使用-ios中引用方法

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

ios开发中的4种数据持久化方式【二、数据库 SQLite3、Core Data 的运用】

               在上文,我们介绍了ios开发中的其中2种数据持久化方式:属性列表.归档解档.本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运用: 在本节,将通过对4个文本框内容的创建.修改,退出后台,再重新回到后台,来认识这两种持久化数据的方式.效果图如下[图1]: [图1 GUI界面效果图] [本次开发环境: Xcode:7.2     iOS Simulator:iphone6S plus   By:啊左]     一.数据库SQL

iOS App初始化或者升级,涉及本地数据库迁移的问题

总体思路 一般app启动之后,都有一个初始化的过程.此外后续app升级,还需要考虑数据迁移.所以初始化和数据迁移的框架,在初期的版本就要考虑好 总结一下我们的app采取的方案: 1.在持久化的文件夹内(比如UserDefaults或者Documents目录),用一个字段保存老版本号 2.在开始初始化之前,读取老版本号,以及当前版本号 3.如果该应用是第一次加载,那么老版本号就取不到(因为是初次加载,这个字段还没有保存),那么就可以执行初始化过程:如果取到了老版本号,就不执行初始化 4.初始化完成

IOS开发-封装数据库sqlite3之为何选择FMDB

为什么使用第三方轻量级框架FMDB? FMDB是用于进行数据存储的第三方的框架,它与SQLite与Core Data相比较,存在很多优势. FMDB是面向对象的,它以OC的方式封装了SQLite的C语言API,使用起来更加的方便,不需要过多的关心数据库操作的知识. 为什么不使用core data和SQLite? Core Data是ORM的一种体现,实现了界面化操作.使用Core Data需要用到模型数据的转化,虽然操作简单,不需要直接操作数据库,但是性能没有直接使用SQLite高.但是SQLi

iOS本地数据存取,这里就够了

iOS本地数据存取,看这里就够了 应用沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒 应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer) 应用沙盒的文件系统目录 应用沙盒结构分析 应用程序包:(上图中的Layer)包含了所有的资源文件和可执行文件 Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录.例如,游戏应用可将游戏存档保存在该目录 tmp:保存应

iOS本地存储1--NSkeyedArchiever归档

28th,March,2016 0 前言 iOS本地数据存储5种方式: 1. NSUserDefaults 偏好设置: 2. plist归档: 3. NSKeyedArchiver归档 加密: 4. SQLite3 嵌入式数据库: 5. Core Data 对象式的嵌入式数据库: 1 NSKeyedArchiver归档 1.0 简介 该方式特点: 存储所有对象类型,加密存储,可自定义对象. 归档方式分为: 1.简单归档 直接将对象存储为根对象: 2.复杂归档 可存储多个对象并设置对应的key:3

数据库(SQLITE3函数总结): sqlite3_open, sqlite3_exec, slite3_close,sqlite3_prepare_v2,sqlite3_column_text,

Sqlite3 的确很好用.小巧.速度快.最近研究它,有一些收获,这里把我对 sqlite3 的研究列出来,以备忘记. 导入SQLLite library并引入头文件. libsqlite3.dylib本身是个链接,在这里它指向libsqlite3.0.dylib.也就是说在这里你添加libsqlite3.dylib和添加libsqlite3.0.dylib其实是添加了同一个文件,没有区别,那为什么要添加libsqlite3.0.dylib呢?原因在于libsqlite3.dylib是旧版的sq

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

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

iOS开发数据库篇—SQLite常用的函数

iOS开发数据库篇—SQLite常用的函数 一.简单说明 1.打开数据库 int sqlite3_open( const char *filename,   // 数据库的文件路径 sqlite3 **ppDb          // 数据库实例 ); 2.执行任何SQL语句 int sqlite3_exec( sqlite3*,                                  // 一个打开的数据库实例 const char *sql,