AWS RDS上のOracle XML DBにxmlデータを投入し、参照する

| コメントをどうぞ

前記事 AWS RDS上にOracle XML DBを作成する に続いて、作成したPO_SL_BIX_TABLE表にxmlデータを投入して参照してみる。

準備

必要なライブラリの入手方法は 最新のxmlparserv2.jarが見つからない! を参照してください。
ojdbc6.jar、xdb6.jar、xmlparserv2.jarをCLASSPATHに入れます。

投入のサンプルアプリ

Javaを使用したXMLコンテンツのロード の例3-6のソースを実装したものです。

import java.io.StringReader;
import java.sql.Connection;
import java.sql.DriverManager;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import oracle.jdbc.OraclePreparedStatement;
import oracle.xdb.XMLType;

import org.w3c.dom.Document;
import org.xml.sax.InputSource;

public class Insert {
    static String url = "jdbc:oracle:thin:@oracle-test.xxx.ap-northeast-1.rds.amazonaws.com:1521:orcl";
    static String uid = "scott";
    static String pwd = "tiger";
    static String xml = "<PurchaseOrder DateCreated="2012-10-17T12:17:43.48000Z"/>"; 
    static String sql = "INSERT INTO PO_SL_BIX_TABLE VALUES (?)";
    public static void main(String[] args) throws Exception {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse(new InputSource(new StringReader(xml)));
        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection conn = DriverManager.getConnection(url, uid, pwd);
        XMLType xmltype = XMLType.createXML(conn, doc);
        OraclePreparedStatement sqlStatement = (OraclePreparedStatement)conn.prepareStatement(sql);
        sqlStatement.setObject(1, xmltype);
        sqlStatement.execute();
        System.out.println("Success!");
        conn.close();
    }
}

実行に成功すると、Success!と表示されます。
Oracle SQL Developerで照会してみると、xmlデータが登録されています。
oracle-rds-insert1

参照のサンプルアプリ

Java DOM API for XMLTypeの例15-3のソースを実装したものです。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;

import oracle.jdbc.OraclePreparedStatement;
import oracle.xdb.XMLType;

public class Select {
    static String url = "jdbc:oracle:thin:@oracle-test.xxx.ap-northeast-1.rds.amazonaws.com:1521:orcl";
    static String uid = "scott";
    static String pwd = "tiger";
    static String sql = "SELECT SYS_NC_ROWINFO$ FROM PO_SL_BIX_TABLE";
    public static void main(String[] args) throws Exception {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection conn = DriverManager.getConnection(url, uid, pwd);
        OraclePreparedStatement sqlStatement = (OraclePreparedStatement)conn.prepareStatement(sql);
        ResultSet result = sqlStatement.executeQuery();
        while (result.next()) {
            XMLType xmltype = (XMLType)result.getObject(1);
            String xml = xmltype.getStringVal();
            System.out.println("xml=" + xml);
        }
        conn.close();
    }
}

実行すると投入したxmlデータが参照できます。

xml=<PurchaseOrder DateCreated="2012-10-17T12:17:43.48000Z"/>

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>