•SQLite编码
•讲师:李明杰
•技术博客:http://www.cnblogs.com/mjios
•SQLite3
•在iOS中使用SQLite3,首先要添加库文件libsqlite3.dylib和导入主头文件
•创建、打开、关闭数据库
•创建或打开数据库

// path为:~/Documents/person.db

sqlite3 *db = NULL;

int result = sqlite3_open([path UTF8String], &db);

•代码解析:
usqlite3_open()将根据文件路径打开数据库,如果不存在,则会创建一个新的数据库。如果result等于常量SQLITE_OK,则表示成功打开数据库
usqlite3 *db:一个打开的数据库实例
u数据库文件的路径必须以C字符串(而非NSString)传入
•关闭数据库:sqlite3_close(db);
•执行不返回数据的SQL语句
•执行创表语句

char *errorMsg = NULL;  // 用来存储错误信息

char *sql = "create table if not exists t_person(id integer primary key autoincrement, name text, age integer);";

int result = sqlite3_exec(db, sql, NULL, NULL, &errorMsg);

•代码解析:
usqlite3_exec()可以执行任何SQL语句,比如创表、更新、插入和删除操作。但是一般不用它执行查询语句,因为它不会返回查询到的数据
usqlite3_exec()还可以执行的语句:
①开启事务:begin transaction;
②回滚事务:rollback;
③提交事务:commit;
•带占位符插入数据

char *sql = "insert into t_person(name, age) values(?, ?);";

sqlite3_stmt *stmt;

if (sqlite3_prepare_v2(db, sql, -1, &stmt, NULL) == SQLITE_OK) {

sqlite3_bind_text(stmt, 1, "母鸡", -1, NULL);

sqlite3_bind_int(stmt, 2, 27);

}

if (sqlite3_step(stmt) != SQLITE_DONE) {

NSLog(@"插入数据错误");

}

sqlite3_finalize(stmt);

•代码解析:
usqlite3_prepare_v2()返回值等于SQLITE_OK,说明SQL语句已经准备成功,没有语法问题
•带占位符插入数据
usqlite3_bind_text():大部分绑定函数都只有3个参数
①第1个参数是sqlite3_stmt *类型
②第2个参数指占位符的位置,第一个占位符的位置是1,不是0
③第3个参数指占位符要绑定的值
④第4个参数指在第3个参数中所传递数据的长度,对于C字符串,可以传递-1代替字符串的长度
⑤第5个参数是一个可选的函数回调,一般用于在语句执行后完成内存清理工作
usqlite_step():执行SQL语句,返回SQLITE_DONE代表成功执行完毕
usqlite_finalize():销毁sqlite3_stmt *对象
•查询数据

char *sql = "select id,name,age from t_person;";

sqlite3_stmt *stmt;

if (sqlite3_prepare_v2(db, sql, -1, &stmt, NULL) == SQLITE_OK) {

while (sqlite3_step(stmt) == SQLITE_ROW) {

int _id = sqlite3_column_int(stmt, 0);

char *_name = (char *)sqlite3_column_text(stmt, 1);

NSString *name = [NSString stringWithUTF8String:_name];

int _age = sqlite3_column_int(stmt, 2);

NSLog(@"id=%i, name=%@, age=%i", _id, name, _age);

}

}

sqlite3_finalize(stmt);

•代码解析
usqlite3_step()返回SQLITE_ROW代表遍历到一条新记录
usqlite3_column_*()用于获取每个字段对应的值,第2个参数是字段的索引,从0开始

