
在实际的编程开发当中我们经常要处理一些大容量二进制数据的存储,如图片或者音乐等等。对于这些二进制数据(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)
直接插入NSData类型char *buffer=new char[1024*1024]//要放入的内容sqlite3_prepare( db, "insert into tb( ID, content) values( 10, ? )", -1, &stat, 0 )//准备插入数据sqlite3_bind_blob( stat, 1, buffer, strlen(buffer), NULL )//把内容和字段绑定CLOB和BLOB类型被用来存放大对象。BOLB表示二进制大对象,这种数据类型通过用来保存图片,图象,视频等。CLOB表示字符大对象,能够存放大量基于字符的数据。本文简要说明SynopseSQLite3读写二进制字段,先说下SynopseSQLite3的优点,静态编译集成SQLite3引擎,不需要额外的DLL支持,支持SQLite3加密,支持JSON表,支持网络版的SQLite3.支持线程安全保护.首先建一个表,字段类型为BLOBSL.Add('CREATE TABLE IF NOT EXISTS TEST (')SL.Add('FileName TEXT PRIMARY KEY,')SL.Add('Data BLOB)')SL.Add('')写入二进制数据:var欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)