• 検索結果がありません。

Oracle 拡張機能から JDBC インタフェースにアク セスするサンプル コード

ドキュメント内 WebLogic JDBC プログラミング ガイド (ページ 91-94)

以下のコード例は、WebLogic Oracle 拡張機能から標準 JDBC インタフェースに アクセスする方法を示しています。以下の例では、OracleConnection および

OracleStatement 拡張機能を使用します。この例の構文は、WebLogic Server でサ

ポートされるメソッドを使用する場合、OracleResultSet、

OraclePreparedStatement、および OracleCallableStatement の各インタフェースで

使用できます。サポートされるメソッドについては、6-18ページの「Oracle イ ンタフェースの表」を参照してください。

OracleThinBlob および OracleThinClob インタフェースへのアクセス方法の例に

ついては、6-17ページの「Oracle Blob/Clob インタフェースにアクセスするサン プル コード」を参照してください。

Oracle 拡張機能へアクセスするパッケージをインポートする

この例で使用する Oracle インタフェースをインポートします。

OracleConnection

および OracleStatement インタフェースは、oracle.jdbc.OracleConnection および

oracle.jdbc.OracleStatement に相当し、WebLogic Server でサポートされるメソッ

ドを使用する場合、これらの Oracle インタフェースと同様に使用できます。

import java.sql.*;

import java.util.*;

import javax.naming.Context;

import javax.naming.InitialContext;

import weblogic.jdbc.vendor.oracle.OracleConnection;

import weblogic.jdbc.vendor.oracle.OracleStatement;

接続を確立する

JNDI、DataSource、および接続プール オブジェクトを使用して、接続を確立し

ます。詳細については、6-8ページの「JNDI を使用した接続の取得」を参照し てください。

6 WebLogic Server でのサードパーティ ドライバの使い方

// 接続プールの有効な DataSource オブジェクトを取得する // ここでは、その詳細を getDataSource() が

// 処理すると仮定する

javax.sql.DataSource ds = getDataSource(args);

// DataSource から java.sql.Connection オブジェクトを取得する java.sql.Connection conn = ds.getConnection();

デフォルトの行プリフェッチ値を取得する

次のコードでは、Oracle Thin Driver で使用できる Oracle の行プリフェッチ メ ソッドの使い方を示します。

// OracleConnection にキャストして、この接続の // デフォルトの行プリフェッチ値を取得する

int default_prefetch =

((OracleConnection)conn).getDefaultRowPrefetch();

System.out.println("Default row prefetch is " + default_prefetch);

java.sql.Statement stmt = conn.createStatement();

// OracleStatement にキャストして、この文の // 行プリフェッチ値を設定する

// このプリフェッチ値は、WebLogic Serverとデータベースの // 間の接続に適用されることに注意

((OracleStatement)stmt).setRowPrefetch(20);

// 通常の SQL クエリを実行して、その結果を処理 ...

String query = "select empno,ename from emp";

java.sql.ResultSet rs = stmt.executeQuery(query);

while(rs.next()) {

java.math.BigDecimal empno = rs.getBigDecimal(1);

String ename = rs.getString(2);

System.out.println(empno + "\t" + ename);

}

rs.close();

stmt.close();

conn.close();

conn = null;

}

Oracle Thin Driver の拡張機能

Oracle Blob/Clob インタフェースにアクセスする サンプル コード

この節では、OracleThinBlob インタフェースへのアクセス方法を示すサンプル コードを提供します。WebLogic Server でサポートされるメソッドを使用する場 合、この例の構文は、OracleThinBlob インタフェースで使用できます。

6-18

ペー

ジの「

Oracle

インタフェースの表」を参照してください。

注意:

Blob および Clob(

「LOB」と呼ばれる)を使用する場合、トランザク

ションの境界を考慮する必要があります。たとえば、すべての読み取り

/

書き込みをトランザクション内の特定の LOB に転送します。詳細につい ては、Oracle Web サイト にある Oracle のマニュアルの「LOB Locators

and Transaction Boundaries」を参照してください。

Blob および Clob 拡張機能にアクセスするパッケージをイン ポートする

インポートするクラスに次の WebLogic Server Oracle Blob も加えます。

import weblogic.jdbc.vendor.oracle.OracleThinBlob;

DBMS から Blob ロケータを選択するクエリを実行する

Blob ロケータまたはハンドルは、Oracle Thin Driver Blob への参照です。

String selectBlob = "select blobCol from myTable where blobKey = 666"

WebLogic Server java.sql オブジェクトを宣言する

次のコードでは、Connection が既に確立されていることを前提としています。

ResultSet rs = null;

Statement myStatement = null;

java.sql.Blob myRegularBlob = null;

java.io.OutputStream os = null;

6 WebLogic Server でのサードパーティ ドライバの使い方

SQL 例外ブロックを開始する

この try/catch ブロックでは、Blob ロケータを取得して、Oracle Blob 拡張機能に アクセスします。

try {

// Blob ロケータを取得 ..

myStatement = myConnect.createStatement();

rs = myStatement.executeQuery(selectBlob);

while (rs.next()) {

myRegularBlob = rs.getBlob("blobCol");

}

// 記述用の基底の Oracle 拡張機能にアクセスする // OracleThinBlob インタフェースをキャストして、

// Oracle メソッドにアクセスする

os = ((OracleThinBlob)myRegularBlob).getBinaryOutputStream();

...

...

} catch (SQLException sqe) {

System.out.println("ERROR(general SQE): " + sqe.getMessage());

}

Oracle.ThinBlob インタフェースをキャストしたら、BEA がサポートするメソッ

ドにアクセスできます。

Prepared Statement を使用した CLOB 値の更新

Prepared Statement を使用して CLOB を更新する場合、新しい値が古い値より短

いと、更新の際に明示的に置換されなかった文字が CLOB に残ります。たとえ ば、現在の値が abcdefghij

である CLOB を Prepared Statement で

zxyw

という

値に更新すると、更新後の CLOB の値は zxywefghij

になります。Prepared

Statement で更新した結果を正しい値にするには、

dbms_lob.trim

プロシージャ

を使って、更新後に残っている余分な文字を削除する必要があります。

dbms_lob.trim

プロシージャの詳細については、Oracle のマニュアルを参照し

てください。

ドキュメント内 WebLogic JDBC プログラミング ガイド (ページ 91-94)