百科知识

请问VB中如何存取ORACLE数据库的CLOB类型的字段?我把C?

2004-09-20 12:30:291***
请问VB中如何存取ORACLE数据库的CLOB类型的字段? 我把CLOB类型的字段象普通的VARCHAR2字段一样存入数据库,用SQL PLUS WORKSHEET可以查到该字段的值,但是,我用以下SQL语句查询,执行时提示“数据类型不支持”, 请问:如何解决? 请问VB中如何存取ORACLE数据库的CLOB类型的字段?我把CLOB类型的字段象普通的VARCHAR2字段一样存入数据库,用SQLPLUSWORKSHEET可?

最佳回答

  •   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。
      
    2004-09-20 12:32:30
  • 很赞哦! (292)