{//存储二进制数据
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);
}
sqlite存储二进制数据
最新推荐文章于 2026-04-17 11:07:52 发布
本文介绍了如何使用SQLite数据库存储不同类型的二进制大对象(BLOB),包括十六进制数据、EXE文件及文本文件,并演示了从数据库读取这些数据的方法。
1664

被折叠的 条评论
为什么被折叠?



