在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 應用軟件教程 > 詳細頁面

ORACLE自帶的JDBC源代碼解析

ORACLE自帶的JDBC源代碼解析

更新時間:2025-10-17 文章作者:未知 信息來源:網絡 閱讀次數:

數據庫,簡而言之可視為電子化的文件柜——存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。所謂“數據庫”是以一定方式儲存在一起、能與多個用戶共享、具有盡可能小的冗余度、與應...
數據庫,簡而言之可視為電子化的文件柜——存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。所謂“數據庫”是以一定方式儲存在一起、能與多個用戶共享、具有盡可能小的冗余度、與應用程序彼此獨立的數據集合。
約定:
        1、如果出現 java.lang.UnsatisfiedLinkError: do_open,則你需要把 DriverManager.getConnection() 方法的 url 修改成 jdbc:oracle:thin:@127.0.0.1:1521:oradb,具體原因未知;
        2、如果出現 java.sql.SQLException: 不支持的字符集: oracle-character-set-852,則你需要把 nls_charset12.zip加入你的工程中(此文件與 classes12.zip 同目錄);
        下面我就把文件夾\samples\oci8\object-samples下的文件做一個詳細的功能描述:
        1、PersonObject.java
        這個例子演示了表 people 中存在ADT字段 empid,其類型為 PERSON,而且類型 PERSON中存在ADT字段 home,其類型為 ADDRESS,而且類型 ADDRESS是一個ADT。
        如果使用常規SQL語句,其插入語句與在sql/plus中無異,即:使用構造函數嵌套構造。
        另有一種方法,使用 STRUCT 的構造函數 STRUCT(StructDescriptor, Connection, Object[]) 構造出一個STRUCT對象,即一個ADT對象。同時,如果有嵌套則需要嵌套構造ADT對象。最后通過 PreparedStatement的 setObject方法指定ADT對象即可。
        讀取數據時則采用與上述方法相逆的辦法:如果是簡單類型,則直接讀取;如果是ADT,則使用ResultSet的getObject(),再強制轉換成STRUCT,然后調用STRUCT的getAttributes()方法取得 Object[] 類型數據,如是遞歸。
        2、SQLDataExample.java與EmployeeObj.java
        此例與1中相似,也是對ADT的處理,不同的是類型沒有嵌套。
        比較而言,2比1的代碼簡潔了很多,不過也是付出了代價:為類型 EMPLOYEE 抽象出一個類EmployeeObj,它實現了SQLData接口,并重寫了三個方法(必須的)。
        前臺的調用比1中的第二種方法簡潔了很多,只需要直接使用PreparedStatement的 setObject方法指定ADT對象即可(不過需要指定其類型為OracleTypes.STRUCT)。讀取時也可直接使用OracleResultSet的getObject()并強制轉換成EmployeeObj對象即可。
        真可謂是:有得必有失!!
        另,此例中有幾處需要注意的地方:
        2.1 EmployeeObj.java中的 import oracle.jdbc2.*; 改成 import oracle.jdbc.*; 原因未知;
        2.2 SQLDataExample.java 中的 Dictionary map = conn.getTypeMap(); 改成 java.util.Map map = conn.getTypeMap(); 原因:NOTE:  This class(指的是Dictionary) is obsolete. New implementations should implement the Map interface, rather than extendidng this class.(來源:javadoc);
        2.3 SQLDataExample.java 中的 pstmt.executeQuery(); 改成 pstmt.executeUpdate(); 更合理些,因為這是更新而非查詢(不改也不會影響功能,只是建議);
        3、CustomDatumExample.java與Employee.java
        此例與2完全相同。不同的是采用了另外一種抽象技術,并實現了接口CustomDatum 與 CustomDatumFactory,并重寫了二個方法toDatum()與create()。在前臺訪問數據時亦有少許不同:采用了OracleResultSet的getCustomDatum()方法并把它強制轉換成Employee。從外觀上看,2中SQLData接口存在于 java.sql.* 包中;而接口CustomDatum 與 CustomDatumFactory則存在于oracle.sql.*包中,可以認為是Oracle公司對自己產品的專門實現。或許有更高的性能、更小的開銷?不過3不如2來得直接,個人認為。
        4、ArrayExample.java
        從文件名可看出,此示例演示的是VARRAY類型。
        同1,插入亦有兩種方法。一種可直接使用SQL;另外,可使用OraclePreparedStatement的setARRAY方法,構造ARRAY的過程與構造 STRUCT 無異。數據的讀取過程與此相反:先使用OracleResultSet的getARRAY()方法取得ARRAY對象,再調用此對象的getArray()方法并強制轉換成對象數組,然后對此數組操作即可。
        5、PersonRef.java與StudentRef.java
        不知是不是ORACLE與我們開玩笑,這兩個文件除了類名不同外,其余一切相同。
        這個例子給我們演示的是對象表的概念。對象表的插入與普通表沒有任何不同,數據的讀取首先體現在其SQL上,需要使用REF函數,然后調用ResultSet的getObject()方法并強制轉換成REF對象,再利用此對象的getValue()并轉換成STRUCT對象,再利用此對象 的getAttributes()方法得到Object[],然后對此數組操作即可。
        6、RefClient.java與GenREF.java
        This sample demonstrates using REF over two different Sessions.
        類GenREF用來封裝REF對象所指向的類型及其二進制內容。程序先Materialize into GenREF,然后在另一會話中De-materialize REF from GenREF,下面就與處理REF相同:利用此對象的getValue()并轉換成STRUCT對象,再利用此對象 的getAttributes()方法得到Object[],然后對此數組操作即可。
        7、FileExample.java與PLSQL_FileExample.java
        此示例使用 BFILE 數據類型,Contains a locator(定位器) to a large binary file stored outside the database。數據插入時需要使用函數 bfilename,這個函數需要目錄對象,此對象需要使用create directory mydir來創建(此用戶需具有CREATE ANY DIRECTORY系統權限)。我曾在這個地方有個大教訓:按著步驟做,可在讀取時總是提示我沒有此目錄!!最后,我把BFILENAME函數的第一個參數(即目錄名)大寫就好了。原因:目錄名在函數中區分大小寫,雖然我們創建它時用的是小寫,可到了數據庫中后就自動變成了大寫。
        讀取BFILE類型的數據時,首先通過其getBinaryStream()方法得到二進制的輸入流,然后操作這個輸入流就可以了。The limitation is your imagination。
        PLSQL_FileExample.java實現的功能與上述的相同,只不過所有針對BFILE的操作都是通過調用pl/sql匿名塊來完成的,并使用了OracleCallableStatement。如果沒有必要,使用前者即可。
        8、LobExample.java與PLSQL_LobExample.java
        此示例使用了CLOB和BLOB數據類型。
        插入數據時,需要分別通過getBinaryOutputStream()和getCharacterOutputStream()得到二進制輸出流和字符輸出流,然后就是針對此輸出流的操作了,與傳統的 java I/O 相同。
        讀取數據時,需要分別通過getBinaryStream()和getCharacterStream()得到二進制輸入流和字符輸入流,然后就是針對此輸入流的操作了,與傳統的 java I/O 相同。
        PLSQL_LobExample.java實現的功能與上述的相同,只不過所有針對CLOB和BLOB的操作都是通過調用pl/sql匿名塊來完成的,并使用了OracleCallableStatement。如果沒有必要,使用前者即可。
    
        注:7、8的第二個示例中均使用到了dbms_lob程序包。

