c/c++接口嵌入式sqlite使用小结
2013-09-29 21:41
781 查看
本文以Mac OS下Xcode IDE为背景...
可以先看看我对An Introduction To The SQLite C/C++
Interface的翻译,对SQLite有个基本的了解
http://blog.csdn.net/u010761652/article/details/12177249
注意,如果目录没有这个文件的话,就会创建一个
其中第一个参数必须是可移植的C字符串,也就是UTF8
注意一下,其实sqlite3_exec()就是把sqlite3_stmt.. ; sqlite3_prepare_v2()这些语句包装起来的一种方便快捷的方法
可以先看看我对An Introduction To The SQLite C/C++
Interface的翻译,对SQLite有个基本的了解
http://blog.csdn.net/u010761652/article/details/12177249
准备工作:
首先需要在项目的Bulid Phases下导入sqlite动态链接库:libsqlite3.dylib, 然后#import <sqlite3.h>头文件
几个基本语句:
1. 创建和打开数据库:
sqlite3 *database; int result = sqlite3_open("/Users/lin/Desktop/sqlite/data.sqlite", &database);
注意,如果目录没有这个文件的话,就会创建一个
其中第一个参数必须是可移植的C字符串,也就是UTF8
2.关闭数据库:
sqlite3_close(database);
3.创建表:
char *errorMsg; NSString *createSQL = @"CREATE TABLE TEST (ID INTEGER PRIMARY KEY AUTOINCREMENT, FIELD_DATA TEXT)"; //声明一条SQL语句 int result = sqlite3_exec(database, [createSQL UTF8String], NULL, NULL, &errorMsg); // 执行成功的话sqlite3_exec返回常量SQLITE_OK
4.检索表:
NSString *query = @"SELECT ID, FIELD_DATA FROM TEST ORDER BY ID"; sqlite3_stmt *statement; int result = sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, nil); // 第三个参数用于指定第二个参数的可用长度, -1表示使用全长 if (result){ //如果语句执行成功,则一步一步调试结果集 while (sqlite3_step(statement) == SQLITE_ROW){ int rowNum = sqlite3_column_int(statement, 0); //第一次执行while时获取第一行第一列的值,第二次执行时获取第二行第二列的值....... char *rowData = (char *)sqlite3_column_text(statement, 1); //同上,获取的是第二列的值 NSLog("%i: %@\n", rowNum, [NSString stringWithCString:rowData encoding:UTF8Char]); } } sqlite3_finalize(statement);// 一定要加上次句,以防止内存溢出
注意一下,其实sqlite3_exec()就是把sqlite3_stmt.. ; sqlite3_prepare_v2()这些语句包装起来的一种方便快捷的方法
5.插入数据:
就像我们在一个printf第一个参数中插入占位符以打印出变量一样, 在INSERT语句中我们通过一种叫绑定变量的方法插入变量,如下所示:char *sql = "INSERT INTO TEST VALUES (?, ?);"; sqlite3_stmt *statement; if (sqlite3_prepare_v2(database, sql, -1, &statement, nil) == SQLITE_OK){ sqlite3_bind_int(statement, 1, 235); //把第一个?用235替换,当然也可以用任意的变量替换 sqlite3_bind_text(statement, 2, "Bar", -1, NULL); } if (sqlite3_step(statement) != SQLITE_DONE){ // handle the error } sqlite3_finalize(statement);
相关文章推荐
- 嵌入式 sqlite3命令行使用小结
- Sqlite3的使用小结(不定期更新)
- 使用C++模板封装SQLite(完整版)
- 给用C++写的dll写一个接口函数供C#使用
- C++下使用sqlite简明示例
- c++构建工具之cmake使用小结
- C++使用SQLite步骤及示例
- Eclipse开发C/C++之使用技巧小结,写给新手
- 【Caffe的C++接口使用说明(一)】caffe_windows下的第一个测试程序学习教程
- throw()使用小结:More effective C++:审慎使用异常规格(转),简单举例
- 【Caffe的C++接口使用说明四)】Caffe中分类C++接口Demo源代码的解析
- 【Caffe的C++接口使用说明五)】win10+cuda7.5+caffe+vs2013环境搭建(CPU版本)
- Sqlite 嵌入式数据库移植和使用
- c++中强制类型转换操作符小结--使用
- C++中Cstring使用小结
- java Comparable接口与Comparator接口使用小结
- C++使用IFileSystemImage接口创建.iso镜像文件
- 将sqlite3编译成给WINCE使用的DLL,并封装成C++的步骤(使用VS2005)
- SQLite3 C/C++ 开发接口简介(API函数) 三
- SQLite剖析(3):C/C++接口介绍