请教VC与ACCESS的一个问题 可以把一个wav文件的数据全部放入ACCESS吗?用VC6.0如何实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.vckbase.com/document/viewdoc/?id=252http://www.vckbase.com/document/viewdoc/?id=719 链接是关于图片的。有没有关于WAV文件的。 如果用的不是ADO来连接数据库,而是直接用CRecordset类来连接,该如何处理?因为我之前其他的数据都是用CRecordset来连接的。 我的测试记录就是做为二进制字段保存在access中的 假设数据库为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();} 多谢楼上的。但你的这段代码是用ADO来做的。如果不用ADO,只是普通的CRecordset类该怎么办? 因为在同一个程序里,原来都没用过。现在要加个东西,没想过要再用别的。所以想问问普通的CRecordset类该怎么办。拜托各位了。 怎么判断264帧是不是关键帧 用VC2008怎么实现,SendInput怎么发送,CTRL+1 的组合键啊? MDI程序 获得窗口菜单错误???帮忙看看 请教一下MFC读文件的问题,明天就要交工了,请拜托大家帮帮我!!! 如何去掉视图的Client Edge风格? 在线等候,tcp服务器的问题,能承受长连接的数量? 在 DAO 数据库中打开一个数据集合时出现问题?? 在我的应用程序和word文档之间怎样禁止拖动?在线急等! 怎样制作象“网易工具栏”那样的组件? 求救啊 各位高手帮帮忙啊 Intel IPP的问题。急!!!!!!(刚入职,第一个程序55555555555) 关于字符串的问题
http://www.vckbase.com/document/viewdoc/?id=719
有没有关于WAV文件的。
因为我之前其他的数据都是用CRecordset来连接的。
#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();
}
但你的这段代码是用ADO来做的。
如果不用ADO,只是普通的CRecordset类该怎么办?
现在要加个东西,没想过要再用别的。
所以想问问普通的CRecordset类该怎么办。
拜托各位了。