www.vckbase.com
去找一个例子adoblob,很清楚地演示了如何读写blob字段,不过是aceess的,但是在oracle下面我也测试通过,没有问题。
去找一个例子adoblob,很清楚地演示了如何读写blob字段,不过是aceess的,但是在oracle下面我也测试通过,没有问题。
解决方案 »
- USERENV('CLIENT_INFO')?
- -------为什么oracle11g通过透明网关连上了mysql,使用确不正常------
- 日期处理,着急!
- 藏拙中文分词系统DLL版出台了,并提供C,java,C#,delphi各种语言的DEMO和开发源码!兄弟们大开眼界的机会到了,所有程序完全由本人独自一人所开发!
- oracle9i+solaris9下编译C报wrong ELF class: ELFCLASS64 错
- 高分求助一个复杂的sql语句,绝对高手请进
- 急!在线等.(菜鸟求救)
- ORACLE双机系统中,如何修改init.ora参数?
- 一个触发器的问题!!!(给高分)
- 用gns解析scan vip后 ,已经启动rac 但是nslookup 解析不到已经生成的scan vip
- 如何调用已经在oracle中注册过的schema
- 天啊!!!!救救我,!!!!ora-00322的错误!!!!! 如何启动数据库
如果表中有Blob字段,就不能执行select * from MyTable语句。
能给出例子吗?谢谢。
AfxOleInit();
m_pConnection.CreateInstance("ADODB.Connection");
/******************连接数据库********************/
try
{
m_pConnection->ConnectionTimeout = 8;/*oraoledb.oracle*/
m_pConnection->Open("Provider=oraoledb.oracle;Data Source=yourds;User ID=youruser;Password=pwd","","",adModeUnknown);
}
catch(_com_error e)///捕捉异常
{
AfxMessageBox("无法连接到oracle数据库,请检查数据库连接设置,否则程序无法正常工作!");
}
catch(_com_error e)///捕捉异常
{
AfxMessageBox("数据库连接失败!");
return FALSE;
} 读数据:
m_pRecordset.CreateInstance("ADODB.Recordset");
HRESULT hr = m_pRecordset->Open("SELECT * FROM userphoto",_variant_t((IDispatch *)m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText);读blob字段
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); SafeArrayUnaccessData (varBLOB.parray);
m_nFileLen = lDataSize;
}
}
}
数据就读到m_pBMPBuffer中了,
char *pBuf = m_pBMPBuffer;
VARIANT varBLOB;
SAFEARRAY *psa;
SAFEARRAYBOUND rgsabound[1]; 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();