您的位置:首页 > 编程语言 > C语言/C++

vc++ 使用command 对象通过parameter 实现插入二进制数据

2008-05-15 22:44 495 查看
想通过command 执行多条记录,避开申请recordset 的开销,找了好长时间终于调试成功了喔,幸福啊

以下是使用步骤

_CommandPtr cmd;
cmd.CreateInstance(__uuidof(Command));
cmd->CommandType=adCmdText;
cmd->CommandText=_T("INSERT INTO TARGET (TARGETID,PICTURE) VALUES(?,?)");
cmd->ActiveConnection = m_Conn;

//添加参数
CFile m_File;
ULONGLONG datalength;
BYTE *filedata;
VARIANT varChunk;
SAFEARRAY *psa;
SAFEARRAYBOUND rgsabound[1];

//读取图片数据

//m_Pic_List 是存放图片文件路径的数组

for ( int i = 0 ; i < m_Pic_List.Count() ; i++ )
{

m_File.Open(m_Pic_List[i],CFile::modeRead|CFile::typeBinary);
datalength = m_File.GetLength();
filedata = new BYTE[datalength];
m_File.Read(filedata,datalength);
m_File.Close();

rgsabound[0].cElements = datalength;
rgsabound[0].lLbound = 0;
psa = SafeArrayCreate(VT_UI1,1,rgsabound);
for (long index =0; index < datalength; index++ )
{
SafeArrayPutElement(psa,&index,&filedata[index]);
}
varChunk.vt = VT_ARRAY|VT_UI1;
varChunk.parray = psa;

//给参数赋值
cmd->Parameters->Refresh();
_ParameterPtr param = cmd->CreateParameter(_T("TARGETID"),adInteger,adParamInput,sizeof(int),_variant_t(targetid));
cmd->Parameters->Append(param);
param = cmd->CreateParameter(_T("PICTURE"),adLongVarBinary,adParamInput,datalength,varChunk);
cmd->Parameters->Append(param);
cmd.Execute(NULL,NULL,NULL);

//清空参数值
cmd->Parameters->Delete(_T("TARGETID"));
cmd->Parameters->Delete(_T("PICTURE"));

}

这是一本ado的详细资料,需要机器安装office2003。至于为什么在它的目录下,我也在寻找答案
c:/program files/common files/microsoft shared/office10/2052/ado210.chm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