问题描述:
现在有一个日期时间和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);
来解决需求呢?据说这样比打开记录集来添加速度快!
现在有一个日期时间和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);
来解决需求呢?据说这样比打开记录集来添加速度快!
pCommand->CommandText=(_bstr_t)strSQL;
pCommand->Execute(NULL,NULL,adCmdStoredProc);
来解决需求呢?据说这样比打开记录集来添加速度快!
==============================================
不可能将二进制送进数据库,应该使用记录集打开并进行PutCollect()添加。
但是这样效率很慢,我有很多记录需要存储
我经常到你Blog学习