SQLite编码的更多相关文章

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

    iOS开发数据库篇—SQLite常用的函数 一.简单说明 1.打开数据库 int sqlite3_open( const char *filename,   // 数据库的文件路径 sqlite3 * ...

  2. SQLite简单介绍

    一.离线缓存 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等. 说明:离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式 (1)归档:NSCodeing.NSKeyed ...

  3. iOS开发系列-SQLite

    概述 SQLite3是一款轻型的嵌入式数据库.它占用资源非常低,在嵌入式设备中,可能只需要几百K的内存就够了.它的处理速度比Mysql.PostgreSQL这两款著名的数据库速度还快. 数据库简介 常 ...

  4. 数据存储_SQLite常用的函数

    一.简单说明 1.打开数据库 int sqlite3_open( const char *filename,   // 数据库的文件路径 sqlite3 **ppDb            // 数据 ...

  5. iOS开发针对SQL语句的封装

      1.使用依赖关系 a.需要添加libsqlite3.tbd 静态库. b.需要添加第三方框架 FMBD.MJExtension. 2. SQL语句类封装名DataBaseSqlTool 类方法介绍 ...

  6. IOS-SQLite3

    iOS中的数据存储方式 Plist(NSArray\NSDictionary) Preference(偏好设置\NSUserDefaults) NSCoding(NSKeyedArchiver\NSk ...

  7. iOS-数据持久化之Sqllite

    iOS中的数据存储方式 Plist(NSArray\NSDictionary) Preference(偏好设置\NSUserDefaults) NSCoding(NSKeyedArchiver\NSk ...

  8. 关于Androdi中SQLITE 3采用GBK编码存储,数据库中文乱码问题。

    1.最近开发一个项目,用SQLite Expert Personal打开数据库如下图,title会产生乱码,问题. 2.由于SQL lite默认是存储UTF-8格式,后来更改数据库编码类型为ANSI, ...

  9. SQLite使用(二)&&数据类型

    1.概述 我们熟知的数据库引擎大部分采用静态数据类型,即列定义的类型定义了值的存储,并且值要严格满足列的定义,同一列所有值的存储方式都相同,比如定义了一个列类型为整型 int,不能在该列上输入'abc ...

随机推荐

  1. actionbar-displayOptions 属性分析

    displayOptions 这个属性主要是控制这actionbar 上返回按钮.标题等的显示.它作为 actionBarStyle 的一个item,如下 <style name="A ...

  2. Android 为什么要有handler机制?handler机制的原理

    为什么要有handler机制? 在Android的UI开发中,我们经常会使用Handler来控制主UI程序的界面变化.有关Handler的作用,我们总结为:与其他线程协同工作,接收其他线程的消息并通过 ...

  3. COGS——C 14. [网络流24题] 搭配飞行员

    http://cogs.pro/cogs/problem/problem.php?pid=14 ★★☆   输入文件:flyer.in   输出文件:flyer.out   简单对比时间限制:1 s  ...

  4. c编程:僵尸吃大脑

    第一行输入一个正整数n 以下每一行输入僵尸已经吃了的大脑数量a,和需要生存必需要吃的大脑数量b.总共n行. 例子输入 3 4 5 3 3 4 3 例子输出 NO BRAINS MMM BRAINS M ...

  5. JS面向对象程序设计(OOP:Object Oriented Programming)

    你是如何理解编程语言中的面向对象的? 我们研究JS和使用JS编程本身就是基于面向对象的思想来开发的,JS中的一切内容都可以统称为要研究的“对象”,我们按照功能特点把所有内容划分成“几个大类,还可以基于 ...

  6. 快速创建SSH信任实现无密码登录

    1. 生成本机的公私钥匙对[oracle@Oracle11_2 scripts]$ -t rsa Generating public/private rsa key pair. Enter file ...

  7. VMware Windows安装详细过程(详细图解)

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 一.概论 简介:虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算 ...

  8. 每天自动备份MySQL数据库的shell脚本

    经常备份数据库是一个好习惯,虽然数据库损坏或数据丢失的概率很低,但一旦发生这种事情,后悔是没用的.一般网站或应用的后台都有备份数据库的功能按钮,但需要去手工执行.我们需要一种安全的,每天自动备份的方法 ...

  9. Oracle数据库(三)

    专题一:oracle查询 1.where查询 查询部门编号是1的部门信息 ; 查询姓名是kw的员工,字符串使用‘’,内容大小写敏感 select *from emp where name='kw' 查 ...

  10. SIMPLE QUERY几个原则

    1.减少查询对象的数据页(db block)数量. 尽量避免使用 * 用准确的列明减少不必要的一些资源浪费.   2.查看是否使用了index. 索引是SQL性能调优的重要手段,下面几个是有索引不能使 ...