全新的路由器不僅讓你更穩定快速地連接無線網絡,更可以讓家中的智能設備連接在一起。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • av网站手机在线观看| 水蜜桃色314在线观看| 欧美性猛交久久久乱大交小说| 熟妇熟女乱妇乱女网站| 五月花丁香婷婷| www.天天射.com| 老熟妇仑乱视频一区二区| 欧美三级一级片| 欧美成人免费高清视频| 久久久久国产精品熟女影院| 116极品美女午夜一级| 国产v亚洲v天堂无码久久久| av丝袜天堂网| 中文字幕在线视频一区二区三区| 日本超碰在线观看| 精品久久免费观看| 成人区一区二区| 日本精品一区在线观看| 国产a级一级片| 182午夜在线观看| 青青在线免费视频| 91好吊色国产欧美日韩在线| 激情六月丁香婷婷| 亚洲第一天堂久久| 成人一级生活片| 国产一区视频免费观看| 九九热免费在线观看| 视色,视色影院,视色影库,视色网 日韩精品福利片午夜免费观看 | 黄色片网址在线观看| 国产91在线视频观看| 999这里有精品| 免费看欧美一级片| 九九视频精品在线观看| 善良的小姨在线| 韩国日本在线视频| 在线观看污视频| 嫩草av久久伊人妇女超级a| 三年中文高清在线观看第6集| 大陆av在线播放| 在线免费黄色小视频| 激情综合在线观看| 日本人妻伦在线中文字幕| 网站一区二区三区| 水蜜桃色314在线观看| 性欧美在线视频| 超碰在线97免费| 麻豆tv在线播放| 老汉色影院首页| 亚洲欧美日韩一级| 亚洲熟妇av一区二区三区漫画| 熟妇熟女乱妇乱女网站| 中文字幕av不卡在线| 日本精品一区在线观看| av网站手机在线观看| 8x8x华人在线| 丰满女人性猛交| 日韩av片免费观看| 在线观看国产中文字幕| 欧美亚洲国产成人| 欧美激情 国产精品| 草草草视频在线观看| 特级西西444| 伊人网在线免费| 中国黄色录像片| gogogo免费高清日本写真| 福利视频999| 一级黄色片在线免费观看| 亚洲欧美在线精品| 亚洲精品综合在线观看| 国产成人美女视频| 中文字幕一区二区在线观看视频 | 久久亚洲a v| 男人的天堂avav| 福利视频一二区| 久久久久久久午夜| 老司机午夜av| 亚洲第一天堂久久| 麻豆传媒网站在线观看| 成人区一区二区| 91猫先生在线| 天堂在线资源视频| 亚洲综合123| 水蜜桃色314在线观看| 国产精品-区区久久久狼| 亚洲一区在线不卡| 亚洲三级在线观看视频| 菠萝蜜视频在线观看入口| av高清在线免费观看| 无码无遮挡又大又爽又黄的视频| 狠狠热免费视频| 亚洲在线观看网站| 日韩精品一区二区免费| 精品一卡二卡三卡| 91蝌蚪视频在线| 黄色一级片在线看| 亚洲国产精品三区| 黄色成人在线免费观看| 激情内射人妻1区2区3区| 亚洲精品免费一区亚洲精品免费精品一区| 色18美女社区| 乱妇乱女熟妇熟女网站| 手机版av在线| 亚洲人精品午夜射精日韩 | 亚洲熟妇国产熟妇肥婆| 99热这里只有精品在线播放| 337p亚洲精品色噜噜狠狠p| 久久精品免费一区二区| 九九九九九九九九| 成人在线观看a| 妺妺窝人体色www看人体| 日本xxxx黄色| 男人揉女人奶房视频60分| 日本老太婆做爰视频| 色哟哟精品视频| 337p粉嫩大胆噜噜噜鲁| 狠狠精品干练久久久无码中文字幕| 日韩精品―中文字幕| 国产a级片免费看| 黄色手机在线视频| 久久美女福利视频| 久操网在线观看| 国产精品av免费观看| 亚洲精品手机在线观看| 国产91对白刺激露脸在线观看| 天天久久综合网| 污污的网站免费| 亚洲精品一二三四五区| 不要播放器的av网站| 欧美日韩一道本| 免费国产a级片| 日韩国产一级片| 白白操在线视频| 国产在线视频在线| 国内少妇毛片视频| 精品欧美一区免费观看α√| 九九久久九九久久| 9色porny| 欧美国产日韩激情| 欧美一区二区视频在线播放| 无码人妻精品一区二区蜜桃百度| 国产999免费视频| 日本一区二区三区四区五区六区| 91亚洲一区二区| 五月天综合婷婷| 欧美日韩中文字幕在线播放| 成年人深夜视频| 婷婷五月综合缴情在线视频| 欧美日韩在线一| 国产福利一区视频| 97人人爽人人| 久久视频免费在线| 亚洲熟妇国产熟妇肥婆| 亚洲成熟丰满熟妇高潮xxxxx| 国产一区亚洲二区三区| 色一情一区二区三区| 午夜免费视频网站| 黄色大片在线免费看| av无码精品一区二区三区| 特级丰满少妇一级| 在线观看av的网址| 毛片av免费在线观看| www.污网站| 日本福利视频一区| 人人爽人人av| 老司机av福利| 夫妻免费无码v看片| 中文字幕第66页| 玩弄中年熟妇正在播放| 99热一区二区| 国产中文字幕二区| 日韩 国产 一区| 一区二区传媒有限公司| 午夜福利123| 久久久精品在线视频| 亚洲18在线看污www麻豆| 黄色一级视频在线播放| 涩涩网站在线看| 国产福利一区视频| 久青草视频在线播放| 手机免费av片| 青青青国产在线视频| 丰满少妇大力进入| 小明看看成人免费视频| 国产最新免费视频| www.av毛片| 18视频在线观看娇喘| 亚洲欧美在线精品| 99精品视频播放| 黄色一级片播放| 毛片在线视频观看| 久久人人爽人人片| 黄色aaaaaa| 国产九九热视频| 草草草在线视频| 免费裸体美女网站| 成年人午夜视频在线观看| 免费看日b视频| 日本黄色播放器| 四虎精品欧美一区二区免费| 午夜大片在线观看|