iPhone编程:SQLite中如何用API操作BLOB类型字段

移动开发 iOS
对于这些二进制数据(blob字段)我们不能像处理普通的文本那样简单的插入或者查询,为此SQLite提供了一组函数来处理这种BLOB字段类型。

iPhone编程:SQLite中如何用API操作BLOB类型字段是本文要介绍的内容,在实际的编程开发当中我们经常要处理一些大容量二进制数据的存储,如图片或者音乐等等。对于这些二进制数据(blob字段)我们不能像处理普通的文本那样简单的插入或者查询,为此SQLite提供了一组函数来处理这种BLOB字段类型。

下面的代码演示了如何使用这些API函数。

首先我们要建立一个数据库:

  1. sqlite3_exec(db, "CREATE TABLE list (fliename varchar(128) UNIQUE, fzip blob);", 0, 0, &zErrMsg);    
  2.  
  3. /由于mmmm.rar是一个二进制文件,所以要在使用insert语句时先用?号代替    
  4.     sqlite3_prepare(db, "insert into list values ('mmmm.rar',?);", -1, &stat, 0);    
  5.     FILE *fp;    
  6.   long filesize = 0;    
  7.   char * ffile;    
  8.    fp = fopen("mmmm.rar", "rb");    
  9.    if(fp != NULL)    
  10.   {    
  11.       //计算文件的大小    
  12.        fseek(fp, 0, SEEK_END);    
  13.       filesize = ftell(fp);    
  14.       fseek(fp, 0, SEEK_SET);    
  15.         //读取文件    
  16.        ffile = new char[filesize+1];    
  17.        size_t sz = fread(ffile, sizeof(char), filesize+1, fp);    
  18.       fclose(fp);    
  19.     }    
  20.     //将文件数据绑定到insert语句中,替换“?”部分    
  21.     sqlite3_bind_blob(stat, 1, ffile, filesize, NULL);    
  22.     //执行绑定之后的SQL语句    
  23.  sqlite3_step(stat);  

这时数据库当中已经有了一条包含BLOB字段的数据。接下来我们要读取这条数据:

  1. //选取该条数据    
  2.   sqlite3_prepare(db, "select * from list;", -1, &stat, 0);    
  3.   sqlite3_step(stat);    
  4.  //得到纪录中的BLOB字段    
  5.   const void * test = sqlite3_column_blob(stat, 1);    
  6.  //得到字段中数据的长度    
  7.   int size = sqlite3_column_bytes(stat, 1);    
  8.  //拷贝该字段    
  9.  sprintf(buffer2, "%s", test);  

此时可以将buffer2写入到文件当中,至此BLOB数据处理完毕。

小结:iPhone编程:SQLite中如何用API操作BLOB类型字段的内容介绍完了,希望通过本文的学习,能对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2020-09-24 16:05:44

C语言sqlite3函数

2011-07-07 16:42:38

iPhone Sqlite3 数据库

2010-04-20 10:12:42

OraclePL

2011-07-26 18:11:56

iPhone Sqlite 数据库

2021-04-12 16:24:19

Hedy编程语言软件开发

2010-05-21 15:33:54

MySQL text

2011-06-03 10:06:57

MongoDB

2011-07-13 14:02:42

OracleExcel

2010-04-23 14:32:01

Oracle数据库

2009-06-22 11:52:00

javascriptxml

2012-02-01 09:33:36

百度地图API

2018-08-29 08:19:43

iPhone求救手机

2011-08-30 14:15:34

QTSQLite数据库

2021-12-31 10:32:26

MySQL数据类型

2010-04-29 10:56:46

Oracle数据库

2011-05-17 10:43:18

oracleblob字段

2020-07-07 07:00:00

Spring WebFREST APIReactive AP

2011-08-03 17:08:43

iPhone Sqlite 时间

2023-08-09 09:00:00

树莓派物联网

2022-05-31 07:40:41

ArctypeFeather.jsSQLite
点赞
收藏

51CTO技术栈公众号