1.为什么要使用SQLite3?

•大量数据需要存储
•管理数据,存储数据
 
SQLite是一种关系型数据库(也是目前移动客户端的主流数据库)
 
 

2.SQLite3的几种存储类型 

 
a.NULL: 表示该值为NULL值
b.INTEGER: 无符号整型值
c.REAL: 浮点值
d.TEXT: 文本字符串
e.BLOB: 二进制数据(比如文件)
 
•实际上SQLite是无类型的,建表时声明或不声明类型都可以,也就意味着创表语句可以这么写:

create table t_student(name, age);

但为了保持良好的编程规范,方便程序员之间的交流,编写建表语句的时候最好加上每个字段的具体类型
 
 

3.SQLite3的具体实现 

3.1  

•在iOS中要使用SQLite3,需要添加库文件:libsqlite3.dylib并导入主头文件,这是一个C语言的库
 

3.2  

创建数据库(sqlite3_opendb)

 // 设置沙盒中的文件路径
// 提示:在自己开发中,不要用.db结尾的sqlite数据库文件名
NSString *dbPath = [@"readme.db" appendDocumentDir];
NSLog(@"%@", dbPath); /**
sqlite3_open 1) 如果数据库存在,直接打开
2) 如果数据库不存在,先创建数据库文件,再打开
*/
_db = NULL; if (SQLITE_OK == sqlite3_open([dbPath UTF8String], &_db)) {
NSLog(@"数据库打开成功");
} else {
NSLog(@"数据库打开失败");
}

3.3  

1.单步执行操作(sqlite3_exec)
#pragma mark 单步执行SQL
- (void)execSQL:(NSString *)sql message:(NSString *)message
{
// 执行SQL语句 char *errmsg = NULL;
if (SQLITE_OK == sqlite3_exec(_db, [sql UTF8String], NULL, NULL, &errmsg)) {
NSLog(@"%@成功!", message);
} else {
// C语言中字符串输出应该用%s
NSLog(@"%@失败 - %s", message, errmsg);
}
}
 
2.创建数据表
     // 1. 检查沙盒,判断数据库文件是否存在,如果存在就不再建表;
// 2. 数据库的方法:IF NOT EXISTS,放在表名之前即可
// 定义SQL语句
NSString *sql = @"CREATE TABLE IF NOT EXISTS T_Person (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT, gender INTEGER, age INTEGER, height REAL)"; [self execSQL:sql message:@"创建数据表"];
 
4.插入数据
     // 1. SQL
NSString *sql = [NSString stringWithFormat:@"INSERT INTO T_Person (name, gender, age, height) VALUES ('%@', %d, %d, %f)", person.name, person.gender, person.age, person.height]; [self execSQL:sql message:@"新增个人记录"];
5.更新数据
 //修改
- (void)updatePerson:(Person *)person{ NSString *sql = [NSString stringWithFormat:@"update t_Person set name = '%@' where id=%d",person.name,person.ID]; [self execSQL:sql msg:@"修改"]; }
6.删除数据
 //删除
- (void)removePerson:(NSInteger)personID{ NSString *sql = [NSString stringWithFormat:@"delete from t_Person where id=%d",personID]; [self execSQL:sql msg:@"删除"]; }
7.查询操作
–sqlite3_prepare_v2检查sql的合法性
–sqlite3_step逐行获取查询结果
–sqlite3_coloum_xxx获取对应类型的内容
–sqlite3_finalize释放stmt
  // 1. SQL
NSString *sql = @"SELECT id, name, age, gender, height FROM T_Person"; // 2. 查询语句通常是使用字符串拼接出来的
// 因此,在正常使用查询语句之前,需要检查SQL语句的语法正确!
sqlite3_stmt *stmt = NULL; if (SQLITE_OK == sqlite3_prepare_v2(_db, [sql UTF8String], -, &stmt, NULL)) {
NSLog(@"语法正确");
// 利用句柄,逐一查询符合条件的数据
// sqlite3_step 每次提取一条查询的记录行,不断重复,一直取到最后一条记录位置
while (SQLITE_ROW == sqlite3_step(stmt)) {
// 取到行信息,逐一获取每一列的内容
// iCol对应的就是SQL语句中字段的顺序,从0开始
// 根据实际查询字段的属性,使用sqlite3_column_xxx取得对应的内容即可
int ID = sqlite3_column_int(stmt, );
const unsigned char *name = sqlite3_column_text(stmt, );
int age = sqlite3_column_int(stmt, );
int gender = sqlite3_column_int(stmt, );
CGFloat height = sqlite3_column_double(stmt, ); // const unsigned char *直接输出看不出结果,需要转换
NSString *nameUTF8 = [NSString stringWithUTF8String:(const char *)name]; Person *p = [Person personWithID:ID name:nameUTF8 age:age gender:gender height:height]; NSLog(@"%@", p);
}
} else {
NSLog(@"语法错误");
}

作者: 清澈Saup
出处:http://www.cnblogs.com/qingche/
本文版权归作者和博客园共有,欢迎转载,但必须保留此段声明,且在文章页面明显位置给出原文连接。

