插入数据之前的操作就不说了,这里介绍下插入多列数据的方法,并且数据都是动态的
第一步:创建一个char数组来存放插入数据库的sql语句:char* szSQL = new char[256];
第二步:格式化sql语句,这里主要是为了在数据是动态的情况下也好用才做格式化sql语句操作:sprintfsprintf(szSQL, "insert into ExceptionDataTable values(%d,%d,'%s',?,%d),参数1,参数2,参数3,参数4);
其中的"?"是占位符,用来存放二进制的图像数据
第三步:sqlite3_prepare(m_db,szSQL,-1,&stmt,NULL);
第四步:读取图像数据:
FILE* fpRead = NULL;
long fileSize; //图片文件大小
char *szImageData;
fpRead = fopen(strImagePath,"rb");
if(fpRead!=NULL)
{
//计算文件大小
fseek(fpRead,0,SEEK_END);
fileSize = ftell(fpRead);
fseek(fpRead,0,SEEK_SET);
}
//读取文件内容
szImageData = new char[fileSize+1];
size_t sz = fread(szImageData,sizeof(char),fileSize+1,fpRead);
fclose(fpRead);
第五步:sqlite3_bind_blob(stmt,1,szImageData,fileSize,NULL);//这里的第二个参数代表的是第几个?,而不是占位符所在参数的位数
第六步:sqlite3_step(stmt);