说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

用CRecordset存取图像的历史一流问题,高手请进!

编辑:说三道四文库 发布时间: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
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