首页 / IOS / SQLite在iOS开发中的使用
SQLite在iOS开发中的使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了SQLite在iOS开发中的使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2438字,纯文字阅读大概需要4分钟。
内容图文
1. 准备工作
iOS的SQLite使用了原生的C函数库,要使用它需要先完成下面两步:
- 为项目增加libsqlite3.dylib (总是代表最新版本的SQLite 3)
- 在需要使用SQLite API的文件中包含sqlite3.h
2. 使用步骤
2.1 打开数据库
// 声明一个sqlite3的指针变量
sqlite3 *database;
// 打开数据库文件,如果不存在则会新建
ret = sqlite3_open("/Users/DS/Desktop/db.sqlite", &database);
if (ret != SQLITE_OK) {
NSLog(@"打开数据库失败!");
}
2.2 使用数据库
2.2.1 使用sqlite3_exec()
不支持SQL语句中的占位符,访问数据集需要使用回调函数。
如果不需要访问返回的数据集,则第3、4个参数传NULL或者0
int n = 44;
char *errmsg;
char *sql = "SELECT * FROM seller;";
// 参数1:sqlite3结构体指针
// 参数2:要执行的sql语句,如果是单句,可以省略尾部分号
// 参数3:回调函数(声明形式参见callback函数),每返回一条记录会被调用一次
// 参数4:本参数会作为回调函数的第一个参数
// 参数5:返回错误描述
// 返回值:参看对应的宏声明,正确执行返回SQLITE_OK
int ret = sqlite3_exec(database, sql, &callback, &n, &errmsg);
if (ret != SQLITE_OK) {
NSLog(@"执行SQL语句失败!");
}
/**
* sqlite3返回数据集时,每一条记录都会调用一次本函数
*
* @param parameter sqlite3_exec()第四个参数传递进来的值
* @param col_count 列的数量
* @param col_value 一维数组,保存了每一列的值
* @param col_name 一维数组,保存了每一列的名称
*
* @return 如果返回0,继续查询;如果返回1,终止查询
*/
int callback(void *parameter, int col_count, char **col_value, char **col_name) {
for (int i = 0; i < col_count; i++) {
printf("%s ", col_value[i]);
}
printf("\n");
return 0;
}
2.2.2 使用sqlite3_prepare_v2()
/sqlite3_step()
支持SQL语句中的占位符,访问数据集比较方便。
// 1. 使用sqlite3_open()函数打开指定的数据库文件,如果文件不存在则新建
ret = sqlite3_open([dbFilename UTF8String], &database);
if (ret != SQLITE_OK) return YES;
// 带有占位符的SQL(当然也能使用不带占位符的)
sql = "SELECT * FROM seller WHERE sex = ? AND name = ?;";
// 2. 声明一个指向sqlite3_stmt结构体的指针
sqlite3_stmt *stmt;
// 3. 对SQL语句预处理
// 参数1:sqlite3结构体指针
// 参数2:要执行的sql语句,如果是单句,可以省略尾部分号
// 参数3:要预处理的字节数(如果指定的大小超过字符串长度,则按照实际的长度计算。-1代表整个字符串)
// 参数4:返回的sqlite3_stmt结构体指针
// 参数5:指向SQL未处理部分的首地址(取决于第三个参数)
ret = sqlite3_prepare_v2(database, sql, -1, &stmt, NULL);
if (ret == SQLITE_OK) {
// 绑定参数(用于替换SQL中的占位符)
// 使用sqlite3_bind_xxx系列函数
// 第二个参数为对应占位符在整个SQL语句中的顺序值,从1开始
// 第三个参数为参数值
sqlite3_bind_int(stmt, 1, 1);
sqlite3_bind_text(stmt, 2, "skee", -1, NULL);
// 使用sqlite3_step()执行SQL语句
// 如果返回的是数据集,那么每调用一次则返回下一条记录
while (sqlite3_step(stmt) == SQLITE_ROW) {
// 使用sqlite3_column_xxx系列函数获取一条记录中指定列的值
// 列索引从0开始
int ID = sqlite3_column_int(stmt, 0);
const unsigned char *name = sqlite3_column_text(stmt, 1);
int sex = sqlite3_column_int(stmt, 2);
printf("%d | %s | %d\n", ID, name, sex);
}
}
// 4. 释放stmt
sqlite3_finalize(stmt);
// 5. 关闭数据库
sqlite3_close(database);
2.3 关闭数据库
// 关闭数据库
sqlite3_close(database);
原文:http://www.cnblogs.com/tang910103/p/5122108.html
内容总结
以上是互联网集市为您收集整理的SQLite在iOS开发中的使用全部内容,希望文章能够帮你解决SQLite在iOS开发中的使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。