编辑:说三道四文库 发布时间:2018-04-24 05:28
HTML文档下载
WORD文档下载
PDF文档下载
我的问题如下:
在crecordset中操做图像文件的存入,我的代码参考了http://www.vchelp.net/source/source_db.htm 中use blob,可以存入图片,但是还有问题 ,就是一运行就要报访问冲突错误.我从问题点(如所示)处调试跟踪到mfc里面的文件 ...\MFC\SRC\DBCORE.CPP 处的
void CRecordset::SendLongBinaryData(HSTMT hstmt)
{
..............................
// Check for another DATA_AT_EXEC My fatal error here
AFX_ODBC_CALL(::SQLParamData(hstmt, &pv));
// 我的错误就在上面这句
if (!Check(nRetCode))
{
TRACE0("Error: failure handling long binary value during update.\n");
ThrowDBException(nRetCode, hstmt);
}
................................
}
想不通的是,我只存放一张图片 哪儿俩的another呢?
虽然报错了但是还是将test.bmp 的图给存进去了.(还可以通过其他方式取出来呢)
我的代码如下:
CLongBinary blob;
CFile fileImage;
HGLOBAL hGlobal ;
CFileStatus fileStatus;
if(fileImage.Open("D:\\test.bmp", CFile::modeRead)==0)
return ;
fileImage.GetStatus(fileStatus);
if(m_pSet->Open()==0)
return ;
try
{
if (!m_pSet->CanAppend())
return ;
m_pSet->AddNew();
m_pSet->m_NUMBER_OF_PICTURE=_T("test18");
m_pSet->m_PICTURE.m_dwDataLength = fileStatus.m_size;
hGlobal= GlobalAlloc(GPTR,fileStatus.m_size);//GHND
m_pSet->m_PICTURE.m_hData = GlobalLock(hGlobal);
fileImage.ReadHuge(m_pSet->m_PICTURE.m_hData,fileStatus.m_size);
m_pSet->SetFieldDirty (&(m_pSet->m_PICTURE));
m_pSet->SetFieldNull(&(m_pSet->m_PICTURE) ,FALSE);
m_pSet->Update(); // 问题点 由此跟踪进去
UpdateData(FALSE);
}
catch(CException* pE)
{
pE->ReportError();
pE->Delete();
return;
}
GlobalUnlock(hGlobal);
GlobalFree(hGlobal);
fileImage.Close ();
另外 我将http://www.vchelp.net/source/source_db.htm 中use blob demo的演示代码 在我机子上运行和调试 都没有错,.我就觉得奇怪了,大同小异,(不同之处就是我操作的是另一台机子上的oracle)为什么就出错呢? 如果大侠能在百忙之中抽出一点时间给后生一些指点,感激不尽了.
我也碰到类似的问题,没有解决最后我没有使用CLongBinary而是使用CByteArray
一切问题都没有了
老兄,可不可以介绍一下你怎么用cbytearry的?谢谢了
我的email qingzhaozhen@263.net
thx