VC访问access中的ole对象(新的问题)
请允许我再用这样的标题。我已经搜索过多个论坛,看过许多参考答案。
但很遗憾,没有我想要的。
在论坛提供的答案中,访问ole字段中的对象时,都是作为BLOB来访问的,就是说对象不管是文本,还是图像,都是存放在同一个mdb文件中。
并且还有人提供的成功的例子,例如存储jpg图像等。
但是我目前的数据库中,尽管也是ole对象,但字段中严格地说,只是存了一个ole连接,
真正的对象是存在外面的。
请看附件:
http://www.vchelp.net/ASP/cdf_pic/200410/subject_1_123260.rar
我参考别人的代码做以下的实验
if(nSize > 0)
{
_variant_t varBLOB;
varBLOB = ptrFields->GetItem(ptrField->Name)->GetChunk(nSize);
if(varBLOB.vt == (VT_ARRAY | VT_UI1))
{
char *pBuf = NULL;
SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);
//...........
SafeArrayUnaccessData (varBLOB.parray);
}
}
结果是这样的:可以读出一些内容,内容中间部分确实是外面的文件,但头尾就不知道是什么东西了,而且,恶心的是,
SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);
//...........
SafeArrayUnaccessData (varBLOB.parray);
这样的组合只能做一次,即使这一组合中间什么也不干,后面也会出错。
大家谁能再给些提示?