向SQL server 2008插入iplimage数据报错
问题如题了。 我的代码如下:
ADO m_ado; //ADO为已定义好的数据库连接类
m_ado.OnInitADOConn();
CString sql =_T("select image1 from CNN_news where ID=1");
m_ado.m_pRecordset= m_ado.OpenRecordset(sql);
IplImage* img;
img = cvLoadImage("F:\\abama-face-data\\abama\\0.jpg",1);
cvShowImage("ss",img);
cvWaitKey(1);
long nSize = img->imageSize;
BYTE * pBuffer = new BYTE [nSize];
// memcpy(pBuffer,img,img->imageSize);
BYTE* pBuf = (BYTE*)(img->imageData);
VARIANT varBLOB;
SAFEARRAY *psa;
SAFEARRAYBOUND rgsabound[1];
m_ado.m_pRecordset->AddNew();
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = nSize;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
for (long i = 0; i < (long)nSize; i++)
SafeArrayPutElement (psa, &i, pBuf++); ///将pBuf指向的二进制数据保存到SAFEARRAY对象psa中
varBLOB.vt = VT_ARRAY | VT_UI1; ///将varBLOB的类型设置为BYTE类型的数组
varBLOB.parray = psa; ///为varBLOB变量赋值
m_ado.m_pRecordset->GetFields()->GetItem("img")->AppendChunk(varBLOB); //此句报错 :
//“System.Runtime.InteropServices.SEHException”类型的未经处理的异常出现在 SDItest.exe 中。 其他信息: 外部组件发生异常。
m_ado.m_pRecordset->Update();
m_ado.CloseConn();
//错误位置为:msado15.tli
inline FieldPtr Fields15::GetItem ( const _variant_t & Index ) {
struct Field * _result = 0;
HRESULT _hr = get_Item(Index, &_result);
if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
return FieldPtr(_result, false); //此句出错。
}
新人分不多 求慢慢积累