如何用ado将二进制图片数据存入mysql数据库

如何用ado将二进制图片数据存入mysql数据库,第1张

用ADO方式连的MYSQL, 已经用AppendChunk以二进制插入数据库中,下面是读取的不分,写入相反的方式
void DatabaseFile::GetImage()
{
_RecordsetPtr pRs = NULL;
pRsCreateInstance(__uuidof(Recordset));
_variant_t varChunk;
_variant_t varBLOB;
try
{
CString sql = "select image from visdata where DetectTime = '2008-06-19 11:23:44';";
//Open a Recordset
HRESULT hr = pRs->Open(_variant_t("select from visdata;"),_variant_t((IDispatch ) m_pConnection,true),adOpenKeyset,adLockOptimistic,adCmdText);
//read data
long lDataLength = pRs->Fields->GetItem("image")->ActualSize;//数据长度可以正确获取
varBLOB = pRs->GetFields()->GetItem("image")->GetChunk(lDataLength);
if(varBLOBvt == (VT_ARRAY | VT_UI1))
{
BYTE pBuf = NULL;
pBuf = (BYTE)GlobalAlloc(GMEM_FIXED,lDataLength);//分配空间
hr = SafeArrayAccessData(varBLOBparray,(void )&pBuf);
if (FAILED(hr))
return;
//Build a File
char tmpPath[_MAX_PATH+1];
GetCurrentDirectory( MAX_PATH,tmpPath);
CString strFileName = "\\temp2bmp";//输出的文件名
strFileName = tmpPath+strFileName;
CFile outFile(strFileName,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary );
/要判断文件是否创建成功/
LPSTR buffer = (LPSTR)GlobalLock((HGLOBAL)(pBuf));
outFileWriteHuge(buffer,lDataLength);
GlobalUnlock((HGLOBAL)pBuf);
outFileClose();
SafeArrayUnaccessData (varBLOBparray);
}
pRs->Close();
}

以上就是关于如何用ado将二进制图片数据存入mysql数据库全部的内容,包括:如何用ado将二进制图片数据存入mysql数据库、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9373875.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存