用sql取oracle中clob中数据,请问VB中如何存取ORACLE数据库的CLOB类型的字段?

strSql="Selecttbl,priCatalogID,isvalid,OE_row,OE_col,OE_page,slice,db,"strSql=strSql&"cube,userid,createtime,nodeInfo,graphtype,"strSql=strSql&"pagepos,filter,ispublishedFrom"&gstrSchema&"preReport"strSql=strSql&"WherepreRptID="strSql=strSql&Mid(sKey,7)说明:nodeInfo、filter字段为CLOB类型。

---------------------------------------------------------------在vb中的处理在vb中处理大对象,一般可以用OO4O(oracleobjectsforole)来处理大对象。这里介绍一种不用0040处理大对象blob的方法。

下面这段程序可以将一个文件(文本文件,doc文件,图象文件等)保存到数据库中,并可以将其从数据库读出需要两个commandbuttoncmd1名称cmdsavecaption保存cmd2名称cmdreadcaption读取一个cmddialog控件同时需要创建一张表t_demo(字段id类型number,;字段text类型blob;)exmple3。

OptionExplicitDimrnAsADODB。ConnectionPublicFunctionCreateDataSource(DataSourceAsString,UserIDAsString,PasswordAsString)AsBooleanOnErrorGoT "Provider=OraOledb。

Oracle。1;"&_"password="&Password&";"&_"UserID="&UserID&";"&_"DataSource="&DataSource&";"&_"LocaleIdentifier=2052"。OpenEndWithCreateDataSource=TrueExitFunctio ()DimrsAsNewADODB。

Recordsetrs。ActiveConnection=rnrs。LockType=adLockOptimisticrs。CursorLocation=adUseClientrs。Source="select*fromt_demo"rs。OpenComDlgDir。

DialogTitle="保存文件"ComDlgDir。Filter="*。*"ComDlgDir。ShowSaveCallBlobToFile(rs。Fields("text"), lename)Setrs=NothingExitSubSetrs=NothingEndSubPrivateSubcmdsave_Click()DimrsAsNewADODB。

Recordsetrs。ActiveConnection=rnrs。LockType=adLockOptimisticrs。CursorLocation=adUseClientrs。Source="select*fromt_demo"rs。Openrs。

AddNewComDlgDir。DialogTitle="选取文件"ComDlgDir。ShowOpenrs。Fields("id")。Value= lename<>""ThenCallFileToBlob(rs。Fields("text"), lename)rs。

UpdateEndIfSetrs=NothingExitSubSetrs=NothingEndSubPrivateSubForm_Load()IfNotCreateDataSource("sid","systemp","manager")ThenMsgBox"Connectionfailure!"EndIfEndSubfldAsADODB。

Field,filenameAsString,OptionalChunkSizeAsLong=8192)DimfnumAsInteger,bytesleftAsLong,bytesAsLongDimtmp()AsByteIf(fld。AttributesAndadFldLong)=0ThenErr。

Raise1001,,"fielddoesn'tsupporttheGetChunkmethod。"EndIfIfDir$(filename)=""ThenErr。Raise53,,"Filenotfound"fnum=FreeFileOpenfilenameForBinaryAsfnumbytesleft=LOF(fnum)DoWhilebytesleftbytes=bytesleftIfbytes>ChunkSizeThenbytes=ChunkSizeReDimtmp(1Tobytes)AsByteGetfnum,,tmpfld。

AppendChunktmpbytesleft=bytesleft-bytesLoopClose#fnumEndSubSubBlobToFile(fldAsADODB。Field,filenameAsString,OptionalChunkSizeAsLong=8192)DimfnumAsInteger,bytesleftAsLong,bytesAsLongDimtmp()AsByteIf(fld。

AttributesAndadFldLong)=0ThenErr。Raise1001,,"fielddoesn'tsupporttheGetChunkmethod。"EndIfIfDir$(filename)<>""ThenKillfilenamefnum=FreeFileOpenfilenameForBinaryAsfnumbytesleft=fld。

ActualSizeDoWhilebytesleftbytes=bytesleftIfbytes>ChunkSizeThenbytes=ChunkSizetmp=fld。GetChunk(bytes)Put#fnum,,tmpbytesleft=bytesleft-bytesLoopClose#fnumEndSub。

全部

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值