翻译文献-存取访问和操作oracle数据_第1页
翻译文献-存取访问和操作oracle数据_第2页
翻译文献-存取访问和操作oracle数据_第3页
翻译文献-存取访问和操作oracle数据_第4页
翻译文献-存取访问和操作oracle数据_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

外文原文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数据这一章描述数据存取访问以ORACLESQL方式,和标准JAVA形式相对照。因为在以前的章节描述过,ORACLESQL方式是ORACLEJDBC的一个重要扩展因素,它在操作SQL数据时在效率和精确度上有着重要的优势。用ORACLESQL方式涉及到计算结果集和语句相关ORACLERESULTSET,ORACLESTATEMENT,ORACLEPREPAREDSTATEMENT,和ORACLECALLABLESTATEMENT对象,按照适合的,用这些类的GETORACLEOBJECT,SETORACLEOBJECT,GETXXX和SETXXX方法XXX是在ORACLESQL包里相符的类型。这一章包括以下标题数据转换考虑结果集和语句扩展关于标准JDBC,ORACLE的GET和SET方法的比较用结果集原数据扩展数据转换考虑当JDBC程序检索SQL数据到JAVA,你可以用标准JAVA类型或者ORACLESQL包中的类型。在此包中的类简单地包装原SQL数据。标准类型与ORACLE类型在过程的速度和影响中,ORACLESQL类提供了最有效率的方法表现数据。这些类按照BYTE排列形式存储常见的SQL数据表现形式。这些类以比特存储常见的SQL数据形式。它们不重新格式化或执行任何字符组转换除了常见的网络转换。数据保留SQL形式,因此没有信息丢失。对于SQL的标准类型如NUMBER,和CHAR,ORACLESQL类简单地包装了SQL数据。对于结构类型如OBJECTS和数组,这些类提供传统的信息如转化方法和结构细节。如果你在数据库里移动数据,你可能会想要保持数据以ORACLESQL的形式。如果你要运行在数据库外的JAVA程序中显示数据或执行计算,你可能想实现数据以实例标准类型像JAVASQL或者JAVALANG型。相似地,如果你想要分析数据成为一个标准JAVA形式,你必须用一个标准形式代替ORACLESQL。转换SQL空数据JAVA是以JAVA值空来表示一个SQL空值。JAVA数据类型分为两种标准类型如BYTE,INT,FLOAT和对象类型类事例。标准类型不能表示NULL。但是可以存储NULL用零表示JDBC定义。这样当你显示你的结果时不会含糊不清。相反地,JAVA对象类型能够表现空值。JAVA语言定义一个对象封装类型相对应每一个能表示空值的标准类型例如,INTEGER对应INT,FLOAT对应FLOAT。对象封装类型必须用作SQL数据目标去检测SQL控制避免含糊不清。结果集和语句扩展JDBC语句对象返回一个ORACLERESULTSET对象,定义为一个JAVASQLRESULTSET,如果你只想标准JDBC方法适用于对象,应该把它设为RESULTSET类型。然而你想用ORACLE扩展对象,你必须把它设置为ORACLERESULTSET类型。尽管通过JAVA编译器能指定对象的这种类型可以改变,但对象自身不能够改变。举个例子,假设你定义了一个标准语句对象STMT,只想用标准JDBCRESULTSET方法,执行下面的语句RESULTSETRSSTMTEXECUTEQUERY“SELECTFROMEMP”如果你需要ORACLE可扩展的函数性到JDBC,可以选择结果变成一个标准的结果集对象,而且之后可以把对象变成一个ORACLERESULTSET对象。相似地当想要通过一个可执行语句执行一个存储过程,JDBC驱动程序将返回一个通过一个JAVASQLCALLABLESTATEMENT定义的ORACLECALLABLESTATEMENT对象。如果你只想标准JDBC方法适用于对象,应该把它设为一个CALLABLESTATEMENT类型。然而你想用ORACLE扩展对象,你必须把它设置为ORACLECALLABLESTATEMENT类型。尽管通过JAVA编译器能指定对象的这种类型可以改变,但对象自身不能够改变。用一个标准JDBCJAVASQLCONNECTIONPREPARESTEMENT方法去创建一个PREPARESTEMENT对象。如果你只想标准JDBC方法适用于对象,应该把它设为一个PREPARESTEMENT类型。然而你想用ORACLE扩展对象,你必须把它设置为ORACLEPREPARESTEMENT类型。尽管通过JAVA编译器能指定对象的这种类型可以改变,但对象自身不能够改变。结果集和语句类扩展的关键包括GETORACLEOBJECT和SETORACLEOBJECT方法,它们能够使用和操作数据以ORACLESQL的方式代替标准JAVA方式。更多的信息,请看下一章”连接标准JDBCORACLE的GET、SET方法比较”。连接标准JDBCORACLE的GET、SET方法比较这一章描述GET和SET方法,特别是JDBC标准GETOBJECT、SETOBJECT方法和ORACLESPECIFICGETORACLEOBJECT和SETORACLEOBJECT方法,以及怎样存取访问数据以和JAVA方式比较的ORACLESQL方式。尽管有特有的GET方法给所有的ORACLESQL类型其它的GET方法描述在77页,但用常规的GET方法就很方便和简单,或者你不确定收到哪种数据类型更提前。标准GETOBJECT方法一个结果集或者可执行语句的标准JDBCGETOBJECT方法以一个JAVALANGOBJECT对象返回数据。数据返回的方法基于它的原类型,如下SQL数据类型不是数据库特有的,GETOBJECT方法返回符合列表SQL类型的缺省JAVA类型,遵循JDBC具体指定的映像。ORACLESPECIFIC数据类型例如ROWID,讨论ORACLEROWID类型在633页,GETOBJECT返回一个合适ORACLESQL类的对象例如ORACLESQLROWIDORACLE对象,GETOBJECT返回一个类型映像规定的JAVA类对象。类型映像具体定义了JAVA类和数据库SQL之间的相互关系,讨论”理解类型映像SQL数据执行”在911页。GETOBJECTPARAMETER_INDEX方法用缺省类型映射联系。GETOBJECTPARAMETER_INDEX,MAP方法能以一个类型映射通过。如果类型映射不能提供一个对特殊ORACLE对象的映射,GETOBJECT返回一个ORACLESQLSTUCT对象。更多GETOBJECT信息,返回类型,见表71,”GETOBJECT、GETORACLEOBJECT和返回类型的概述”在76页。ORACLEGETORACLEOBJECT方法如果想要从一个结果集和可执行语句中检索数据使之变成ORACLESQL对象,那么就把结果集变成一个ORACLERESULTSET类型或者把可执行语句变成一个ORACLECALLABLESTATEMENT类型,用GETORACLEOBJECT方法。当你用GETORACLEOBJECT方法,数据将会是一个合适的ORACLESQL类型,以ORACLESQLDATUM对象返回ORACLESQL类型继承DATUM。方法标记是PUBLICORACLESQLDATUMGETORACLEOBJECTINTPARAMETER_INDEX当时数据恢复成一个DATUM对

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论