sqlite存储二进制数据

本文介绍了如何使用SQLite数据库存储不同类型的二进制大对象(BLOB),包括十六进制数据、EXE文件及文本文件,并演示了从数据库读取这些数据的方法。
 {//存储二进制数据
     unsigned char hex[16]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
     sqlite3_prepare(pDB,"insert into bList values ('hex',?);",-1,&stmt,NULL);
     sqlite3_bind_blob(stmt,1,hex,16,NULL);
     sqlite3_step(stmt);
 }

 stmt=NULL;
 {//存储exe文件
     memset(buffer,0,65535);
     {
         FILE* fp=fopen(argv[0],"rb");
         iLen=fread(buffer,1,65535,fp);
         fclose(fp);
     }
     sqlite3_prepare(pDB,"insert into bList values ('me.exe',?);",-1,&stmt,NULL);
     sqlite3_bind_blob(stmt,1,buffer,iLen,NULL);
     sqlite3_step(stmt);
 }

 stmt=NULL;
 {//存储普通c文档
     memset(buffer,0,65535);
     {
         FILE* fp=fopen("../main.c","rb");
         iLen=fread(buffer,1,65535,fp);
         fclose(fp);
     }
     sqlite3_prepare(pDB,"insert into bList values ('main.txt',?);",-1,&stmt,NULL);
     sqlite3_bind_blob(stmt,1,buffer,iLen,NULL);
     sqlite3_step(stmt);
 }
 stmt=NULL;
 {//从数据库中读取txt文件数据
     char *data=NULL;
     memset(buffer,0,65535);
     sqlite3_prepare(pDB, "select binData from bList where fileName='main.txt';", -1, &stmt, 0);
     sqlite3_step(stmt);
     data= (char *)sqlite3_column_blob(stmt,0);//得到纪录中的BLOB字段
     iLen= sqlite3_column_bytes(stmt, 0);//得到字段中数据的长度
     memmove(buffer,data,iLen);
     printf("%s\n",buffer);
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值