sqlite 句柄-sqlite 基础教程(3)
http://blog.csdn.net/iukey/article/details/7336369
上一讲的最后我留了点悬念,不知道上一讲看完你有木有疑问。我的疑问就是我创建了一个句柄,但是我怎么知道这个句柄指向的是磁盘上哪个数据库文件呢?我们只是创建了一个指针,指向一个 sqlite3 类型的结构体。里面的数据都是空的或者默认的。我们接下来要做的就是去为这个结构体申请内存并填充这个结构体。是不是感觉又被吓到了?这个结构体这么庞大,我们自己去填充还不的猴年马月啊。一切都不用害怕,并不需要我们显式的去填充它,我们只需要告诉它一些最基本的信息,然后调用API让API去帮我们填充。
目前我们只需要告诉这个结构体一个信息,就是数据库文件的路径。然后调用 sqlite3_open 函数就OK了。
-
SQLITE_API int sqlite3_open(
-
const char *zFilename,
-
sqlite3 **ppDb
-
);
第一个参数是路径,const char * 型,第二个参数是数据库句柄的指针,注意是一个二级指针,我们声明的一级指针,所以我们还要加一个取地址符&,请看我下面的实例:
-
int ret = sqlite3_open( getFilePath(), &pdb);
不要奇怪,其实打开数据库就是获得数据库的一些信息,然后方便我们操纵它,不是吗?通过这个函数 我们把 数据库与 句柄 pdb 绑定在一起了,我们以就通过 这个 pdb 来操纵数据库了。在这个函数中第一个参数是数据库文件的路径(包括文件名),我一般会把路径写成一个函数,这样遵循编码原则(这里用到的原则是一个函数尽量只做一件事情),建议你也这样,好处你自己可以慢慢体会到。我获取路径的函数如下你可以参考一下:
-
const char* getFilePath(){
-
return [[NSString stringWithFormat:@"%@/Documents/db",NSHomeDirectory() ] UTF8String];
-
-
-
}
还有一点就是返回值,返回值我们用来判断是否执行成功。sqlite 中帮我们定义了一系列的宏,用来作为返回值:
-
#define SQLITE_OK 0
-
-
#define SQLITE_ERROR 1
-
#define SQLITE_INTERNAL 2
-
#define SQLITE_PERM 3
-
#define SQLITE_ABORT 4
-
#define SQLITE_BUSY 5
-
#define SQLITE_LOCKED 6
-
#define SQLITE_NOMEM 7
-
#define SQLITE_READONLY 8
-
#define SQLITE_INTERRUPT 9
-
#define SQLITE_IOERR 10
-
#define SQLITE_CORRUPT 11
-
#define SQLITE_NOTFOUND 12
-
#define SQLITE_FULL 13
-
#define SQLITE_CANTOPEN 14
-
#define SQLITE_PROTOCOL 15
-
#define SQLITE_EMPTY 16
-
#define SQLITE_SCHEMA 17
-
#define SQLITE_TOOBIG 18
-
#define SQLITE_CONSTRAINT 19
-
#define SQLITE_MISMATCH 20
-
#define SQLITE_MISUSE 21
-
#define SQLITE_NOLFS 22
-
#define SQLITE_AUTH 23
-
#define SQLITE_FORMAT 24
-
#define SQLITE_RANGE 25
-
#define SQLITE_NOTADB 26
-
#define SQLITE_ROW 100
-
#define SQLITE_DONE 101
-
有了这些我们就可以更加方便地调试我们的代码了。
好了,进入正题,上面这个函数就是在数据库存在的情况下打开数据库,不存在的情况下创建数据库,数据库的名字可以随便乱取,只要是ASCII字符就好了,因为sqlite数据库本来就是一个ASCII文件(所以它的安全性还是不大行的,不过作为本地数据库没啥问题)。
数据库打开后我们就可以进行一系列的增删查改的操作了,操作完毕我们就要关闭数据库,不是么?否则怎么释放资源呢?
关闭也很简单:
-
SQLITE_API int sqlite3_close(sqlite3 *db);
这个就不用解释了吧,直接看我的实例:
好了,这一节又讲完了。是不是觉得很简单。OK,期待下一节吧,下一节我们学习:创建表。
阅读(589) | 评论(0) | 转发(0) |