可以把一个wav文件的数据全部放入ACCESS吗?
用VC6.0如何实现?

解决方案 »

  1.   

    http://www.vckbase.com/document/viewdoc/?id=252
    http://www.vckbase.com/document/viewdoc/?id=719
      

  2.   

    链接是关于图片的。
    有没有关于WAV文件的。
      

  3.   

    如果用的不是ADO来连接数据库,而是直接用CRecordset类来连接,该如何处理?
    因为我之前其他的数据都是用CRecordset来连接的。
      

  4.   

    我的测试记录就是做为二进制字段保存在access中的
      

  5.   

    假设数据库为ACCESS2000, 数据库文件 c:\waveDB.mdb, wav 数据字段二进制,字段名为 waveData, 代码如下
    #import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")void SaveWave()
    {
    CFile file;
    file.Open(_T("c:\\myWave.wav"), CFile::modeRead);
    UINT lWaveLen = file.GetLength();
    BYTE* pWave = new BYTE[lWaveLen]; file.Read(pWave, lWaveLen); _ConnectionPtr m_pConnection;
    HRESULT hr;
    hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
    if(SUCCEEDED(hr))
    {
    hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=waveDB.mdb","","",adModeUnknown);///连接数据库
    } _RecordsetPtr m_pRecordset;
    m_pRecordset.CreateInstance("ADODB.Recordset"); hr = m_pRecordset->Open("MyTable", _variant_t((IDispatch*)m_pConnection,true), 
    adOpenStatic,adLockOptimistic, adCmdTable); VARIANT varBLOB;
    SAFEARRAY *psa;
    SAFEARRAYBOUND rgsabound[1];  rgsabound[0].lLbound = 0;
    rgsabound[0].cElements = static_cast<ULONG>(pWave);
    psa = SafeArrayCreate(VT_UI1, 1, rgsabound);                      //创建SAFEARRAY对象
    for (long i = 0; i < (long)lWaveLen; i++){
    SafeArrayPutElement (psa, &i, pWave+i);                     //将pBuf指向的二进制数据保存到SAFEARRAY对象psa中
    }
    varBLOB.vt = VT_ARRAY | VT_UI1;                                   //将varBLOB的类型设置为BYTE类型的数组
    varBLOB.parray = psa;                                             //为varBLOB变量赋值
    m_pRecordset->GetFields()->GetItem("WaveData")->AppendChunk(varBLOB);//加入BLOB类型的数据 m_pRecordset->Update(); m_pRecordset->Close();
    m_pConnection->Close();
    }
      

  6.   

    多谢楼上的。
    但你的这段代码是用ADO来做的。
    如果不用ADO,只是普通的CRecordset类该怎么办?
      

  7.   

    因为在同一个程序里,原来都没用过。
    现在要加个东西,没想过要再用别的。
    所以想问问普通的CRecordset类该怎么办。
    拜托各位了。