請問VB中如何存取ORACLE數據庫的CLOB類型的字段? 我把CLOB類型的字段象普通的VARCHAR2字段一樣存入數據庫,用SQL PLUS WORKSHEET可以查到該字段的值,但是,我用以下SQL語句查詢,執行時提示“數據類型不支持”, 請問:如何解決?

熱心網友

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=bytesleftIfbytesChunkSizeThenbytes=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=bytesleftIfbytesChunkSizeThenbytes=ChunkSizetmp=fld。GetChunk(bytes)Put#fnum,,tmpbytesleft=bytesleft-bytesLoopClose#fnumEndSub。