如何插入一个clob字段

oscarjiao 2003-12-12 04:56:37
想把一个CString类型变量的值加到一个clob里面,
m_pRecordset->Fields->GetItem("clobname")->AppendChunk(_variant_t(str));
这样写好像写不进去,有什么方法和以实现这一操作吗?
...全文
54 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
oscarjiao 2003-12-12
  • 打赏
  • 举报
回复
不是blob,就是clob。
我在vc的setting里面把stack空间改大了就行了。可为什么没改制前运行不会报错说:stack overflow呢?
不过问题解决了,进者有分!
孤必有邻 2003-12-12
  • 打赏
  • 举报
回复
该是blob吧
参考代码:
//其中m_pRs为_RecordsetPtr
//写入
void CAdoBlob::SetBlob(BYTE * pBuf, long nSize)
{
VARIANT varBLOB;
SAFEARRAY * psa;
SAFEARRAYBOUND rgsabound[1];

if(pBuf)
{
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, pBuf++);
varBLOB.vt = VT_ARRAY | VT_UI1;
varBLOB.parray = psa;

m_pRs->GetFields()->GetItem("F_DATA")->AppendChunk(varBLOB);//F_DATA为字段名称
m_pRs->Update();
}
}
//读出
BOOL CAdoBlob::GetBlob(BYTE * pBuf, long & nSize)
{
nSize = m_pRs->GetFields()->GetItem("F_DATA")->ActualSize; //得到数据的长度
if(nSize > 0)
{
_variant_t varBLOB;
varBLOB = m_pRs->GetFields()->GetItem("F_DATA")->GetChunk(nSize);
if(varBLOB.vt == (VT_ARRAY | VT_UI1)) //判断数据类型是否正确
{
char *p = NULL;
SafeArrayAccessData (varBLOB.parray,(void **)&p); //得到指向数据的指针
pBuf=new BYTE[nSize+1];
memcpy(pBuf,p,nSize);
pBuf[nSize]='\0';
SafeArrayUnaccessData (varBLOB.parray);
return TRUE;
}
}
return FALSE;
}

4,011

社区成员

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

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