iPhone编程:SQLite中如何用API操作BLOB类型字段
iPhone编程:SQLite中如何用API操作BLOB类型字段是本文要介绍的内容,在实际的编程开发当中我们经常要处理一些大容量二进制数据的存储,如图片或者音乐等等。对于这些二进制数据(blob字段)我们不能像处理普通的文本那样简单的插入或者查询,为此SQLite提供了一组函数来处理这种BLOB字段类型。
下面的代码演示了如何使用这些API函数。
首先我们要建立一个数据库:
sqlite3_exec(db, "CREATE TABLE list (fliename varchar(128) UNIQUE, fzip blob);", 0, 0, &zErrMsg); /由于mmmm.rar是一个二进制文件,所以要在使用insert语句时先用?号代替 sqlite3_prepare(db, "insert into list values ('mmmm.rar',?);", -1, &stat, 0); FILE *fp; long filesize = 0; char * ffile; fp = fopen("mmmm.rar", "rb"); if(fp != NULL) { //计算文件的大小 fseek(fp, 0, SEEK_END); filesize = ftell(fp); fseek(fp, 0, SEEK_SET); //读取文件 ffile = new char[filesize+1]; size_t sz = fread(ffile, sizeof(char), filesize+1, fp); fclose(fp); } //将文件数据绑定到insert语句中,替换“?”部分 sqlite3_bind_blob(stat, 1, ffile, filesize, NULL); //执行绑定之后的SQL语句 sqlite3_step(stat);
这时数据库当中已经有了一条包含BLOB字段的数据。接下来我们要读取这条数据:
//选取该条数据 sqlite3_prepare(db, "select * from list;", -1, &stat, 0); sqlite3_step(stat); //得到纪录中的BLOB字段 const void * test = sqlite3_column_blob(stat, 1); //得到字段中数据的长度 int size = sqlite3_column_bytes(stat, 1); //拷贝该字段 sprintf(buffer2, "%s", test);
相关推荐
liuxudong00 2020-11-19
章鱼之家 2020-10-29
leitingdulante 2020-10-21
xuegangic 2020-10-17
硬币0 2020-10-15
ZuoYanDeHuangHun 2020-09-18
chsoft 2020-09-17
MatrixHero 2020-08-20
XxZproject 2020-08-10
定格 2020-08-15
Mryiyi 2020-08-07
ydc0 2020-07-30
yechen00 2020-07-25
孝平 2020-07-18
ntfsformac 2020-06-23
好好学习天天 2020-06-12
Charliewolf 2020-06-05
MAC2007 2020-06-04
fanxiaoxuan 2020-06-03