读blob字段存到char 数组里

chengchaog 2008-09-17 03:41:05
我通过ADO读了,但是不知道怎么保存到char数组里
那个大大写个例子
...全文
128 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
内存泄漏 2008-09-17
  • 打赏
  • 举报
回复
不知道操作?? ADO的话,用如下代码不是可以实现吗???

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)) ///判断数据类型是否正确
{
char *pBuf = NULL;
SafeArrayAccessData(varBLOB.parray,(void **)&pBuf); ///得到指向数据的指针
/*****在这里我们可以对pBuf中的数据进行处理*****/
SafeArrayUnaccessData (varBLOB.parray);
}
}
chengchaog 2008-09-17
  • 打赏
  • 举报
回复

long lDataSize = dbs.pRec->GetFields()->GetItem("cd")->ActualSize;
if(lDataSize > 0)
{
_variant_t varBLOB;
varBLOB = dbs.pRec->GetFields()->GetItem("cd")->GetChunk(lDataSize);
if(varBLOB.vt == (VT_ARRAY | VT_UI1))
{

if(m_pBMPBuffer = new char[lDataSize+1]) ///重新分配必要的存储空间
{
for (long l=0; l <lDataSize; l++)
SafeArrayGetElement(varBLOB.parray, &l, (void*)&m_pBMPBuffer[l]);

// SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);
// memcpy(m_pBMPBuffer,pBuf,lDataSize); ///复制数据到缓冲区m_pBMPBuffer
// SafeArrayUnaccessData (varBLOB.parray);


}
}
}
jameshooo 2008-09-17
  • 打赏
  • 举报
回复
也许数字中间有0,被认为是字符串结束符,可能你数据库中存的是UNICODE串吧。把pBuf重新解释成WCHAR*试试看
zhoujianhei 2008-09-17
  • 打赏
  • 举报
回复
很可能是unicode码,将工程转换到unicode,并且将char替换成TCHAR,再试试。

chengchaog 2008-09-17
  • 打赏
  • 举报
回复
,那个我在调试中,怎么数组只能看到最前面的那个字节,后面的都看不到了,打印出来也看不到,
jameshooo 2008-09-17
  • 打赏
  • 举报
回复
CComVariant var = xxx->GetChunk(xxx->ActualSize);

char* pBuf = new char[xxx->ActualSize];
for (long l=0; l<xxx->ActualSize; l++)
SafeArrayGetElement(var.parray, &l, (void*)&pBuf[l]);

delete[] pBuf;
zhoujianhei 2008-09-17
  • 打赏
  • 举报
回复
从数据库读出的结果放到CString中,之后
CString str;
....

char buf[200];

lstrcpy(buf, (LPSTR)(LPCTSTR)str);

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