如何把一个文件已二进制流的方式存储到数据库的一个字段中,以及如何从数据库的对应的字段导出这个文件

解决方案 »

  1.   

    http://www.vckbase.com/document/viewdoc/?id=719
    给你一个例子,这个是把jpg文件存入数据库的例子,同样也可以存入你的想存的文件
      

  2.   

    void CVPSVerifyDlg::OnOK() 
    {
    // TODO: Add extra validation here
    UpdateData(false);
    _variant_t Strql; if(adStateOpen==theApp.ADOConnAccess->State)
    {
    Strql="Select DllFile,DllName from TaskPDF where ProductionName='"+m_production+"'";
    theApp.ADOExecute(theApp.ADOConnAccess,theApp.m_pADOSet,Strql);
    }

        long lDataLength = theApp.m_pADOSet->Fields->GetItem("DllFile")->ActualSize;
    VARIANT varBLOB=theApp.m_pADOSet->GetFields()->GetItem("DllFile")->GetChunk(lDataLength); 
    if(varBLOB.vt == (VT_ARRAY | VT_UI1)) 
    {
    BYTE *pBuf = NULL; 
    pBuf = (BYTE*)GlobalAlloc(GMEM_FIXED,lDataLength);
    HRESULT hr; hr = SafeArrayAccessData(varBLOB.parray,(void **)pBuf); 
    //Build a File in Windows Temp Directory
    //char tmpPath[_MAX_PATH+1];
    //GetTempPath(_MAX_PATH,tmpPath);
    CString strAppPath("");
            ::GetModuleFileName(NULL, strAppPath.GetBuffer(MAX_PATH), MAX_PATH);
            strAppPath.ReleaseBuffer(-1);
    strAppPath = strAppPath.Left(strAppPath.ReverseFind('\\') + 1);
            strAppPath += StrFileName;
    CFile outFile(strAppPath,CFile::modeCreate|CFile::modeWrite);
    LPSTR buffer = (LPSTR)GlobalLock((HGLOBAL)pBuf);
    outFile.WriteHuge(buffer,lDataLength);
    GlobalUnlock((HGLOBAL)pBuf);
    outFile.Close(); 
    SafeArrayUnaccessData (varBLOB.parray);
    }
    }
    程序执行到这一行,取出的为空值
    VARIANT varBLOB=theApp.m_pADOSet->GetFields()->GetItem("DllFile")->GetChunk
    为什么???请高手指点,还可以加分
      

  3.   

    出错这段是读,你事先有没有把文件存入DllFile字段中?
      

  4.   

    已经存储文件了,在VB里都可以取倒文件,注意:我存储的文件是动态库.LL文件
      

  5.   

    long lDataLength = theApp.m_pADOSet->Fields->GetItem("DllFile")->ActualSize;
    这一行取的文件长度都是正确的,生成的DLL文件变成了不是WIN32文件
      

  6.   

    long lDataLength = theApp.m_pADOSet->Fields->GetItem("DllFile")->ActualSize;
    这一行取的文件长度都是正确的,生成的DLL文件变成了不是WIN32文件,存储文件在我的一个VB的程序中已经存储进取了,我们的客户端是用VC写的。