欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
通過(guò)Java操控Oracle對象(1)

對象是用戶(hù)自定義的復合數據, 它封裝了數據及操作數據的方法.
Oracle中也可以自定義對象, 但本文并不重點(diǎn)討論如何在Oracle中創(chuàng )建及操作對象,
我們只關(guān)注如何通過(guò)Java來(lái)操縱Oracle中的對象.

有兩種方式可能操縱Oracle 對象:
    1, 通過(guò)標準Java Struct對象;
    2, 通過(guò)Oracle STRUCT對象;

我們先簡(jiǎn)單的從讀取Oracle對象入手, 初步了解一下Java是如何訪(fǎng)問(wèn)Oracle對象的.

首先在DB中CREATE一個(gè)對象DEMO_TYPE:
CREATE TYPE DEMO_TYPE AS OBJECT
(
   ATOMIC_NUMBER         NUMBER,
   SYMBOL                VARCHAR2(2),
   NAME                  VARCHAR2(20),
   MASS                  NUMBER(5, 2)
);
/

接著(zhù)我們創(chuàng )建一個(gè)TABLE DEMO_TABLE, 定義一個(gè)引用DEMO_TYPE的字段:
CREATE TABLE DEMO_TABLE
(
   PERIOD        NUMBER,
   COLUMN_GROUP  NUMBER,
   ELEMENT       DEMO_TYPE
);


INSERT INTO DEMO_TABLE
VALUES(1, 1, DEMO_TYPE(1, ‘H‘, ‘Hydrogen‘, 0.5));

INSERT INTO DEMO_TABLE
VALUES(1, 8, DEMO_TYPE(2, ‘He‘, ‘Helium‘, 5.89));

INSERT INTO DEMO_TABLE
VALUES(2, 1, DEMO_TYPE(3, ‘Li‘, ‘Lithium‘, 6.3));


下面看看Java Codes:
為了能利用標準Java Struct類(lèi)操縱Oracle Object, 我們需要import java.sql.Struct這個(gè)class
現在我們讀出這個(gè)Object:
      ResultSet rs   = stmt.executeQuery("SELECT PERIOD, COLUMN_GROUP, ELEMENT FROM DEMO_TABLE");

前兩個(gè)Field(PERIOD 和 COLUMN_GROUP)都能用rs.getInt()方法讀取
重點(diǎn)關(guān)注一下ELEMENT這個(gè)Field, 它是對DEMO_TYPE的引用,在Java中, 我們用rs.getObject()方法記取它, 像下面這樣:
     Struct eleStruct = (Struct) rs.getObject(3);
至此, Java已經(jīng)取得了Oracle Object的引用, 那么我們如何讀取Object中的每一個(gè)具體屬性呢?利用Struct class中的getAttributes()方法:
     Object elementAttr[] = eleStruct.getAttributes();
把eleStruct中的每一個(gè)attribute寫(xiě)入elementAttr 數組, 現在我們就可以自由讀取 ELEMENT Field中的每一個(gè)屬性了, 如下:
         int atomic_number = ((BigDecimal)elementAttr[0]).intValue();
         String symbol = (String) elementAttr[1];
         String name   = (String) elementAttr[2];
         float  mass   = ((BigDecimal) elementAttr[3]).floatValue();

注意對元素0和元素3的讀取方法.
先看看基本SQL數據類(lèi)型與Java數據類(lèi)型之間的映射關(guān)系:
Oracle SQL 數據類(lèi)型               Java數據類(lèi)型
VARCHAR2, CHAR                    String
NUMBER                                     BigDecimal
DATE                                            Date

由于"SYMBOL"和"NAME" 是VARCHAR2數據類(lèi)型, 很容易轉換到String類(lèi)型, 但對于NUMBER數據, 為了能容納任何可能的NUMBER數值, 有必要先把NUMBER轉換為BigDecimal類(lèi)型, 然后轉換成其它合適的類(lèi)型.因此, 我們把元素0轉換成int類(lèi)型,把元素3轉換成float類(lèi)型, 只是為了保持與Oracle中的數據一致.

另外一個(gè)要注意的是:讀取出來(lái)的symbol和name有可能是形如"????"的亂碼, 出現這種情況, 你可能需要到OTN上下載一個(gè)nls_charset12.jar的文件,并在%CLASSPATH%中設置好其路徑.

下次, 我將講述對Oracle Object的更新.

附完整代碼如下:
import java.sql.*;
import java.math.BigDecimal;

public class testLob
{
   public static void main(String args[]) throws SQLException
   {
      DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
      Connection conn = DriverManager.getConnection
                        ("jdbc:oracle:thin:@localhost:1521:OEMREP", "scott", "tiger");
      Statement stmt = conn.createStatement();
      ResultSet rs   = stmt.executeQuery("SELECT PERIOD, COLUMN_GROUP, ELEMENT FROM DEMO_TABLE");

      while (rs.next()) {
         int period = rs.getInt(1);
         int group  = rs.getInt(2);

         Struct eleStruct = (Struct) rs.getObject(3);
         Object elementAttr[] = eleStruct.getAttributes();

         int atomic_number = ((BigDecimal)elementAttr[0]).intValue();
         String symbol = (String) elementAttr[1];
         String name   = (String) elementAttr[2];
         float  mass   = ((BigDecimal) elementAttr[3]).floatValue();

         System.out.println("atomic_number = " + atomic_number +
                            "\tsymbol = " + symbol +
                            "\tname   = " + name +
                            "\tmass   = " + mass);
        
      }

      rs.close();
      stmt.close();
      conn.close();
   }
}

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Struts2自定義類(lèi)型轉換器配置
JdbcType類(lèi)型和Java類(lèi)型的對應關(guān)系
java 科學(xué)計數法轉換
通過(guò)JMS監聽(tīng)Oracle AQ,在數據庫變化時(shí)觸發(fā)執行Java程序(轉載)
十分有用的代碼:JDBC連接DB2、Oracle、MySQL、PostgreSQL,并取當前時(shí)間
JAVA中讀取ORACLE的CLOB字段
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久