已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
外文原文ACCESSINGANDMANIPULATINGORACLEDATATHISCHAPTERDESCRIBESDATAACCESSINORACLESQLFORMATS,ASOPPOSEDTOSTANDARDJAVAFORMATSASDESCRIBEDINTHEPREVIOUSCHAPTER,THEORACLESQLFORMATSAREAKEYFACTOROFTHEORACLEJDBCEXTENSIONS,OFFERINGSIGNIFICANTADVANTAGESINEFFICIENCYANDPRECISIONINMANIPULATINGSQLDATAUSINGORACLESQLFORMATSINVOLVESCASTINGYOURRESULTSETSANDSTATEMENTSTOORACLERESULTSET,ORACLESTATEMENT,ORACLEPREPAREDSTATEMENT,ANDORACLECALLABLESTATEMENTOBJECTS,ASAPPROPRIATE,ANDUSINGTHEGETORACLEOBJECT,SETORACLEOBJECT,GETXXX,ANDSETXXXMETHODSOFTHESECLASSESWHEREXXXCORRESPONDSTOTHETYPESINTHEORACLESQLPACKAGETHISCHAPTERCOVERSTHEFOLLOWINGTOPICSDATACONVERSIONCONSIDERATIONSRESULTSETANDSTATEMENTEXTENSIONSCOMPARISONOFORACLEGETANDSETMETHODSTOSTANDARDJDBCUSINGRESULTSETMETADATAEXTENSIONSDATACONVERSIONCONSIDERATIONSWHENJDBCPROGRAMSRETRIEVESQLDATAINTOJAVA,YOUCANUSESTANDARDJAVATYPES,ORYOUCANUSETYPESOFTHEORACLESQLPACKAGETHECLASSESINTHISPACKAGESIMPLYWRAPTHERAWSQLDATASTANDARDTYPESVERSUSORACLETYPESINPROCESSINGSPEEDANDEFFORT,THEORACLESQLCLASSESPROVIDETHEMOSTEFFICIENTWAYOFREPRESENTINGSQLDATATHESECLASSESSTORETHEUSUALREPRESENTATIONSOFSQLDATAASBYTEARRAYSTHEYDONOTREFORMATTHEDATAORPERFORMANYCHARACTERSETCONVERSIONSASIDEFROMTHEUSUALNETWORKCONVERSIONSONITTHEDATAREMAINSINSQLFORMAT,ANDTHEREFORENOINFORMATIONISLOSTFORSQLPRIMITIVETYPESSUCHASNUMBER,ANDCHAR,THEORACLESQLCLASSESSIMPLYWRAPTHESQLDATAFORSQLSTRUCTUREDTYPESSUCHASOBJECTSANDARRAYS,THECLASSESPROVIDEADDITIONALINFORMATIONSUCHASCONVERSIONMETHODSANDSTRUCTUREDETAILSIFYOUAREMOVINGDATAWITHINTHEDATABASE,THENYOUWILLPROBABLYWANTTOKEEPYOURDATAINORACLESQLFORMATIFYOUAREDISPLAYINGTHEDATAORPERFORMINGCALCULATIONSONITINAJAVAAPPLICATIONRUNNINGOUTSIDETHEDATABASE,THENYOUWILLPROBABLYWANTTOMATERIALIZETHEDATAASINSTANCESOFSTANDARDTYPESSUCHASJAVASQLORJAVALANGTYPESSIMILARLY,IFYOUAREUSINGAPARSERTHATEXPECTSTHEDATATOBEINASTANDARDJAVAFORMAT,THENYOUMUSTUSEONEOFTHESTANDARDFORMATSINSTEADOFORACLESQLFORMATCONVERTINGSQLNULLDATAJAVAREPRESENTSASQLNULLDATUMBYTHEJAVAVALUENULLJAVADATATYPESFALLINTOTWOCATEGORIESPRIMITIVETYPESSUCHASBYTE,INT,FLOATANDOBJECTTYPESCLASSINSTANCESTHEPRIMITIVETYPESCANNOTREPRESENTNULLINSTEAD,THEYSTORETHENULLASTHEVALUEZEROASDEFINEDBYTHEJDBCSPECIFICATIONTHISCANLEADTOAMBIGUITYWHENYOUTRYTOINTERPRETYOURRESULTSINCONTRAST,JAVAOBJECTTYPESCANREPRESENTNULLTHEJAVALANGUAGEDEFINESANOBJECTWRAPPERTYPECORRESPONDINGTOEVERYPRIMITIVETYPEFOREXAMPLE,INTEGERFORINT,FLOATFORFLOATTHATCANREPRESENTNULLTHEOBJECTWRAPPERTYPESMUSTBEUSEDASTHETARGETSFORSQLDATATODETECTSQLNULLWITHOUTAMBIGUITYRESULTSETANDSTATEMENTEXTENSIONSTHEJDBCSTATEMENTOBJECTRETURNSANORACLERESULTSETOBJECT,TYPEDASAJAVASQLRESULTSETIFYOUWANTTOAPPLYONLYSTANDARDJDBCMETHODSTOTHEOBJECT,KEEPITASARESULTSETTYPEHOWEVER,IFYOUWANTTOUSETHEORACLEEXTENSIONSONTHEOBJECT,YOUMUSTCASTITTOANORACLERESULTSETTYPEALTHOUGHTHETYPEBYWHICHTHEJAVACOMPILERWILLIDENTIFYTHEOBJECTISCHANGED,THEOBJECTITSELFISUNCHANGEDFOREXAMPLE,ASSUMINGYOUHAVEASTANDARDSTATEMENTOBJECTSTMT,DOTHEFOLLOWINGIFYOUWANTTOUSEONLYSTANDARDJDBCRESULTSETMETHODSRESULTSETRSSTMTEXECUTEQUERY“SELECTFROMEMP“IFYOUNEEDTHEEXTENDEDFUNCTIONALITYPROVIDEDBYTHEORACLEEXTENSIONSTOJDBC,YOUCANSELECTTHERESULTSINTOASTANDARDRESULTSETOBJECT,ASABOVE,ANDTHENCASTTHATOBJECTINTOANORACLERESULTSETOBJECTLATERSIMILARLY,WHENYOUWANTTOEXECUTEASTOREDPROCEDUREUSINGACALLABLESTATEMENT,THEJDBCDRIVERSWILLRETURNANORACLECALLABLESTATEMENTOBJECTTYPEDASAJAVASQLCALLABLESTATEMENTIFYOUWANTTOAPPLYONLYSTANDARDJDBCMETHODSTOTHEOBJECT,THENKEEPITASACALLABLESTATEMENTTYPEHOWEVER,IFYOUWANTTOUSETHEORACLEEXTENSIONSONTHEOBJECT,YOUMUSTCASTITTOANORACLECALLABLESTATEMENTTYPEALTHOUGHTHETYPEBYWHICHTHEJAVACOMPILERWILLIDENTIFYTHEOBJECTISCHANGED,THEOBJECTITSELFISUNCHANGEDYOUUSETHESTANDARDJDBCJAVASQLCONNECTIONPREPARESTATEMENTMETHODTOCREATEAPREPAREDSTATEMENTOBJECTIFYOUWANTTOAPPLYONLYSTANDARDJDBCMETHODSTOTHEOBJECT,KEEPITASAPREPAREDSTATEMENTTYPEHOWEVER,IFYOUWANTTOUSETHEORACLEEXTENSIONSONTHEOBJECT,YOUMUSTCASTITTOANORACLEPREPAREDSTATEMENTTYPEWHILETHETYPEBYWHICHTHEJAVACOMPILERWILLIDENTIFYTHEOBJECTISCHANGED,THEOBJECTITSELFISUNCHANGEDKEYEXTENSIONSTOTHERESULTSETANDSTATEMENTCLASSESINCLUDEGETORACLEOBJECTANDSETORACLEOBJECTMETHODSTHATYOUCANUSETOACCESSANDMANIPULATEDATAINORACLESQLFORMATS,INSTEADOFSTANDARDJAVAFORMATSFORMOREINFORMATION,SEETHENEXTSECTION“COMPARISONOFORACLEGETANDSETMETHODSTOSTANDARDJDBC“COMPARISONOFORACLEGETANDSETMETHODSTOSTANDARDJDBCTHISSECTIONDESCRIBESGETANDSETMETHODS,PARTICULARLYTHEJDBCSTANDARDGETOBJECTANDSETOBJECTMETHODSANDTHEORACLESPECIFICGETORACLEOBJECTANDSETORACLEOBJECTMETHODS,ANDHOWTOACCESSDATAINORACLESQLFORMATCOMPAREDWITHJAVAFORMATALTHOUGHTHEREARESPECIFICGETXXXMETHODSFORALLTHEORACLESQLTYPESASDESCRIBEDIN“OTHERGETXXXMETHODS“ONPAGE77,YOUCANUSETHEGENERALGETMETHODSFORCONVENIENCEORSIMPLICITY,ORIFYOUARENOTCERTAININADVANCEWHATTYPEOFDATAYOUWILLRECEIVESTANDARDGETOBJECTMETHODTHESTANDARDJDBCGETOBJECTMETHODOFARESULTSETORCALLABLESTATEMENTRETURNSDATAINTOAJAVALANGOBJECTOBJECTTHEFORMATOFTHEDATARETURNEDISBASEDONITSORIGINALTYPE,ASFOLLOWSFORSQLDATATYPESTHATARENOTORACLESPECIFIC,GETOBJECTRETURNSTHEDEFAULTJAVATYPECORRESPONDINGTOTHECOLUMNSSQLTYPE,FOLLOWINGTHEMAPPINGSPECIFIEDINTHEJDBCSPECIFICATIONFORORACLESPECIFICDATATYPESSUCHASROWID,DISCUSSEDIN“ORACLEROWIDTYPE“ONPAGE633,GETOBJECTRETURNSANOBJECTOFTHEAPPROPRIATEORACLESQLCLASSSUCHASORACLESQLROWIDFORORACLEOBJECTS,GETOBJECTRETURNSANOBJECTOFTHEJAVACLASSSPECIFIEDINYOURTYPEMAPTYPEMAPSSPECIFYTHECORRELATIONBETWEENJAVACLASSESANDDATABASESQLTYPESANDAREDISCUSSEDIN“UNDERSTANDINGTYPEMAPSFORSQLDATAIMPLEMENTATIONS“ONPAGE911THEGETOBJECTPARAMETER_INDEXMETHODUSESTHECONNECTIONSDEFAULTTYPEMAPTHEGETOBJECTPARAMETER_INDEX,MAPENABLESYOUTOPASSINATYPEMAPIFTHETYPEMAPDOESNOTPROVIDEAMAPPINGFORAPARTICULARORACLEOBJECT,THENGETOBJECTRETURNSANORACLESQLSTRUCTOBJECTFORMOREINFORMATIONONGETOBJECTRETURNTYPES,SEETABLE71,“SUMMARYOFGETOBJECTANDGETORACLEOBJECTRETURNTYPES“ONPAGE76ORACLEGETORACLEOBJECTMETHODIFYOUWANTTORETRIEVEDATAFROMARESULTSETORCALLABLESTATEMENTINTOANORACLESQLOBJECT,THENCASTYOURRESULTSETTOANORACLERESULTSETTYPEORYOURCALLABLESTATEMENTTOANORACLECALLABLESTATEMENTTYPE,ANDUSETHEGETORACLEOBJECTMETHODWHENYOUUSEGETORACLEOBJECT,THEDATAWILLBEOFTHEAPPROPRIATEORACLESQLTYPEANDISRETURNEDINTOANORACLESQLDATUMOBJECTTHEORACLESQLTYPECLASSESEXTENDDATUMTHESIGNATUREFORTHEMETHODISPUBLICORACLESQLDATUMGETORACLEOBJECTINTPARAMETER_INDEXWHENYOUHAVERETRIEVEDDATAINTOADATUMOBJECT,YOUCANUSETHESTANDARDJAVAINSTANCEOFOPERATORTODETERMINEWHICHORACLESQLTYPEITREALLYISFORMOREINFORMATIONONGETORACLEOBJECTRETURNTYPES,SEETABLE71,“SUMMARYOFGETOBJECTANDGETORACLEOBJECTRETURNTYPES“ONPAGE76EXAMPLEUSINGGETORACLEOBJECTWITHARESULTSETTHEFOLLOWINGEXAMPLECREATESATABLETHATCONTAINSACOLUMNOFCHARACTERDATAINTHISCASE,AROWNUMBERANDACOLUMNCONTAININGABFILELOCATORASELECTSTATEMENTRETRIEVESTHECONTENTSOFTHETABLEINTOARESULTSETTHEGETORACLEOBJECTTHENRETRIEVESTHECHARDATAINTOTHECHAR_DATUMVARIABLEANDTHEBFILELOCATORINTOTHEBFILE_DATUMVARIABLENOTETHATBECAUSEGETORACLEOBJECTRETURNSADATUMOBJECT,THERESULTSMUSTBECASTTOCHARANDBFILE,RESPECTIVELYSTMTEXECUTE“CREATETABLEBFILE_TABLEXVARCHAR230,BBFILE“STMTEXECUTE“INSERTINTOBFILE_TABLEVALUESONE,BFILENAMETEST_DIR,FILE1“RESULTSETRSETSTMTEXECUTEQUERY“SELECTFROMBFILE_TABLE“WHILERSETNEXTCHARCHAR_DATUMCHARORACLERESULTSETRSETGETORACLEOBJECT1BFILEBFILE_DATUMBFILEORACLERESULTSETRSETGETORACLEOBJECT2EXAMPLEUSINGGETORACLEOBJECTINACALLABLESTATEMENTTHEFOLLOWINGEXAMPLEPREPARESACALLTOTHEPROCEDUREMYGETDATE,WHICHASSOCIATESACHARACTERSTRINGINTHISCASEANAMEWITHADATETHEPROGRAMPASSESTHESTRINGSCOTTTOTHEPREPAREDCALLANDREGISTERSTHEDATETYPEASANOUTPUTPARAMETERAFTERTHECALLISEXECUTED,GETORACLEOBJECTRETRIEVESTHEDATEASSOCIATEDWITHTHENAMESCOTTNOTETHATBECAUSEGETORACLEOBJECTRETURNSADATUMOBJECT,THERESULTSARECASTTOADATEOBJECTORACLECALLABLESTATEMENTCSTMTORACLECALLABLESTATEMENTCONNPREPARECALL“BEGINMYGETDATE,END“CSTMTSETSTRING1,“SCOTT“CSTMTREGISTEROUTPARAMETER2,TYPESDATECSTMTEXECUTEDATEDATEDATEORACLECALLABLESTATEMENTCSTMTGETORACLEOBJECT2SUMMARYOFGETOBJECTANDGETORACLEOBJECTRETURNTYPESTABLE71SUMMARIZESTHEINFORMATIONINTHEPRECEDINGSECTIONS,“STANDARDGETOBJECTMETHOD“AND“ORACLEGETORACLEOBJECTMETHOD“ONPAGE74THISTABLELISTSTHEUNDERLYINGRETURNTYPESFOREACHMETHODFOREACHORACLESQLTYPE,BUTKEEPINMINDTHESIGNATURESOFTHEMETHODSWHENYOUWRITEYOURCODEGETOBJECTALWAYSRETURNSDATAINTOAJAVALANGOBJECTINSTANCEGETORACLEOBJECTALWAYSRETURNSDATAINTOANORACLESQLDATUMINSTANCEYOUMUSTCASTTHERETURNEDOBJECTTOUSEANYSPECIALFUNCTIONALITYSEE“CASTINGYOURGETMETHODRETURNVALUES“ONPAGE710TABLE71SUMMARYOFGETOBJECTANDGETORACLEOBJECTRETURNTYPESFORINFORMATIONONTYPECOMPATIBILITYBETWEENALLSQLANDJAVATYPES,SEETABLE201,“VALIDSQLDATATYPEJAVACLASSMAPPINGS“ONPAGE202OTHERGETXXXMETHODSSTANDARDJDBCPROVIDESAGETXXXFOREACHSTANDARDJAVATYPE,SUCHASGETBYTE,GETINT,GETFLOAT,ANDSOONEACHOFTHESERETURNSEXACTLYWHATTHEMETHODNAMEIMPLIESABYTE,ANINT,AFLOAT,ANDSOONINADDITION,THEORACLERESULTSETANDORACLECALLABLESTATEMENTCLASSESPROVIDEAFULLCOMPLEMENTOFGETXXXMETHODSCORRESPONDINGTOALLTHEORACLESQLTYPESEACHGETXXXMETHODRETURNSANORACLESQLXXXOBJECTFOREXAMPLE,GETROWIDRETURNSANORACLESQLROWIDOBJECTSOMEOFTHESEEXTENSIONSARETAKENFROMTHEJDBC20SPECIFICATIONTHEYRETURNOBJECTSOFTYPEJAVASQLORORACLEJDBC2UNDERJDK11X,INSTEADOFORACLESQLFOREXAMPLE,COMPARETHEFOLLOWINGMETHODNAMESANDRETURNTYPESJAVASQLBLOBGETBLOBINTPARAMETER_INDEXORACLESQLBLOBGETBLOBINTPARAMETER_INDEXALTHOUGHTHEREISNOPARTICULARPERFORMANCEADVANTAGEINUSINGTHESPECIFICGETXXXMETHODS,THEYCANSAVEYOUTHETROUBLEOFCASTING,BECAUSETHEYRETURNSPECIFICOBJECTTYPESRETURNTYPESANDINPUTPARAMETERTYPESOFGETXXXMETHODSTABLE72SUMMARIZESTHEUNDERLYINGRETURNTYPESANDTHEINPUTPARAMETERTYPESFOREACHGETXXXMETHOD,ANDNOTESWHICHAREORACLEEXTENSIONSUNDERJDK12XANDJDK11XYOUMUSTCASTTOANORACLERESULTSETORORACLECALLABLESTATEMENTTOUSEMETHODSTHATAREORACLEEXTENSIONSTABLE72SUMMARYOFGETXXXRETURNTYPESTABLE72SUMMARYOFGETXXXRETURNTYPESCONTSPECIALNOTESABOUTGETXXXMETHODSTHISSECTIONPROVIDESADDITIONALDETAILSABOUTSOMEOFTHEGETXXXMETHODSGETBIGDECIMALNOTEJDBC20SUPPORTSASIMPLIFIEDMETHODSIGNATUREFORTHEGETBIGDECIMALMETHODTHEPREVIOUSINPUTSIGNATUREWASINTCOLUMNINDEX,INTSCALEORSTRINGCOLUMNNAME,INTSCALETHENEWINPUTSIGNATUREISSIMPLYINTCOLUMNINDEXORSTRINGCOLUMNNAMETHESCALEPARAMETER,USEDTOSPECIFYTHENUMBEROFDIGITSTOTHERIGHTOFTHEDECIMAL,ISNOLONGERNECESSARYTHEORACLEJDBCDRIVERSRETRIEVENUMERICVALUESWITHFULLPRECISIONGETDATE,GETTIME,ANDGETTIMESTAMPNOTEINJDBC20,THEGETDATE,GETTIME,ANDGETTIMESTAMPMETHODSHAVETHEFOLLOWINGINPUTSIGNATURESINTCOLUMNINDEX,CALENDARCALORSTRINGCOLUMNNAME,CALENDARCALTHEORACLEJDBCDRIVERSIGNORETHECALENDAROBJECTINPUT,BECAUSEITISNOTCURRENTLYFEASIBLETOSUPPORTJAVASQLDATETIMEZONEINFORMATIONTOGETHERWITHTHEDATAYOUSHOULDCONTINUETOUSEPREVIOUSINPUTSIGNATURESTHATTAKEONLYTHECOLUMNINDEXORCOLUMNNAMECALENDARINPUTWILLBESUPPORTEDINAFUTUREORACLEJDBCRELEASECASTINGYOURGETMETHODRETURNVALUESASDESCRIBEDIN“STANDARDGETOBJECTMETHOD“ONPAGE74,ORACLESIMPLEMENTATIONOFGETOBJECTALWAYSRETURNSAJAVALANGOBJECTINSTANCE,ANDGETORACLEOBJECTALWAYSRETURNSANORACLESQLDATUMINSTANCEUSUALLY,YOUWOULDCASTTHERETURNEDOBJECTTOTHEAPPROPRIATECLASSSOTHATYOUCOULDUSEPARTICULARMETHODSANDFUNCTIONALITYOFTHATCLASSINADDITION,YOUHAVETHEOPTIONOFUSINGASPECIFICGETXXXMETHODINSTEADOFTHEGENERICGETOBJECTORGETORACLEOBJECTMETHODSTHEGETXXXMETHODSENABLEYOUTOAVOIDCASTING,BECAUSETHERETURNTYPEOFGETXXXCORRESPONDSTOTHETYPEOFOBJECTRETURNEDFOREXAMPLE,GETCLOBRETURNSANORACLESQLCLOBINSTANCE,ASOPPOSEDTOAJAVALANGOBJECTINSTANCEEXAMPLECASTINGRETURNVALUESTHISEXAMPLEASSUMESTHATYOUHAVEFETCHEDDATAOFTYPECHARINTOARESULTSETWHEREITISINCOLUMN1BECAUSEYOUWANTTOMANIPULATETHECHARDATAWITHOUTLOSINGPRECISION,CASTYOURRESULTSETTOANORACLERESULTSET,ANDUSEGETORACLEOBJECTTORETURNTHECHARDATAINORACLESQLFORMATIFYOUDONOTCASTYOURRESULTSET,YOUHAVETOUSEGETOBJECT,WHICHRETURNSYOURCHARACTERDATAINTOAJAVASTRINGANDLOSESSOMEOFTHEPRECISIONOFYOURSQLDATATHEGETORACLEOBJECTMETHODRETURNSANORACLESQLCHAROBJECTINTOANORACLESQLDATUMRETURNVARIABLEUNLESSYOUCASTTHEOUTPUTCASTTHEGETORACLEOBJECTOUTPUTTOORACLESQLCHARIFYOUWANTTOUSEACHARRETURNVARIABLEANDANYOFTHESPECIALFUNCTIONALITYOFTHATCLASSSUCHASTHEGETCHARACTERSETMETHODTHATRETURNSTHECHARACTERSETUSEDTOREPRESENTTHECHARACTERSCHARCHARCHARORSGETORACLEOBJECT1CHARACTERSETCSCHARGETCHARACTERSETALTERNATIVELY,YOUCANRETURNTHEOBJECTINTOAGENERICORACLESQLDATUMRETURNVARIABLEANDCASTITLATERWHENYOUMUSTUSETHECHARGETCHARACTERSETMETHODDATUMRAWDATUMORSGETORACLEOBJECT1CHARACTERSETCSCHARRAWDATUMGETCHARACTERSETTHISUSESTHEGETCHARACTERSETMETHODOFORACLESQLCHARTHEGETCHARACTERSETMETHODISNOTDEFINEDONORACLESQLDATUMANDWOULDNOTBEREACHABLEWITHOUTTHECASTSTANDARDSETOBJECTANDORACLESETORACLEOBJECTMETHODSJUSTASTHEREISASTANDARDGETOBJECTANDORACLESPECIFICGETORACLEOBJECTINRESULTSETSANDCALLABLESTATEMENTSFORRETRIEVINGDATA,THEREISALSOASTANDARDSETOBJECTANDANORACLESPECIFICSETORACLEOBJECTINORACLEPREPAREDSTATEMENTSANDCALLABLESTATEMENTSFORUPDATINGDATATHESETORACLEOBJECTMETHODSTAKEORACLESQLINPUTPARAMETERSTOBINDSTANDARDJAVATYPESTOAPREPAREDSTATEMENTORCALLABLESTATEMENT,USETHESETOBJECTMETHOD,WHICHTAKESAJAVALANGOBJECTASINPUTTHESETOBJECTMETHODDOESSUPPORTAFEWOFTHEORACLESQLTYPESITHASBEENIMPLEMENTEDSOTHATYOUCANALSOINPUTINSTANCESOFTHEORACLESQLCLASSESTHATCORRESPONDTOJDBC20COMPLIANTORACLEEXTENSIONSBLOB,CLOB,BFILE,STRUCT,REF,ANDARRAYTOBINDORACLESQLTYPESTOAPREPAREDSTATEMENTORCALLABLESTATEMENT,USETHESETORACLEOBJECTMETHOD,WHICHTAKESANORACLESQLDATUMORANYSUBCLASSASINPUTTOUSESETORACLEOBJECT,YOUMUSTCASTYOURPREPAREDSTATEMENTORCALLABLESTATEMENTTOANORACLEPREPAREDSTATEMENTORORACLECALLABLESTATEMENTOBJECTEXAMPLEUSINGSETOBJECTANDSETORACLEOBJECTINAPREPAREDSTATEMENTTHISEXAMPLEASSUMESTHATYOUHAVEFETCHEDCHARACTERDATAINTOASTANDARDRESULTSETWHEREITISINCOLUMN1,ANDYOUWANTTOCASTTHERESULTSTOANORACLERESULTSETSOTHATYOUCANUSEORACLESPECIFICFORMATSANDMETHODSBECAUSEYOUWANTTOUSETHEDATAASORACLESQLCHARFORMAT,CASTTHERESULTSOFTHEGETORACLEOBJECTWHICHRETURNSTYPEORACLESQLDATUMTOCHARSIMILARLY,BECAUSEYOUWANTTOMANIPULATETHEDATAINCOLUMN2ASSTRINGS,CASTTHEDATATOAJAVASTRINGTYPEBECAUSEGETOBJECTRETURNSDATAOFTYPEOBJECTINTHISEXAMPLE,RSREPRESENTSTHERESULTSET,CHARVALREPRESENTSTHEDATAFROMCOLUMN1INORACLESQLCHARFORMAT,ANDSTRVALREPRESENTSTHEDATAFROMCOLUMN2INJAVASTRINGFORMATCHARCHARVALCHARORACLERESULTSETRSGETORACLEOBJECT1STRINGSTRVALSTRINGRSGETOBJECT2FORAPREPAREDSTATEMENTOBJECTPS,THESETORACLEOBJECTMETHODBINDSTHEORACLESQLCHARDATAREPRESENTEDBYTHECHARVALVARIABLETOTHEPREPAREDSTATEMENTTOBINDTHEORACLESQLDATA,THEPREPAREDSTATEMENTMUSTBECASTTOANORACLEPREPAREDSTATEMENTSIMILARLY,THESETOBJECTMETHODBINDSTHEJAVASTRINGDATAREPRESENTEDBYTHEVARIABLESTRVALPREPAREDSTATEMENTPSCONNPREPARESTATEMENT“TEXT_OF_PREPARED_STATEMENT“ORACLEPREPAREDSTATEMENTPSSETORACLEOBJECT1,CHARVALPSSETOBJECT2,STRVALOTHERSETXXXMETHODSASWITHGETXXXMETHODS,THEREARESEVERALSPECIFICSETXXXMETHODSSTANDARDSETXXXMETHODSAREPROVIDEDFORBINDINGSTANDARDJAVATYPES,ANDORACLESPECIFICSETXXXMETHODSAREPROVIDEDFORBINDINGORACLESPECIFICTYPESNOTEUNDERJDK11X,FORCOMPATIBILITYWITHTHEJDBC20STANDARD,ORACLEPREPAREDSTATEMENTANDORACLECALLABLESTATEMENTCLASSESPROVIDESETXXXMETHODSTHATTAKEORACLEJDBC2INPUTPARAMETERSFORBLOBS,CLOBS,OBJECTREFERENCES,ANDARRAYSFOREXAMPLE,ASETBLOBMETHODTAKESANORACLEJDBC2BLOBINPUTPARAMETER,WHEREITWOULDTAKEAJAVASQLBLOBINPUTPARAMETERUNDERJDK12XSIMILARLY,THEREARETWOFORMSOFTHESETNULLMETHODVOIDSETNULLINTPARAMETERINDEX,INTSQLTYPEVOIDSETNULLINTPARAMETERINDEX,INTSQLTYPE,STRINGSQL_TYPE_NAME中文翻譯存取訪問和操作ORACLE數(shù)據(jù)這一章描述數(shù)據(jù)存取訪問以O(shè)RACLESQL方式,和標(biāo)準(zhǔn)JAVA形式相對照。因?yàn)樵谝郧暗恼鹿?jié)描述過,ORACLESQL方式是ORACLEJDBC的一個(gè)重要擴(kuò)展因素,它在操作SQL數(shù)據(jù)時(shí)在效率和精確度上有著重要的優(yōu)勢。用ORACLESQL方式涉及到計(jì)算結(jié)果集和語句相關(guān)ORACLERESULTSET,ORACLESTATEMENT,ORACLEPREPAREDSTATEMENT,和ORACLECALLABLESTATEMENT對象,按照適合的,用這些類的GETORACLEOBJECT,SETORACLEOBJECT,GETXXX和SETXXX方法XXX是在ORACLESQL包里相符的類型。這一章包括以下標(biāo)題數(shù)據(jù)轉(zhuǎn)換考慮結(jié)果集和語句擴(kuò)展關(guān)于標(biāo)準(zhǔn)JDBC,ORACLE的GET和SET方法的比較用結(jié)果集原數(shù)據(jù)擴(kuò)展數(shù)據(jù)轉(zhuǎn)換考慮當(dāng)JDBC程序檢索SQL數(shù)據(jù)到JAVA,你可以用標(biāo)準(zhǔn)JAVA類型或者ORACLESQL包中的類型。在此包中的類簡單地包裝原SQL數(shù)據(jù)。標(biāo)準(zhǔn)類型與ORACLE類型在過程的速度和影響中,ORACLESQL類提供了最有效率的方法表現(xiàn)數(shù)據(jù)。這些類按照BYTE排列形式存儲常見的SQL數(shù)據(jù)表現(xiàn)形式。這些類以比特存儲常見的SQL數(shù)據(jù)形式。它們不重新格式化或執(zhí)行任何字符組轉(zhuǎn)換除了常見的網(wǎng)絡(luò)轉(zhuǎn)換。數(shù)據(jù)保留SQL形式,因此沒有信息丟失。對于SQL的標(biāo)準(zhǔn)類型如NUMBER,和CHAR,ORACLESQL類簡單地包裝了SQL數(shù)據(jù)。對于結(jié)構(gòu)類型如OBJECTS和數(shù)組,這些類提供傳統(tǒng)的信息如轉(zhuǎn)化方法和結(jié)構(gòu)細(xì)節(jié)。如果你在數(shù)據(jù)庫里移動數(shù)據(jù),你可能會想要保持?jǐn)?shù)據(jù)以O(shè)RACLESQL的形式。如果你要運(yùn)行在數(shù)據(jù)庫外的JAVA程序中顯示數(shù)據(jù)或執(zhí)行計(jì)算,你可能想實(shí)現(xiàn)數(shù)據(jù)以實(shí)例標(biāo)準(zhǔn)類型像JAVASQL或者JAVALANG型。相似地,如果你想要分析數(shù)據(jù)成為一個(gè)標(biāo)準(zhǔn)JAVA形式,你必須用一個(gè)標(biāo)準(zhǔn)形式代替ORACLESQL。轉(zhuǎn)換SQL空數(shù)據(jù)JAVA是以JAVA值空來表示一個(gè)SQL空值。JAVA數(shù)據(jù)類型分為兩種標(biāo)準(zhǔn)類型如BYTE,INT,F(xiàn)LOAT和對象類型類事例。標(biāo)準(zhǔn)類型不能表示NULL。但是可以存儲NULL用零表示JDBC定義。這樣當(dāng)你顯示你的結(jié)果時(shí)不會含糊不清。相反地,JAVA對象類型能夠表現(xiàn)空值。JAVA語言定義一個(gè)對象封裝類型相對應(yīng)每一個(gè)能表示空值的標(biāo)準(zhǔn)類型例如,INTEGER對應(yīng)INT,F(xiàn)LOAT對應(yīng)FLOAT。對象封裝類型必須用作SQL數(shù)據(jù)目標(biāo)去檢測SQL控制避免含糊不清。結(jié)果集和語句擴(kuò)展JDBC語句對象返回一個(gè)ORACLERESULTSET對象,定義為一個(gè)JAVASQLRESULTSET,如果你只想標(biāo)準(zhǔn)JDBC方法適用于對象,應(yīng)該把它設(shè)為RESULTSET類型。然而你想用ORACLE擴(kuò)展對象,你必須把它設(shè)置為ORACLERESULTSET類型。盡管通過JAVA編譯器能指定對象的這種類型可以改變,但對象自身不能夠改變。舉個(gè)例子,假設(shè)你定義了一個(gè)標(biāo)準(zhǔn)語句對象STMT,只想用標(biāo)準(zhǔn)JDBCRESULTSET方法,執(zhí)行下面的語句RESULTSETRSSTMTEXECUTEQUERY“SELECTFROMEMP”如果你需要ORACLE可擴(kuò)展的函數(shù)性到JDBC,可以選擇結(jié)果變成一個(gè)標(biāo)準(zhǔn)的結(jié)果集對象,而且之后可以把對象變成一個(gè)ORACLERESULTSET對象。相似地當(dāng)想要通過一個(gè)可執(zhí)行語句執(zhí)行一個(gè)存儲過程,JDBC驅(qū)動程序?qū)⒎祷匾粋€(gè)通過一個(gè)JAVASQLCALLABLESTATEMENT定義的ORACLECALLABLESTATEMENT對象。如果你只想標(biāo)準(zhǔn)JDBC方法適用于對象,應(yīng)該把它設(shè)為一個(gè)CALLABLESTATEMENT類型。然而你想用ORACLE擴(kuò)展對象,你必須把它設(shè)置為ORACLECALLABLESTATEMENT類型。盡管通過JAVA編譯器能指定對象的這種類型可以改變,但對象自身不能夠改變。用一個(gè)標(biāo)準(zhǔn)JDBCJAVASQLCONNECTIONPREPARESTEMENT方法去創(chuàng)建一個(gè)PREPARESTEMENT對象。如果你只想標(biāo)準(zhǔn)JDBC方法適用于對象,應(yīng)該把它設(shè)為一個(gè)PREPARESTEMENT類型。然而你想用ORACLE擴(kuò)展對象,你必須把它設(shè)置為ORACLEPREPARESTEMENT類型。盡管通過JAVA編譯器能指定對象的這種類型可以改變,但對象自身不能夠改變。結(jié)果集和語句類擴(kuò)展的關(guān)鍵包括GETORACLEOBJECT和SETORACLEOBJECT方法,它們能夠使用和操作數(shù)據(jù)以O(shè)RACLESQL的方式代替標(biāo)準(zhǔn)JAVA方式。更多的信息,請看下一章”連接標(biāo)準(zhǔn)JDBCORACLE的GET、SET方法比較”。連接標(biāo)準(zhǔn)JDBCORACLE的GET、SET方法比較這一章描述GET和SET方法,特別是JDBC標(biāo)準(zhǔn)GETOBJECT、SETOBJECT方法和ORACLESPECIFICGETORACLEOBJECT和SETORACLEOBJECT方法,以及怎樣存取訪問數(shù)據(jù)以和JAVA方式比較的ORACLESQL方式。盡管有特有的GET方法給所有的ORACLESQL類型其它的GET方法描述在77頁,但用常規(guī)的GET方法就很方便和簡單,或者你不確定收到哪種數(shù)據(jù)類型更提前。標(biāo)準(zhǔn)GETOBJECT方法一個(gè)結(jié)果集或者可執(zhí)行語句的標(biāo)準(zhǔn)JDBCGETOBJECT方法以一個(gè)JAVALANGOBJECT對象返回?cái)?shù)據(jù)。數(shù)據(jù)返回的方法基于它的原類型,如下SQL數(shù)據(jù)類型不是數(shù)據(jù)庫特有的,GETOBJECT方法返回符合列表SQL類型的缺省JAVA類型,遵循JDBC具體指定的映像。ORACLESPECIFIC數(shù)據(jù)類型例如ROWID,討論ORACLEROWID類型在633頁,GETOBJECT返回一個(gè)合適ORACLESQL類的對象例如ORACLESQLROWIDORACLE對象,GETOBJECT返回一個(gè)類型映像規(guī)定的JAVA類對象。類型映像具體定義了JAVA類和數(shù)據(jù)庫SQL之間的相互關(guān)系,討論”理解類型映像SQL數(shù)據(jù)執(zhí)行”在911頁。GETOBJECTPARAMETER_INDEX方法用缺省類型映射聯(lián)系。GETOBJECTPARAMETER_INDEX,MAP方法能以一個(gè)類型映射通過。如果類型映射不能提供一個(gè)對特殊ORACLE對象的映射,GETOBJECT返回一個(gè)ORACLESQLSTUCT對象。更多GETOBJECT信息,返回類型,見表71,”GETOBJECT、GETORACLEOBJECT和返回類型的概述”在76頁。ORACLEGETORACLEOBJECT方法如果想要從一個(gè)結(jié)果集和可執(zhí)行語句中檢索數(shù)據(jù)使之變成ORACLESQL對象,那么就把結(jié)果集變成一個(gè)ORACLERESULTSET類型或者把可執(zhí)行語句變成一個(gè)ORACLECALLABLESTATEMENT類型,用GETORACLEOBJECT方法。當(dāng)你用GETORACLEOBJECT方法,數(shù)據(jù)將會是一個(gè)合適的ORACLESQL類型,以O(shè)RACLESQLDATUM對象返回ORACLESQL類型繼承DATUM。方法標(biāo)記是PUBLICORACLESQLDATUMGETORACLEOBJECTINTPARAMETER_INDEX當(dāng)時(shí)數(shù)據(jù)恢復(fù)成一個(gè)DATUM對
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年供暖設(shè)備安裝合同協(xié)議
- 2026年環(huán)保項(xiàng)目治理委托合同
- 2026年法律訴訟代理委托合同
- 樓房裝修承包合同
- 家校工作培訓(xùn)課件
- 家政老年護(hù)理培訓(xùn)課件
- 培訓(xùn)班孩子安全合同課件
- 培訓(xùn)安全知識目的課件
- 培訓(xùn)事業(yè)部安全生產(chǎn)職責(zé)課件
- 商戶安全培訓(xùn)通知模板課件
- 土木工程科學(xué)數(shù)據(jù)分析方法 課件 第3章 試驗(yàn)數(shù)據(jù)誤差及處理 -
- 1807《經(jīng)濟(jì)學(xué)(本)》國家開放大學(xué)期末考試題庫
- 2025年北京航空航天大學(xué)馬克思主義基本原理概論期末考試模擬題帶答案解析(必刷)
- 2026年演出經(jīng)紀(jì)人考試題庫附參考答案(完整版)
- 高一物理(人教版)試題 必修二 階段質(zhì)量檢測(一) 拋體運(yùn)動
- 美團(tuán)代運(yùn)營服務(wù)合同協(xié)議模板2025
- 2025-2026學(xué)年人教版七年級生物上冊知識點(diǎn)梳理總結(jié)
- 2025年新修訂版《森林草原防滅火條例》全文+修訂宣貫解讀課件(原創(chuàng))
- 2025年秋魯教版(新教材)小學(xué)信息科技三年級上冊期末綜合測試卷及答案(三套)
- 工業(yè)設(shè)計(jì)工作流程及標(biāo)準(zhǔn)教程
- 2025年放射技師考試真題及答案
評論
0/150
提交評論