问题描述:
现在有一个日期时间和Bmp数组需要存放进数据库,用_CommandPtr的方法Execute来执行SQL语句,现在就不能正常工作,代码如下:
CString strSQL;
strSQL.Format(_T("insert into c7400_t(id,add_time,file_time,zip_data) values (0,now(),%s,%s)),strFileTime,pBuf); //pBuf是Bmp文件内容(2进制)
// 其中add_time和file_time字段类型为datetime zip_data类型为mediumblob   
pCommand->CommandText=(_bstr_t)strSQL;  
pCommand->Execute(NULL,NULL,adCmdStoredProc);测试解决方法:
我把pBuf转换为了
BYTE *pBuffer = pBuf;     VARIANT   varBLOB;
SAFEARRAY  *psa;
SAFEARRAYBOUND rgsabound[1];if(pBuffer)
{    
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = nSize;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
for(long i = 0; i < (long)nSize; i++)
SafeArrayPutElement (psa, &i, pBuffer++); varBLOB.vt = VT_ARRAY | VT_UI1;
varBLOB.parray = psa;
}
不知道怎么插入了?问题提出:
我如何利用
pCommand->CommandText=(_bstr_t)strSQL;  
pCommand->Execute(NULL,NULL,adCmdStoredProc);
来解决需求呢?据说这样比打开记录集来添加速度快!

解决方案 »

  1.   

    我如何利用 
    pCommand->CommandText=(_bstr_t)strSQL;  
    pCommand->Execute(NULL,NULL,adCmdStoredProc); 
    来解决需求呢?据说这样比打开记录集来添加速度快!
    ==============================================
    不可能将二进制送进数据库,应该使用记录集打开并进行PutCollect()添加。
      

  2.   

    看来只能用_RecordsetPtr记录集来操作了?
    但是这样效率很慢,我有很多记录需要存储
      

  3.   

    楼上给点建议吧~
    我经常到你Blog学习