ado+sql

hdqqq 2003-02-14 10:06:23
需要将实时采集的大量二进制数据存入sql server,用的是ado + sql server
各位,谁有c/c++实现的用ado添加纪录并且将二进制数据填入某一字段的代码,借我参考参考。
...全文
11 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
small_wei 2003-02-16
void CADOBlobDlg::OnSaveinfo()
{
if(!m_bModify) return;
UpdateData();
if(m_pBMPBuffer == NULL || m_hPhotoBitmap == NULL || m_UserName == "" || m_Old == "")
{
AfxMessageBox("您没有提供完整的用户信息。\r\n这些信息包括:用户名、年龄、照片");
return;
}
m_buttonSaveInfo.EnableWindow(FALSE);
char *pBuf = m_pBMPBuffer;
VARIANT varBLOB;
SAFEARRAY *psa;
SAFEARRAYBOUND rgsabound[1];

if(m_bNewUser)
m_pRecordset->AddNew();
m_pRecordset->PutCollect("username",_variant_t(m_UserName));
m_pRecordset->PutCollect("old",atol(m_Old));
if(pBuf)
{
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = m_nFileLen;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
for (long i = 0; i < (long)m_nFileLen; i++)
SafeArrayPutElement (psa, &i, pBuf++);
varBLOB.vt = VT_ARRAY | VT_UI1;
varBLOB.parray = psa;
m_pRecordset->GetFields()->GetItem("photo")->AppendChunk(varBLOB);
}
m_pRecordset->Update();
m_buttonDeleteUser.EnableWindow();
ResetControls();
m_bNewUser = FALSE;
m_bModify = FALSE;
}
回复
hdqqq 2003-02-16
thank u
回复
hdqqq 2003-02-15
非常感谢,不知有没有直接增加纪录的例子,有的话就结贴了。
回复
small_wei 2003-02-14
void CADOBlobDlg::ReadData()
{
DestroyPhoto(); ///清除原图像
if(m_pRecordset->adoEOF||m_pRecordset->BOF)
{
m_UserName.Empty();
m_Old.Empty();
UpdateData(FALSE);
return;
}
long lDataSize = m_pRecordset->GetFields()->GetItem("photo")->ActualSize;
if(lDataSize > 0)
{
_variant_t varBLOB;
varBLOB = m_pRecordset->GetFields()->GetItem("photo")->GetChunk(lDataSize);
if(varBLOB.vt == (VT_ARRAY | VT_UI1))
{
if(m_pBMPBuffer = new char[lDataSize+1]) ///重新分配必要的存储空间
{
char *pBuf = NULL;
SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);
memcpy(m_pBMPBuffer,pBuf,lDataSize); ///复制数据到缓冲区m_pBMPBuffer
SafeArrayUnaccessData (varBLOB.parray);
m_nFileLen = lDataSize;
m_hPhotoBitmap = BufferToHBITMAP(); ///生成BITMAP对象
}
}
}
m_UserName = m_pRecordset->GetCollect("username").bstrVal;
m_Old.Format("%d",m_pRecordset->GetCollect("old").lVal);
m_editUserName.EnableWindow();
m_editOld.EnableWindow();
m_buttonSelectPhoto.EnableWindow();
m_buttonDeleteUser.EnableWindow();
UpdateData(FALSE);
}
回复
hdqqq 2003-02-14
有分送的。
回复
相关推荐
发帖
数据库
创建于2007-09-28

3953

社区成员

VC/MFC 数据库
申请成为版主
帖子事件
创建了帖子
2003-02-14 10:06
社区公告
暂无公告