iOS- 简单说说iOS移动客户端SQLite3的基本使用的更多相关文章

  1. 一步一步拆解一个简单的iOS轮播图(三图)

    导言(可以不看): 不吹不黑,也许是东半球最简单的iOS轮播图拆分注释(讲解不敢当)了(tree new bee).(一句话包含两个人,你能猜到有谁吗?提示:一个在卖手机,一个最近在卖书)哈哈... ...

  2. iOS 简单工厂模式

    iOS 简单工厂模式 什么是简单工厂模式? 简单工厂模式中定义一个抽象类,抽象类中声明公共的特征及属性,抽象子类继承自抽象类,去实现具体的操作.工厂类根据外界需求,在工厂类中创建对应的抽象子类实例并传 ...

  3. 【iOS 初见】第一个简单的 iOS 应用

    本实例来自 <iOS编程(第4版)>,介绍如何编写一个简单的 iOS 应用. 功能为:在视图中显示一个问题,用户点击视图下方的按钮,可以显示相应的答案,用户点击上方的按钮,则会显示一个新的 ...

  4. 简单讲解iOS应用开发中的MD5加密的相关使用

      简单讲解iOS应用开发中的MD5加密的相关使用   作者:文顶顶 字体:[增加 减小] 类型:转载 时间:2015-12-19 我要评论 这篇文章主要介绍了iOS应用开发中的MD5加密的相关使用, ...

  5. iOS 简单引导界面

    代码地址如下:http://www.demodashi.com/demo/11607.html 前言 现在很多APP在用户第一次用的时候,由于用户可能并不知道其中一些功能点的时候,这个时候就需要我们来 ...

  6. IOS学习:ios中的数据持久化初级(文件、xml、json、sqlite、CoreData)

    IOS学习:ios中的数据持久化初级(文件.xml.json.sqlite.CoreData) 分类: ios开发学习2013-05-30 10:03 2316人阅读 评论(2) 收藏 举报 iOSX ...

  7. iOS开发 - 兼容iOS 10

    1.Notification(通知) 自从Notification被引入之后,苹果就不断的更新优化,但这些更新优化只是小打小闹,直至现在iOS 10开始真正的进行大改重构,这让开发者也体会到UserN ...

  8. iOS 1 到 iOS 10 ,我都快老了

    iOS 1:iPhone诞生 虽然很难想像,但初代iPhone在问世时在功能方面其实远远落后于那时的竞争对手,比如Windows Mobile.Palm OS.塞班.甚至是黑莓.它不支持3G.多任务. ...

  9. IOS学习之IOS沙盒(sandbox)机制和文件操作

    IOS学习之IOS沙盒(sandbox)机制和文件操作(一) 1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都 ...

  10. IOS 动画专题 --iOS核心动画

    iOS开发系列--让你的应用“动”起来 --iOS核心动画 概览 通过核心动画创建基础动画.关键帧动画.动画组.转场动画,如何通过UIView的装饰方法对这些动画操作进行简化等.在今天的文章里您可以看 ...

随机推荐

  1. 解决应用程序无法正常启动0xc0150002等问题

    1.在程序运行出错的时候,右键“我的电脑”,然后点击“管理”→“事件查看器”→“Windows 日志”→“应用程序”,查看错误信息: 1> “E:\IPCam_share\ARP\數據處理\Hg ...

  2. MAC下SecureCRT 8.0.4破解版远程连接工具的安装与配置

    一 SCRT的软件的安装:首先访问 http://xclient.info/s/securecrt.html?_=4365bb5cf097dc2c135a57c2ce30b264 选择8.0.4的版本 ...

  3. 统一建模语言——UML

    一.UML概述 Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的 ...

  4. mfc通过MapWinGIS控件读取shp文件(通过#import实现)

    在MFC工程中想使用MapWinGIS组件,有多种方法可以实现, 第一种方法,#Import来实现 1.首先注册MapWinGIS ActiveX组件, 2.新建一个单文档工程:MapGis,为控件添 ...

  5. EWS3-24S05电源转换芯片DC-DC

    1. EWS3-24S05是24V转5V的DC-DC电源,输入和输出都是直流电. 2. 典型应用 3. 引脚图 4. 使用注意事项: 输入电源的要求 输入电源的要求产品的输入端必需接一个低阻抗的电压源 ...

  6. Fiddler使用总结(二)

    在上一篇中介绍了Fiddler的基本使用方法.通过上一篇的操作我们可以直接抓取浏览器的数据包.但在APP测试中,我们需要抓取手机APP上的数据包,应该怎么操作呢? Andriod配置方法: .确保手机 ...

  7. grep命令及正则

    文本查找 grep,egrep,fgrep grep :Global Research 根据模式搜索文本,并将符合模式的文本行显示出来 模式:Pattern,文本字符和正则的元字符组合而成匹配条件 g ...

  8. 【Mybatis】 逆向生成工程

    前言: 必需学会Maven and SQL基础知识 简介: 通过 Maven, Mybatis 逆向生成 Pojo, Mapper, Example(本章屏蔽了) 工具: JDK8 apache-ma ...

  9. 如何搭建本地svn服务器和搭建本地Git服务器

    搭建git本地服务器使用的软件有很多,例如:gitlab,gitblit,gitbucket,gogs,gitolite,具体比较:http://softlab.sdut.edu.cn/blog/su ...

  10. leetcode-单词探索

    单词搜索     给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格.同一个单元格内的字母 ...