ナビゲーションをスキップ

WebLogic JDBC プログラマーズ ガイド

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

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

以下の節では、サードパーティ JDBC ドライバの設定および使用方法について説明します。

 


サードパーティ JDBC ドライバの概要

WebLogic Server は、以下の機能を提供するサードパーティ JDBC ドライバと連携して動作します。

詳細については、『WebLogic Platform 8.1 でサポート対象のコンフィグレーション』の「サポート対象のデータベース コンフィグレーション」を参照してください。

以下の節では、WebLogic サーバとサードパーティ JDBC ドライバの設定および使用方法について説明します。

WebLogic Server でインストールされるサードパーティ JDBC ドライバの使い方

次のサードパーティ ドライバは、WebLogic サーバと共にインストールされます:

注意 : 次のリリースでは、JDBC ドライバのサポート対象が変更されました。

Weblogic サーバでインストールされたドライバは、weblogic.jar と共に WL_HOME\server\lib フォルダ (WL_HOME は WebLogic Platform がインストールされたフォルダ) に保存されます。weblogic.jar のマニフェストには、これらのファイルがリストされており、weblogic.jar のロード時 (サーバの起動時) にロードできます。したがって、CLASSPATH にこれらの JDBC ドライバを追加する必要はありません。

WebLogic Server でインストールされていないサードパーティ JDBC ドライバの使い方

WebLogic Server でインストールされていないサードパーティ JDBC ドライバを使用する場合、JDBC ドライバ クラスの場所を追加するには、WebLogic サーバのクラスパスを更新する必要があります。WL_HOME/common/bincommEnv.cmd/sh スクリプトを編集し、『WebLogic Server コマンド リファレンス』の「クラスパスの変更」の説明に従ってクラスを付加します。

 


Oracle Thin Driver の使い方

次の節には、Oracle Thin Driver の使い方に関する情報が含まれています。 

Oracle 10g ドライバの更新

別のバージョンのドライバを使用する場合は、WL_HOME\server\libojdbc14.jar ファイルを Oracle のファイルの更新されたバージョンで置き換えるか、CLASSPATH の先頭に新しいファイルを追加する必要があります。ドライバのアップデートは、次の Oracle Web サイトからダウンロードできます。http://otn.oracle.com/software/content.html

注意 : Oracle Thin Driver クラスのソースとして、classes12.zipojdbc14.jar に置き換えられました。このバージョンのドライバは Java 2 SDK バージョン 1.4 で使用します。

Oracle 9.2 Driver の使い方

WebLogic Server の WL_HOME\server\ext\jdbc\oracle インストール フォルダ (WL_HOME は WebLogic Platform がインストールされるフォルダ) には、Oracle Thin Driver のバージョン 9.2.0 および 10g のサブフォルダがあります。

9.2.0 バージョンのドライバを使用するには、次の手順に従います。

  1. Windows エクスプローラまたはコマンド シェルで、WL_HOME\server\ext\jdbc\oracle\920 フォルダに移動します。
  2. ojdbc14.jar をコピーします。
  3. Windows エクスプローラまたはコマンド シェルで、WL_HOME\server\lib に移動し、ojdbc14.jar の既存のバージョンを、コピーしたバージョンに置き換えます。

バージョン 10g (デフォルト) に戻す場合も、上記の手順に従います。ただし、バージョンのコピーは次のフォルダで行います。WL_HOME\server\ext\jdbc\oracle\10g

Oracle Thin Driver 9.x および 10g のパッケージの変更

Oracle 8.x 以前のバージョンでは、Oracle Thin Driver を含むパッケージは oracle.jdbc.driver でした。Oracle Thin Driver バージョン 8.1.7 を使用する JDBC 接続プールをコンフィグレーションする場合、DriverName ([ドライバ クラス名]) は oracle.jdbc.driver.OracleDriver と指定します。Oracle 9.x および 10g では、Oracle Thin Driver を含むパッケージは oracle.jdbc です。Oracle Thin Driver バージョン 9.x または 10g を使用する JDBC 接続プールをコンフィグレーションする場合、DriverName ([ドライバ クラス名]) は oracle.jdbc.OracleDriver と指定します。バージョン 9.x または 10g のドライバで oracle.jdbc.driver.OracleDriver クラスを使用することもできますが、Oracle はこのクラスに対して将来的な機能拡張を行わない可能性があります。

Oracle Thin Driver の詳細については、Oracle のマニュアルを参照してください。

注意 : パッケージの変更は、Oracle Thin Driver の XA バージョンには適用されません。Oracle Thin Driver の XA バージョンの場合は、JDBC 接続プールの DriverName ([ドライバ クラス名]) として oracle.jdbc.xa.client.OracleXADataSource を使用します。

nls_charset12.zip による文字セットのサポート

Oracle Thin Driver には、Oracle のオブジェクト型またはコレクション型の一部として取得または挿入されない、すべての CHAR および NCHAR データ型の Oracle 文字セットに対するグローバリゼーション サポートが含まれています。

ただし、Oracle オブジェクトまたはコレクションの CHAR および VARCHAR データの部分に関しては、Oracle Thin Driver には以下の文字セットのグローバリゼーション サポートのみ含まれています。

Oracle のオブジェクト型またはコレクションの中の CHAR および NCHAR データで他の文字セットを使用する場合は、CLASSPATHnls_charset.zip を含める必要があります。このファイルが CLASSPATH に入ってないと、次の例外が発生します。

java.sql.SQLException: Non supported character set: oracle-character-set-178

nls_charset12.zip ファイルは WebLogic Server と共に WL_HOME\server\ext\jdbc\oracle\920 および WL_HOME\server\ext\jdbc\oracle\10g フォルダにインストールされます (WL_HOME は WebLogic Server のインストール先フォルダです)。CLASSPATH の設定手順については、「 WebLogic Server でインストールされていないサードパーティ JDBC ドライバの使い方」を参照してください。

注意 : バージョン 10g のドライバのグローバリゼーション サポートとして、Oracle では nls_charset.zip に代わる orai18n.jar ファイルを提供しています。Oracle のオブジェクト型およびコレクションにおいて CHAR および NCHAR 型のデータに、US7ASCII、WE8DEC、WE8ISO8859P1、および UTF8 以外の文字セットを使用している場合には、CLASSPATHorai18n.jar を含める必要があります。orai18n.jar は WebLogic Server と共にインストールされません。このファイルは Oracle の Web サイトからダウンロードできます。

Oracle Thin Driver のデバッグ モードでの使い方

The WL_HOME\server\ext\jdbc\oracle\ (WL_HOME フォルダは webLogic サーバインストールされているフォルダ) には、Oracle Thin driver の 9.2.0 および 10g バージョンのサブフォルダがあります。各サブフォルダには、デバッグとトレースの使用をサポートするために必要なクラスを含む、ojdbc14_g.jar ファイルが含まれています。

Oracle Thin Driver をデバッグ モードで使用するには、次の手順に従います。

  1. ojdbc14_g.jar ファイルのパスを WebLogic Server クラスパスに『WebLogic Server コマンド リファレンス』の「クラスパスの変更」で説明されている手順に従って追加します。
  2. JDBC ログ を有効にします (『WebLogic Server Administration Console オンライン ヘルプ』の「JDBC のログを有効化」を参照)。

 


Sybase jConnect Driver の更新

WebLogic Server に付属する Sybase jConnect 4.5 (jConnect.jar)、5.5 (jconn2.jar)、および 6.0 (jconn3.jar) は事前にコンフィグレーションされ、そのまま使用できる状態になっています。これ以降のバージョンを使用する場合は、WL_HOME\server\lib にある Sybase.jar ファイルを DBMS ベンダが提供する最新バージョンのファイルに置き換えます。

WebLogic Server でインストールされたバージョンに戻す場合は、WL_HOME\server\lib フォルダに次のファイルをコピーします。

 


IBM DB2 Type 2 JDBC Driver のインストールと使い方

IBM DB2 クライアントのインストールには、接続プールで DB2 データベースへの接続を作成できる Type 2 JDBC ドライバが含まれています。デフォルトでは、DB2 クライアントはドライバの JDBC 1.x バージョンを使用します。JDBC 2.0 に準拠したバージョンを使用するには、次の手順に従います。

注意 : DB2 クライアントは、データベースへの接続に DB2 Type 2 JDBC ドライバを使用するマシンごとにインストールする必要があります。すべての Type 2 ドライバと同様、DB2 ドライバはデータベースへアクセスするためにデータベース クライアント内のライブラリに依存しています。

  1. DB2 JDBC Applet Server Windows サービスを停止します。
  2. db2_install_path\java12 ディレクトリ (db2_install_path は DB2 クライアントをインストールしたディレクトリ) で、usejdbc2.bat バッチ ファイルを実行します。
  3. このバッチ ファイルでは JDBC ドライバの JDBC 1.2 バージョン用のフォルダを作成して、db2_install_path\java フォルダ内のファイルを、ドライバの JDBC 2.0 バージョンで置き換えます。

  4. DB2 JDBC Applet Server Windows サービスを起動します。
  5. db2_install_path\java12\inuse ファイルの内容を確認します。JDBC 2.0 を使用している場合、ファイルには JDBC 2.0 が含まれています。

接続プールで DB2 Type 2 JDBC ドライバを使用する前に、ドライバ クラスを CLASSPATH に、DB2 クライアント ライブラリを PATH に追加する必要があります。ドメインの起動スクリプトでこれを行うことができます。次に例を示します。

set CLASSPATH=db2_install_path\java\db2java.zip;%CLASSPATH%
set PATH=db2_install_path\bin;%PATH%

db2_install_path は DB2 クライアントをインストールしたディレクトリです。

IBM DB2 ドライバの XA バージョンを使用する場合は、『WebLogic JTA プログラマーズ ガイド』の「IBM DB2 Type 2 XA JDBC Driver の使い方」でコンフィグレーション手順を参照してください。

DB2 Type 2 ドライバを使用する接続を含む接続プールを作成するには、Administration Console の JDBC 接続プール アシスタントを使用するか (Administration Console オンライン ヘルプの「JDBC 接続プール」を参照)、または JMX API を使用します (「接続プールの動的作成」を参照)。

IBM DB2 Type 2 JDBC Driver 使用時の接続プール属性

IBM DB2 Type 2 JDBC Driver を使用する接続プールを作成するときは、表 5-1 および 表 5-2 に示す属性を使用します。

表 5-1 DB2 Type 2 JDBC Driver 使用時の XA 非対応接続プールの属性

属性

[URL] (URL)

jdbc:db2:dbname

[ドライバ クラス名] (DriverName)

COM.ibm.db2.jdbc.app.DB2Driver

[プロパティ] (Properties)

user=username
DatabaseName=dbname

[パスワード] (Password)

password

[作成されたときに接続をテスト] (TestConnectionsOnCreate)

true

[予約されたときに接続をテスト] (TestConnectionsOnReserve)

true

[テスト テーブル名] (TestTableName)

SYSIBM.SYSTABLES

[対象] (Target)

serverName


 

[URL] と [プロパティ] の文字列にあるデータベース名は、DB2 クライアントで使用するためにコンフィグレーションされたデータベース (DB2 のクライアント構成アシスタントに表示されるデータベースなど) でなければなりません。また、データベース ユーザは、[テスト テーブル名] に指定したテーブルで SELECT を実行できる必要があります。

config.xml ファイルのエントリは、次のようになります。

    <JDBCConnectionPool DriverName="COM.ibm.db2.jdbc.app.DB2Driver"
Name="MyJDBC Connection Pool"
Password="{3DES}Pd8QwSJ5FtLEfuiA/vcy3g=="
Properties="user=dbuser;DatabaseName=db1"
Targets="myserver"
TestConnectionsOnCreate="true"
TestConnectionsOnReserve="true"
TestTableName="SYSIBM.SYSTABLES"
URL="jdbc:db2:db1"/>

表 5-2 DB2 Type 2 JDBC Driver 使用時の XA 対応接続プールの属性

属性

[URL] (URL)

jdbc:db2:dbname

[ドライバ クラス名] (DriverName)

COM.ibm.db2.jdbc.DB2XADataSource

[プロパティ] (Properties)

user=username
DatabaseName=dbname

[パスワード] (Password)

password

[作成されたときに接続をテスト] (TestConnectionsOnCreate)

true

[予約されたときに接続をテスト] (TestConnectionsOnReserve)

true

[テスト テーブル名] (TestTableName)

SYSIBM.SYSTABLES

[トランザクション完了まで XA 接続を保持] (KeepXAConnTillTxComplete)

true

[対象] (Target)

serverName


 

[URL] と [プロパティ] の文字列にあるデータベース名は、DB2 クライアントで使用するためにコンフィグレーションされたデータベース (DB2 のクライアント構成アシスタントに表示されるデータベースなど) でなければなりません。

DB2 では、グローバル トランザクションのすべての処理が単一のデータベース接続で発生する必要があるため、[トランザクション完了まで XA 接続を保持] (KeepXAConnTillTxComplete) を true に設定する必要があります。

config.xml ファイルのエントリは、次のようになります。

    <JDBCConnectionPool DriverName="COM.ibm.db2.jdbc.DB2XADataSource"
KeepXAConnTillTxComplete="true"
Name="My XA JDBC Connection Pool"
Password="{3DES}Pd8QwSJ5FtLEfuiA/vcy3g=="
Properties="user=dbuser;DatabaseName=db1"
Targets="myserver"
TestConnectionsOnCreate="true"
TestConnectionsOnReserve="true"
TestTableName="SYSIBM.SYSTABLES"
URL="jdbc:db2:db1"/>

 


Microsoft SQL Server 2000 Driver for JDBC のインストールと使い方

Microsoft SQL Server 2000 Driver for JDBC は、ライセンスを持つ SQL Server 2000 ユーザならば無料でダウンロードできます。このドライバは、JDBC 2.0 オプション パッケージのサブセットをサポートする Type 4 JDBC ドライバです。Microsoft SQL Server 2000 Driver for JDBC のインストール時に、サポート ドキュメントをオプションでインストールできます。ドライバに関する包括的な情報については、そのドキュメントを参照する必要があります。また、確認済みの問題については、「リリース マニフェスト」を参照してください。

以降の節では、Microsoft SQL Server 2000 Driver for JDBC をインストールおよびコンフィグレーションする方法について説明します。

Microsoft SQL Server Driver for JDBC の Windows システムへのインストール

Microsoft SQL Server 2000 Driver for JDBC を Windows サーバにインストールするには、次の手順に従います。

  1. Microsoft MSDN Web サイトから Microsoft SQL Server 2000 Driver for JDBC (setup.exe ファイル) をダウンロードします。そのファイルをローカル コンピュータ上の一時ディレクトリに保存します。
  2. 一時ディレクトリから setup.exe を実行し、画面の指示に従います。
  3. CLASSPATH に以下のファイルへのパスを追加します。
  4. ここで、install_dir はドライバをインストールしたフォルダです。次に例を示します。

    set CLASSPATH=install_dir\lib\msbase.jar;
    install_dir\lib\msutil.jar;install_dir\lib\mssqlserver.jar;
    %CLASSPATH%

Microsoft SQL Server Driver for JDBC の UNIX システムへのインストール

Microsoft SQL Server 2000 Driver for JDBC を UNIX サーバにインストールするには、次の手順に従います。

  1. Microsoft MSDN Web サイトから Microsoft SQL Server 2000 Driver for JDBC (mssqlserver.tar ファイル) をダウンロードします。そのファイルをローカル コンピュータ上の一時ディレクトリに保存します。
  2. 一時ディレクトリに移動し、次のコマンドを使用してファイルの内容を復元します。
  3. tar -xvf mssqlserver.tar
  4. 次のコマンドを実行して、インストール スクリプトを実行します。
  5. install.ksh
  6. 画面の指示に従います。インストール ディレクトリの入力を要求された場合は、必ずそのディレクトリの絶対パスを入力してください。
  7. CLASSPATH に以下のファイルへのパスを追加します。
  8. ここで、install_dir はドライバをインストールしたフォルダです。次に例を示します。

    export CLASSPATH=install_dir/lib/msbase.jar:
    install_dir/lib/msutil.jar:install_dir/lib/mssqlserver.jar:
    $CLASSPATH

Microsoft SQL Server Driver for JDBC 使用時の接続プール属性

Microsoft SQL Server Driver for JDBC を使用する接続プールを作成するときは、表 5-3 の属性を使用します。

表 5-3 Microsoft SQL Server Driver for JDBC 使用時の接続プール属性

属性

[URL] (URL)

jdbc:microsoft:sqlserver://server_name:port

[ドライバ クラス名] (DriverName)

com.microsoft.jdbc.sqlserver.SQLServerDriver

[プロパティ] (Properties)

user=username
DatabaseName=dbname
selectMethod=cursor

[パスワード] (Password)

password

[対象] (Target)

serverName


 

config.xml のエントリは、次のようになります。

    <JDBCConnectionPool 
Name="mssqlPool"
DriverName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
URL="jdbc:microsoft:sqlserver://db4:1433"
Properties="databasename=db4;user=sa;
selectMethod=cursor"
Password="{3DES}vlsUYhxlJ/I="
InitialCapacity="4"
CapacityIncrement="2"
MaxCapacity="10"
Targets="examplesServer"
/>

注意 : 接続をトランザクション モードで使用するには、接続プロパティのリストに selectMethod=cursor を追加する必要があります。このように設定することで、アプリケーションで特定の接続から同時に複数の文を開くことが可能となります。

selectMethod=cursor を設定しない場合は、同時に開いた文ごとに、接続の内部的なクローンが別々の DBMS ユーザとして作成されます。この場合、トランザクションを同時にコミットできなくなるため、デッドロックが発生するおそれがあります。

 


IBM Infomix JDBC Driver のインストールと使い方

WebLogic Server と Informix データベースを使用する場合は、IBM Informix JDBC Driver を使用することをお勧めします。このドライバは、次の IBM Web サイトからダウンロードできます (http://www-3.ibm.com/software/data/informix/tools/jdbc/)。IBM Informix JDBC Driver は無償で提供されていますが、サポートの対象にはなりません。製品をダウンロードするには、IBM への登録が必要になることがあります。JDBC/EMBEDDED SQLJ セッションでドライバをダウンロードし、ダウンロードした zip ファイルに添付された install.txt ファイルの指示に従って、ドライバをインストールします。

ドライバをダウンロードしてインストールした後、以下の手順に従って、WebLogic Server でドライバを使用できるように準備します。

  1. INFORMIX_INSTALL\lib から ifxjdbc.jar ファイルおよび ifxjdbcx.jar ファイルをコピーして、WL_HOME\server\lib フォルダに貼り付けます。ここで、
  2. INFORMIX_INSTALL は、Informix JDBC ドライバをインストールしたルート ディレクトリです。

    また WL_HOME は、WebLogic Platform をインストールしたフォルダ (通常は c:\bea\weblogic81) です。

  3. CLASSPATHifxjdbc.jar および ifxjdbcx.jar へのパスを追加します。次に例を示します。
  4. set CLASSPATH=%WL_HOME%\server\lib\ifxjdbc.jar;%WL_HOME%\server\lib\ifxjdbcx.jar;%CLASSPATH%

    また WebLogic Server の起動スクリプトで set CLASSPATH 文にドライバ ファイルへのパスを追加することもできます。

IBM Infomix JDBC Driver 使用時の接続プール属性

IBM Informix JDBC driver を使用する接続プールを作成するときは、表 5-4 および 表 5-5 に示す属性を使用します。

表 5-4 Informix JDBC Driver 使用時の XA 非対応接続プールの属性

属性

[URL] (URL)

jdbc:informix-sqli:dbserver_name_or_ip:port/dbname:informixserver=ifx_server_name

[ドライバ クラス名] (DriverName)

com.informix.jdbc.IfxDriver

[プロパティ] (Properties)

user=username
url=jdbc:informix-sqli:dbserver_name_or_ip:port/dbname:informixserver=ifx_server_name
portNumber=1543
databaseName=dbname
ifxIFXHOST=ifx_server_name
serverName=dbserver_name_or_ip

[パスワード] (Password)

password

[ログイン遅延] (LoginDelaySeconds)

1

[対象] (Target)

serverName

config.xml ファイルのエントリは、次のようになります。

    <JDBCConnectionPool 
DriverName="com.informix.jdbc.IfxDriver"
InitialCapacity="3"
LoginDelaySeconds="1"
MaxCapacity="10"
Name="ifxPool"
Password="xxxxxxx"
Properties="informixserver=ifxserver;user=informix"
Targets="examplesServer"
URL="jdbc:informix-sqli:ifxserver:1543"
/>

表 5-5 Informix JDBC Driver 使用時の XA 対応接続プールの属性

属性

[URL] (URL)

空白のまま

[ドライバ クラス名] (DriverName)

com.informix.jdbcx.IfxXADataSource

[プロパティ] (Properties)

user=username
url=jdbc:informix-sqli://dbserver_name_or_ip:port_num/dbname:informixserver=dbserver_name_or_ip
password=password
portNumber =port_num;
databaseName=dbname
serverName=dbserver_name
ifxIFXHOST=dbserver_name_or_ip

[パスワード] (Password)

空白のまま

[ローカル トランザクションのサポート] (SupportsLocalTransaction)

true

[対象] (Target)

serverName

注意 : [プロパティ] の文字列の portNumber= の間にはスペースが入っています。

config.xml ファイルのエントリは、次のようになります。

    <JDBCConnectionPool CapacityIncrement="2"
DriverName="com.informix.jdbcx.IfxXADataSource"
InitialCapacity="2" MaxCapacity="10"
Name="informixXAPool"
Properties="user=informix;url=jdbc:informix-sqli:
//111.11.11.11:1543/db1:informixserver=lcsol15;
password=informix;portNumber =1543;databaseName=db1;
serverName=dbserver1;ifxIFXHOST=111.11.11.11"
SupportsLocalTransaction="true" Targets="examplesServer"
TestConnectionsOnReserve="true" TestTableName="emp"/>

注意 : Administration Console を使用して接続プールを作成する場合、接続プールを対象のサーバに適切にデプロイするためには、その前にサーバを停止して再起動する必要があります。この問題は確認済みです。

IBM Infomix JDBC Driver のプログラミング上の注意

IBM Informix JDBC Driver を使用するときは、次の制限について注意が必要です。

 


サードパーティ ドライバを使用した接続の取得

Oracle Thin Driver などのサードパーティ Type 4 ドライバを使用してデータベース接続を取得する方法について以下の節で説明します。接続を確立するには、接続プール、データ ソース、および JNDI ルックアップを使用することをお勧めします。

サードパーティ ドライバでの接続プールの使い方

まず、Administration Console を使用して接続プールとデータ ソースを作成し、次に JNDI ルックアップを使用して接続を確立します。

接続プールと DataSource を作成する

JDBC 接続プールと JDBC DataSource の作成手順については、「接続プールのコンフィグレーションと使い方」および「DataSource のコンフィグレーションと使い方」を参照してください。

JNDI を使用して接続を取得する

JNDI を使用してサードパーティ ドライバにアクセスするには、まずサーバの URL を指定して JNDI ツリーから Context オブジェクトを取得し、次にそのコンテキスト オブジェクトと DataSource 名を使用してルックアップを実行します。

たとえば、Administration Console で定義された「myDataSource」という DataSource にアクセスするには、以下のようにします。

Context ctx = null;
Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL,
"t3://hostname:port");
  Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
  try {
ctx = new InitialContext(ht);
javax.sql.DataSource ds
= (javax.sql.DataSource) ctx.lookup ("myDataSource");
conn = ds.getConnection();
   // これで conn オブジェクトを使用して
// 文を作成し、結果セットを検索できる
    stmt = conn.createStatement();
stmt.execute("select * from someTable");
rs = stmt.getResultSet();
...
//できる限り速やかに JDBC オブジェクトを閉じる
stmt.close();
stmt=null;
    conn.close();
conn=null;
 }
catch (Exception e) {
// エラー発生
log message;
}
finally {
try {
ctx.close();
} catch (Exception e) {
log message; }
try {
if (rs != null) rs.close();
} catch (Exception e) {
log message; }
try {
if (stmt != null) stmt.close();
} catch (Exception e) {
log message; }
try {
if (conn != null) conn.close();
} catch (Exception e) {
log message; }
}

(hostname は WebLogic Server が稼働するマシンのホスト名、port は WebLogic Server が接続リクエストをリスンするポートの番号です。)

この例では、Hashtable オブジェクトを使って、JNDI ルックアップに必要なパラメータを渡しています。JNDI ルックアップを実行する方法は他にもあります。詳細については、『WebLogic JNDI プログラマーズ ガイド』を参照してください。

ルックアップの失敗を捕捉するために JNDI ルックアップが try/catch ブロックで包まれている点に注意してください。また、コンテキストが finally ブロックの中で閉じられている点にも注意してください。

接続プールからの物理的な接続の取得

注意 : やむを得ない場合を除き、物理的な JDBC 接続に直接アクセスすることはお勧めしません。「物理的な接続の使用に関する制限」を参照してください。

通常は、WebLogic Server で提供されている汎用的な JDBC 接続 (ラップされた物理的な接続) に接続をキャストします。この方法の場合、サーバ インスタンスは、接続プールの接続の管理、接続プール機能の有効化、およびアプリケーションに提供される接続の品質の維持を行うことができます。場合によっては、DBMS ベンダが、物理的な接続 (実際のベンダ JDBC 接続) への直接アクセスを必要とする、非標準の JDBC 関連クラスを提供していることがあります。接続プールの物理的な接続に直接アクセスするには、getVendorConnection を使用して接続をキャストする必要があります。

以下の節では、物理的な接続の取得方法について説明します。

接続を開く

物理的なデータベース接続を取得するには、最初に「JNDI を使用して接続を取得する」の説明に従って接続プールから接続を取得してから、次のいずれかを実行します。

物理的なデータベース接続への直接アクセスは、ベンダ固有の呼び出しに限定するようにしてください。それ以外の場合は、WebLogic Server で提供されている汎用的な JDBC 接続を使用します。ベンダ固有の呼び出しに対して接続を開くサンプル コードをコード リスト 5-1 に示します。

コード リスト 5-1ベンダ固有の呼び出しに対する接続を開くためのサンプル コード

//この追加クラスと、必要なベンダのパッケージを
//インポートする
import weblogic.jdbc.extensions.WLConnection
.
.
.
myJdbcMethod()
{
  // 接続プールからの接続は、クラス メソッドやインスタンス メソッド
// ではなく、常にメソッド レベルの変数とする
Connection conn = null;
   try { 
ctx = new InitialContext(ht);
// JNDI ツリーでデータ ソースをルックアップして、
// 接続を要求する
javax.sql.DataSource ds
= (javax.sql.DataSource) ctx.lookup ("myDataSource");
     // プールされた接続は常に try ブロックで取得する。取得した
// 接続は完全に使用し、必要に応じて finally ブロックで
// 閉じる
conn = ds.getConnection();
     // WLConnection インタフェースに conn オブジェクトをキャストして、
// 基底の物理的な接続を取得できる
     java.sql.Connection vendorConn = 
((WLConnection)conn).getVendorConnection();

// vendorConn は閉じない
     // 次のように、vendorConn オブジェクトをベンダのインタフェースに 
// キャストすることもできる。次に例を示す
// oracle.jdbc.OracleConnection vendorConn = (OracleConnection)
// ((WLConnection)conn).getVendorConnection()
     // ベンダ固有のメソッドで物理的な接続が必要に
// なる場合、物理的な接続を取得または保持するのではなく、
// 必要に応じて暗黙的に渡すほうがよい
// 次に例を示す //vendor.special.methodNeedingConnection(((WLConnection)conn)).getVendorConnection());

接続を閉じる

JDBC に関する処理が終了したら、論理的な接続を閉じてプールに戻す必要があります。物理的な接続に関する処理が終了したら、次の処理を行います。

接続の閉じ方は、Administration Console の [影響のある接続の削除を有効化] プロパティの値で指定できます。Administration Console ヘルプの「[JDBC 接続プール] --> [コンフィグレーション] --> [接続]」を参照してください。ベンダ固有の呼び出しに対して接続を閉じるサンプル コードをコード リスト 5-2 に示します。

注意 : [影響のある接続の削除を有効化] プロパティは、getVendorConnection を明示的に呼び出すアプリケーションにのみ適用されます。

コード リスト 5-2ベンダ固有の呼び出しに対する接続を閉じるためのサンプル コード

 // ベンダ固有の呼び出しの使用が完了したら、
// 接続への参照を即座に破棄する
// 参照は保持したり閉じたりしない
// 汎用 JDBC にはベンダ接続を使用しない
// 標準の JDBC には、論理的な (プールされた) 接続を使用する
vendorConn = null;
     ... do all the JDBC needed for the whole method... 
     // 論理的な (プールされた) 接続を閉じて
// 接続プールに戻し、参照を破棄する
conn.close();
conn = null;
}
  catch (Exception e) 
{
// 例外を処理する
}
finally
{
// 念のため、論理的な (プールされた) 接続が閉じられているか
// どうか確認する
// finally ブロックの冒頭では、必ず論理的な (プールされた) 接続
// を閉じる

[影響のある接続の削除を有効化] が true の場合

[影響のある接続の削除を有効化] が MtrueM (デフォルト値) に設定されている場合、論理的な接続を閉じると、サーバ インスタンスは基底の物理的な接続を破棄してこれに代わる新しい接続を作成します。これによりプールは、次のユーザがそのプール接続を使用する唯一のユーザであることを保証できます。このコンフィグレーションでは、容易かつ安全に接続を閉じることができます。ただし、次の理由によりパフォーマンスが低下します。

[影響のある接続の削除を有効化] が False の場合

注意 : [影響のある接続の削除を有効化] を false に設定するのは、公開されている物理的な接続が、論理的な接続が閉じられた後で保持または再利用されないことが確実である場合だけにしてください。

[影響のある接続の削除を有効化] が false に設定されている場合、論理的な接続を閉じると、サーバ インスタンスは、再利用できるように物理的な接続を接続プールに返します。このコンフィグレーションではパフォーマンスの低下は最小限に抑えられますが、サーバ インスタンスは、接続の品質を保証せず、また論理的な接続が閉じられた後の接続の管理の効率性も保証しません。接続が接続プールに返される前に、その接続が他のアプリケーションで再利用するのに適しているかどうかを確認する必要があります。

物理的な接続の使用に関する制限

接続プールの論理的な接続の代わりに物理的な接続を使用することはお勧めしません。ただし、たとえば STRUCT の作成などに、物理的な接続を使用する必要がある場合は、以下の負担と制限を考慮してください。

 


JDBC インタフェースのベンダ拡張機能の使い方

一部のデータベース ベンダでは、DBMS を使用するデータベースのデータを操作するための独自のメソッドが追加されています。これらのメソッドは、標準の JDBC インタフェースを拡張したものです。以前のバージョンの WebLogic Server では、一部のベンダの特定の JDBC 拡張機能だけがサポートされていました。現在のリリースの WebLogic Server は、ベンダの JDBC ドライバでパブリック インタフェースとして公開されているすべての拡張機能メソッドをサポートします。

ドライバのベンダが必要なメソッドをパブリック インタフェースで公開していない場合は、そのメソッドをパブリック インタフェースで公開するようにベンダにリクエストを提出してください。ARRAY、STRUCT、および REF に対する Oracle Thin Driver の拡張機能メソッドはパブリック インタフェースとして公開されていませんが、WebLogic Server ではこれらの拡張機能メソッドをサポートしています。「Oracle 拡張機能と Oracle Thin Driver の使用」を参照してください。

一般に、WebLogic Server はベンダ拡張機能のサーバサイド コードでの使用をサポートしています。ベンダ拡張機能をクライアントサイド コードで使用するには、オブジェクト型またはデータ型がシリアライズ可能でなければなりません。これに対する例外として、以下のオブジェクト型があります。

これらのオブジェクト型については WebLogic Server でデシリアライゼーションが行われるので、クライアントサイド コードで使用できます。

注意 : クライアントとサーバで異なるバージョンの WebLogic Server を使用する場合は、相互運用性の制限があります。「バージョンの異なる WebLogic Server クライアント/サーバ間のベンダ拡張機能のサポート」を参照してください。

JDBC ドライバで公開されている拡張機能メソッドを使用するには、アプリケーション コードに次のような手順を組み込む必要があります。

以降の節では、コード例で詳細を示します。特定の JDBC ドライバの特定の拡張機能メソッドについては、JDBC ドライバ ベンダのマニュアルを参照してください。

JDBC インタフェースのベンダ拡張機能へのアクセス方法を示すサンプル コード

以下のコード例では、Oracle Thin Driver で利用できる拡張機能メソッドを使用して、JDBC のベンダ拡張機能の使用方法を示します。使用する JDBC ドライバで公開されているメソッドに合わせて、これらの例を修正することができます。

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

接続プールで接続を作成するために使用する JDBC ドライバから、インタフェースをインポートします。この例では Oracle Thin Driver のインタフェースを使用します。

import java.sql.*;
import java.util.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import oracle.jdbc.*;
// ドライバ インタフェースをインポートする。 ドライバは、接続プールでデータベース接続を
// 作成するために使用するドライバと同じでなければならない

接続を取得する

JNDI、DataSource、および接続プール オブジェクトを使用して、データベース接続を確立します。詳細については、「JNDI を使用して接続を取得する」を参照してください。

// 接続プールの有効な DataSource オブジェクトを取得する
// ここでは、その詳細を getDataSource() が
// 処理すると仮定する
javax.sql.DataSource ds = getDataSource(args);
// DataSource から java.sql.Connection オブジェクトを取得する
java.sql.Connection conn = ds.getConnection();

接続をベンダの接続としてキャストする

接続を取得したら、ベンダの接続としてキャストできます。この例では Oracle Thin Driver の OracleConnection インタフェースを使用します。

orConn = (oracle.jdbc.OracleConnection)conn;
// これは、weblogic.jdbc.vendor.oracle.OracleConnection へ接続をキャストする
// 次のような非推奨の処理に代わるものである
// orConn = (weblogic.jdbc.vendor.oracle.OracleConnection)conn;

ベンダ拡張機能を使用する

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

// OracleConnection にキャストして、この接続の
// デフォルトの行プリフェッチ値を取得する
int default_prefetch = 
((oracle.jdbc.OracleConnection)conn).getDefaultRowPrefetch();
// これは、weblogic.jdbc.vendor.oracle.OracleConnection へ接続をキャストする
// 次のような非推奨の処理に代わるものである
// ((weblogic.jdbc.vendor.oracle.OracleConnection)conn).
// getDefaultRowPrefetch();
System.out.println("Default row prefetch 
is " + default_prefetch);
java.sql.Statement stmt = conn.createStatement();
// OracleStatement にキャストして、この文の
// 行プリフェッチ値を設定する
// このプリフェッチ値は、WebLogic Server とデータベースの
// 間の接続に適用されることに注意
      ((oracle.jdbc.OracleStatement)stmt).setRowPrefetch(20);
   // これは、weblogic.jdbc.vendor.oracle.OracleStatement へ
// 文をキャストする次のような非推奨の処理に
// 代わるものである
// ((weblogic.jdbc.vendor.oracle.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 拡張機能と Oracle Thin Driver の使用

Oracle が提供するほとんどの拡張機能では、「JDBC インタフェースのベンダ拡張機能の使い方」で説明したような標準的な方法を使用できます。ただし、Oracle Thin Driver では、以下のクラスの拡張機能メソッドに対するパブリック インタフェースを提供していません。

WebLogic Server では、これらのクラスの拡張機能メソッドにアクセスするために、独自のインタフェースを提供しています。

以降の節では、Oracle 拡張機能向けの WebLogic Server インタフェースを使用するためのコード例を示します。サポートされるメソッドのリストについては、「Oracle 拡張機能インタフェースとサポートされるメソッドの表」を参照してください。詳細については、Oracle のマニュアルを参照してください。

注意 : このプロセスを使用すると、「Oracle 拡張機能インタフェースとサポートされるメソッドの表」で示す Oracle 拡張機能向けの WebLogic Server インタフェースを使用できます。ただし、上記以外のインタフェースは非推奨になっており、WebLogic Server の将来のリリースで削除される予定です。

Oracle JDBC 拡張機能の使用時の制限

JDBC インタフェースに Oracle 拡張機能を使用するときは、次の制限があります。

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

以下のコード例では、パブリック インタフェースとして利用できない Oracle 拡張機能に対する WebLogic Server インタフェースにアクセスする方法を示します。次のようなインタフェースがあります。

WebLogic Server と共にサーバ サンプルをインストールするオプションを選択した場合は、JDBC サンプルの詳細なコード例を参照してください。JDBC サンプルは通常、WL_HOME\samples\server\src\examples\jdbc (WL_HOME は WebLogic Server をインストールしたフォルダ) にあります。

ARRAY によるプログラミング

WebLogic Server のサーバサイド アプリケーションでは、結果セット、または Java 配列として callable statement を使用することにより、Oracle Collection (SQL ARRAY) を実体化できます。

WebLogic Server アプリケーションで ARRAY を使用するには、次の手順に従います。

  1. 必要なクラスをインポートします。
  2. 接続を取得して、接続のための文を作成します。
  3. 結果セット、または callable statement を使用して ARRAY を取得します。
  4. java.sql.Array または weblogic.jdbc.vendor.oracle.OracleArray のいずれかとして、ARRAY を使用します。
  5. 標準 Java メソッド (java.sql.Array として使用)、または Oracle 拡張機能メソッド (weblogic.jdbc.vendor.oracle.OracleArray としてキャスト) を使用して、データを操作します。

以下の節では、これらのアクションの詳細について説明します。

注意 :ARRAY はサーバサイド アプリケーションでのみ使用できます。リモート クライアント アプリケーションでは ARRAY は使用できません。

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

この例で使用する Oracle インタフェースをインポートします。OracleArray インタフェースは、oracle.sql.ARRAY に相当し、WebLogic Server でサポートされるメソッドを使用する場合、Oracle インタフェースと同様に使用できます。

import java.sql.*;
import java.util.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import weblogic.jdbc.vendor.oracle.*;

接続を確立する

JNDI、DataSource、および接続プール オブジェクトを使用して、データベース接続を確立します。詳細については、「JNDI を使用して接続を取得する」を参照してください。

// 接続プールの有効な DataSource オブジェクトを取得する
// ここでは、その詳細を getDataSource() が
// 処理すると仮定する
javax.sql.DataSource ds = getDataSource(args);
// DataSource から java.sql.Connection オブジェクトを取得する
java.sql.Connection conn = ds.getConnection();

ARRAY を取得する

callable statement、または結果セットに getArray() メソッドを使用して、Java 配列を取得できます。この配列は、java.sql.array として使用することにより標準 java.sql.array メソッドを利用することも、また weblogic.jdbc.vendor.oracle.OracleArray としてキャストすることにより、配列の Oracle 拡張機能メソッドとして利用することもできます。

以下の例では、ARRAY を含む結果セットから java.sql.array を取得する方法を示します。この例では、クエリにより、オブジェクト カラム (学生の成績を示す ARRAY) を含む結果セットが返されます。

try {
  conn = getConnection(url);
stmt = conn.createStatement();
String sql = "select * from students";
// 結果セットの取得
rs = stmt.executeQuery(sql);
  while(rs.next()) {
BigDecimal id = rs.getBigDecimal("student_id");
String name = rs.getString("name");
log("ArraysDAO.getStudents() -- Id = "+id.toString()+", Student = "+name);
// 結果セットからの配列の取得
Array scoreArray = rs.getArray("test_scores");
String[] scores = (String[])scoreArray.getArray();
for (int i = 0; i < scores.length; i++) {
log(" Test"+(i+1)+" = "+scores[i]);
}
}

データベースで ARRAY を更新する

データベースにおける ARRAY を更新するには、次の手順に従います。

  1. 更新する配列がデータベースにない場合、PL/SQL を使用してデータベースに配列を作成します。
  2. 結果セット、または callable statement を使用して ARRAY を取得します。
  3. Java アプリケーション内の配列を java.sql.Array または weblogic.jdbc.vendor.oracle.OracleArray として扱います。
  4. prepared statement または callable statement に setArray() メソッドを使用して、データベース内の配列を更新します。次に例を示します。
  5. String sqlUpdate = "UPDATE SCOTT." + tableName + " SET col1 = ?";
    conn = ds.getConnection();
    pstmt = conn.prepareStatement(sqlUpdate);
    pstmt.setArray(1, array);
    pstmt.executeUpdate();

Oracle Array 拡張機能メソッドを使用する

ARRAY に Oracle 拡張機能メソッドを使用するにはまず、weblogic.jdbc.vendor.oracle.OracleArray として配列をキャストする必要があります。この後、ARRAY の Oracle 拡張機能メソッドを呼び出すことができます。次に例を示します。

oracle.sql.Datum[] oracleArray = null;
oracleArray = ((weblogic.jdbc.vendor.oracle.OracleArray)scoreArray).getOracleArray();
String sqltype = null
sqltype = oracleArray.getSQLTypeName()

STRUCT によるプログラミング

WebLogic Server アプリケーションでは、Oracle データベースからオブジェクトにアクセスしたり、オブジェクトを操作したりできます。Oracle データベースからオブジェクトを検索すると、カスタム Java オブジェクト、または STRUCT (java.sql.struct あるいは weblogic.jdbc.vendor.oracle.OracleStruct) のいずれかとして、オブジェクトをキャストできます。STRUCT は、アプリケーション中のカスタム クラスを置き換える構造化データを表す型制限の緩いデータ型です。 JDBC API における STRUCT インタフェースには、STRUCT 中の属性値を操作するためのさまざまなメソッドが組み込まれています。Oracle では、いくつかの追加メソッドを使用して、STRUCT インタフェースを拡張しています。WebLogic Server では、すべての標準メソッドと大部分の Oracle 拡張機能が実装されています。

注意 : STRUCT を使用する場合、次の制限があります。

WebLogic Server アプリケーションで STRUCT を使用するには、次の手順に従います。

  1. 必要なクラスをインポートします (「Oracle 拡張機能へアクセスするパッケージをインポートする」を参照)。
  2. 接続を取得します (「接続を確立する」を参照)。
  3. getObject を使用して STRUCT を取得します。
  4. STRUCT を STRUCT (標準のメソッドを使用するには java.sql.Struct、または Oracle 拡張機能メソッドを使用するには weblogic.jdbc.vendor.oracle.OracleStruct) としてキャストします。
  5. 標準メソッド、または Oracle 拡張機能メソッドを使用して、データを操作します。

以下の節では、手順 3 ~ 5 について詳しく説明します。

STRUCT を取得する

データベース オブジェクトを STRUCT として取得するには、まずクエリを使用して結果セットを作成し、次に getObject メソッドを使用して、結果セットから STRUCT を取得します。次に STRUCT を java.sql.Struct としてキャストすることにより、標準 Java メソッドを使用できるようになります。次に例を示します。

conn = ds.getConnection();
stmt = conn.createStatement();
rs   = stmt.executeQuery("select * from people");
struct = (java.sql.Struct)(rs.getObject(2)); 
Object[] attrs = ((java.sql.Struct)struct).getAttributes();

WebLogic Server では、STRUCT に対応するすべての JDBC API メソッドがサポートされます。

Oracle では、標準メソッド以外に、Oracle 拡張機能メソッドもサポートしています。したがって、STRUCT を weblogic.jdbc.vendor.oracle.OracleStruct としてキャストすると、標準メソッドと拡張機能メソッドの両方が使用できるようになります。

OracleStruct 拡張機能メソッドを使用する

STRUCT に Oracle 拡張機能メソッドを使用する場合、java.sql.Struct (またはオリジナルの getObject 結果) を weblogic.jdbc.vendor.oracle.OracleStruct としてキャストする必要があります。次に例を示します。

java.sql.Struct struct =
(weblogic.jdbc.vendor.oracle.OracleStruct)(rs.getObject(2));

WebLogic Server では次の Oracle 拡張機能がサポートされます。

STRUCT 属性を取得する

STRUCT で個々の属性に対する値を取得するには、getAttributes() および getAttributes(java.util.Dictionary map) の標準 JDBC API メソッド、または getOracleAttributes() の Oracle 拡張機能メソッドを使用できます。

標準メソッドを使用するには、まず結果セットを作成し、この結果セットから STRUCT を取得し、次に getAttributes() メソッドを使用します。このメソッドにより、順序の付いた属性の配列が返されます。アプリケーションのオブジェクト (Java 言語タイプなど) に STRUCT (データベースのオブジェクト) の属性を割り当てることができます。この後、属性を個別に操作できるようになります。次に例を示します。

conn = ds.getConnection();
stmt = conn.createStatement();
rs   = stmt.executeQuery("select * from people");
// 第 3 カラムはオブジェクト データ型を使用
// getObject() により、値の配列にオブジェクトを割り当てる
struct = (java.sql.Struct)(rs.getObject(2)); 
Object[] attrs = ((java.sql.Struct)struct).getAttributes();
String address = attrs[1]; 

上の例で、people テーブルの第 3 カラムではオブジェクト データ型を使用しています。この例は、値の配列を含む Java オブジェクト getObject メソッドの結果を割り当て、必要に応じて配列中の個別の値を使用する方法を示します。

また、getAttributes(java.util.Dictionary map) メソッドを使用しても、STRUCT から属性を取得できます。このメソッドを使用する場合は、Java 言語データ型に Oracle オブジェクトのデータ型をマッピングします。次に例を示します。

java.util.Hashtable map = new java.util.Hashtable();
map.put("NUMBER", Class.forName("java.lang.Integer"));
map.put("VARCHAR", Class.forName("java.lang.String"));
Object[] attrs = ((java.sql.Struct)struct).getAttributes(map);
String address = attrs[1];

また、Oracle 拡張機能メソッドの getOracleAttributes() を使用して、STRUCT の属性を取得することもできます。まず、STRUCT を weblogic.jdbc.vendor.oracle.OracleStruct としてキャストします。このメソッドにより、oracle.sql.Datum オブジェクトのデータ配列が返されます。次に例を示します。

oracle.sql.Datum[] attrs =
((weblogic.jdbc.vendor.oracle.OracleStruct)struct).getOracleAttributes();
      oracle.sql.STRUCT address = (oracle.sql.STRUCT) attrs[1];
      Object address_attrs[] = address.getAttributes();

上の例では、STRUCT がネスト構造になっています。つまり、ここで返されるデータ配列には、別の STRUCT が入れ子の構造で組み込まれています。

STRUCT によってデータベース オブジェクトを更新する

STRUCT を使用してデータベースのオブジェクトを更新するには、prepared statement にある setObject メソッドを使用します。次に例を示します。

conn = ds.getConnection();
stmt = conn.createStatement();
ps = conn.prepareStatement ("UPDATE SCHEMA.people SET EMPLNAME = ?,
EMPID = ? where EMPID = 101");
ps.setString (1, "Smith");
ps.setObject (2, struct);
ps.executeUpdate();

WebLogic Server では、setObject メソッドの 3 つのバージョンがすべてサポートされます。

データベース オブジェクトを作成する

STRUCT は通常、Java アプリケーション中で、データベース オブジェクトにマッピングするカスタム Java クラスに代わるデータベース オブジェクトを実体化する場合に使用します。WebLogic Server アプリケーションでは、データベースに転送する STRUCT は作成できません。ただし、アプリケーション上から検索や操作が実行できるようなデータベース オブジェクトを作成する文は使用できます。次に例を示します。

conn = ds.getConnection();
stmt = conn.createStatement();
cmd = "create type ob as object (ob1 int, ob2 int)"
stmt.execute(cmd);
cmd = "create table t1 of type ob";
stmt.execute(cmd);
cmd = "insert into t1 values (5, 5)"
stmt.execute(cmd);

注意 : アプリケーションで STRUCT は作成できません。データベースから既存のオブジェクトを検索して、これを STRUCT としてキャストすることはできます。アプリケーションで STRUCT オブジェクトを作成するには、標準外の Oracle STRUCT 記述子オブジェクトを使用します。ただし、WebLogic Server ではサポートされません。

STRUCT 属性を自動バッファリングする

STRUCT を使用した WebLogic Server アプリケーションのパフォーマンスを改善するために、自動バッファリング機能と setAutoBuffering(boolean) メソッドを切り換えることができます。自動バッファリングを true に設定すると、weblogic.jdbc.vendor.oracle.OracleStruct により、STRUCT オブジェクトにあるすべての属性のローカル コピーが変換済みのフォーム (すなわち SQL から Java 言語オブジェクトに実体化した形式) で保持されます。アプリケーションが、STRUCT に再びアクセスした時点で、データを再度変換する必要はありません。

注意 : 変換した属性をバッファリングすると、アプリケーションで使用するメモリ量が過度に増大することがあります。自動バッファリングの有効/無効を切り換えるときは、可能メモリ使用量についても考慮してください。

以下の例は、自動バッファリングをアクティブにする方法を示します。

 ((weblogic.jdbc.vendor.oracle.OracleStruct)struct).setAutoBuffering(true);

また、getAutoBuffering() メソッドを使用して、自動バッファリング モードを設定することもできます。

REF によるプログラミング

REF は、行オブジェクトに対する論理ポインタです。REF を検索すると、実際には別のテーブルにある値を指すポインタが返されます。REF のターゲットは、オブジェクト テーブルの行でなければなりません。REF を使用して、これが参照するオブジェクトを検証したり、更新したりできます。また REF を変更することにより、同じオブジェクト タイプの別のオブジェクトを指示したり、null 値を割り当てたりすることができます。

注意 : REF を使用する場合、次の制限があります。

WebLogic Server アプリケーションで REF を使用するには、次の手順に従います。

  1. 必要なクラスをインポートします (「Oracle 拡張機能へアクセスするパッケージをインポートする」を参照)。
  2. データベース接続を取得します (「接続を確立する」を参照)。
  3. 結果セット、または callable statement を使用して REF を取得します。
  4. 結果を STRUCT として、または Java オブジェクトとしてキャストします。これにより、STRUCT メソッド、または Java オブジェクトのメソッドを使用して、データを操作できるようになります。

また、データベースで REF 作成したり、更新したりできます。

手順 3 と 4 について以下の節で詳しく説明します。

REF を取得する

アプリケーションで REF を取得するには、まずクエリを使用して結果セットを作成し、次に getRef メソッドを使用して、結果セットから REF を取得します。次に REF を java.sql.Ref としてキャストすることにより、ビルトイン Java メソッドを使用できます。次に例を示します。

conn = ds.getConnection();
stmt = conn.createStatement();
rs   = stmt.executeQuery("SELECT ref (s) FROM t1 s where s.ob1=5");
rs.next();
// java.sql.Ref としてキャストし、REF を取得
ref = (java.sql.Ref) rs.getRef(1);

なお、上の例の WHERE 句では、ドット表記法を使用して、参照するオブジェクトの属性を指定しています。

REF を java.sql.Ref としてキャストした後は、getBaseTypeName の Java API メソッドが使用できます (これは REF に対応した唯一の JDBC 2.0 標準メソッド)。

REF を取得すると、実際には別のオブジェクト テーブルにある値を指すポインタが返されます。REF 値の取得や操作を行うには、Oracle 拡張機能を使用します。この拡張機能は、sql.java.Ref を weblogic.jdbc.vendor.oracle.OracleRef としてキャストする場合に限って使用できます。

OracleRef 拡張機能メソッドを使用する

REF に Oracle 拡張機能メソッドを使用するには、REF を Oracle REF としてキャストします。たとえば、次のとおりです。

oracle.sql.StructDescriptor desc = ((weblogic.jdbc.vendor.oracle.OracleRef)ref).getDescriptor();

WebLogic Server では次の Oracle 拡張機能がサポートされます。

値を取得する

Oracle では、2 つのバージョンの getValue() メソッドが提供されています。パラメータの指定が不要なメソッドと、戻り値の型をマッピングするハッシュ テーブルを要求するメソッドの 2 種類です。いずれかの getValue() メソッドを使用して、REF の属性値を取得すると、STRUCT または Java オブジェクトのいずれかの形式で結果が返されます。

パラメータなしの getValue() メソッドを使用する方法を以下の例で示します。この例では、REF を oracle.sql.STRUCT としてキャストします。getAttributes() メソッドの説明で示したとおり、STRUCT メソッドを使用して、値を操作できます。

oracle.sql.STRUCT student1 = 
(oracle.sql.STRUCT)((weblogic.jdbc.vendor.oracle.OracleRef)ref).getValue ();
Object attributes[] = student1.getAttributes();

また、getValue(dictionary) を使用して、REF に対する値を取得できます。また REF の属性ごとにデータ型を Java 言語データ型にマッピングするためのハッシュ テーブルが必要になります。次に例を示します。

java.util.Hashtable map = new java.util.Hashtable();
map.put("VARCHAR", Class.forName("java.lang.String"));
map.put("NUMBER", Class.forName("java.lang.Integer"));
oracle.sql.STRUCT result = (oracle.sql.STRUCT)
((weblogic.jdbc.vendor.oracle.OracleRef)ref).getValue (map);

REF 値を更新する

REF を更新する場合、次のいずれかの操作を実行します。

setValue(object) を使用して REF 値を更新する場合は、まず REF の新しい値を使用してオブジェクトを作成した後、setValue メソッドのパラメータとしてオブジェクトを渡します。次に例を示します。

STUDENT s1 = new STUDENT();
s1.setName("Terry Green");
s1.setAge(20);
((weblogic.jdbc.vendor.oracle.OracleRef)ref).setValue(s1);

REF の値を setValue(object) メソッドで更新すると、実際には REF が指示するテーブルの値が更新されます。

prepared statement を使用して REF が指示する位置を更新するには、次の 3 つの基本手順に従います。

  1. 新しい位置を指示する REF を取得します。この REF を使用して、別の REF の値を置き換えます。
  2. SQL コマンドの文字列を作成して、既存の REF の位置を、別の REF の値で置き換えます。
  3. prepared statement を作成、および実行します。

次に例を示します。

try {
conn = ds.getConnection();
stmt = conn.createStatement();
// REF の取得
rs   = stmt.executeQuery("SELECT ref (s) FROM t1 s where s.ob1=5");
rs.next();
ref = (java.sql.Ref) rs.getRef(1); // REF を java.sql.Ref としてキャストする
}
// prepared statement の作成と実行
String sqlUpdate = "update t3 s2 set col = ? where s2.col.ob1=20";
pstmt = conn.prepareStatement(sqlUpdate);
pstmt.setRef(1, ref);
pstmt.executeUpdate();

callable statement を使用して、REF が指示する位置を更新する場合は、まずストアド プロシージャを作成し、いずれかの IN パラメータを設定して、OUT パラメータを登録した後、文を実行します。ストアド プロシージャでは、実際の位置を指示する REF 値が更新されます。次に例を示します。

conn = ds.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT ref (s) FROM t1 s where s.ob1=5");
rs.next();
ref1 = (java.sql.Ref) rs.getRef(1);
// ストアド プロシージャの作成
sql = "{call SP1 (?, ?)}";
cstmt = conn.prepareCall(sql);
// IN パラメータと OUT パラメータの登録
cstmt.setRef(1, ref1);
cstmt.registerOutParameter(2, getRefType(), "USER.OB");
// 実行
cstmt.execute();

データベースで REF を作成する

JDBC アプリケーションで REF オブジェクトは作成できません。単に、データベースから既存の REF オブジェクトが検索されるだけです。ただし、文または prepared statement を使用して、データベースに REF を作成できます。次に例を示します。

conn = ds.getConnection();
stmt = conn.createStatement();
cmd = "create type ob as object (ob1 int, ob2 int)"
stmt.execute(cmd);
cmd = "create table t1 of type ob";
stmt.execute(cmd);
cmd = "insert into t1 values (5, 5)"
stmt.execute(cmd);
cmd = "create table t2 (col ref ob)";
stmt.execute(cmd);
cmd = "insert into t2 select ref(p) from t1 where p.ob1=5";
stmt.execute(cmd);

上の例では、オブジェクト タイプ (ob)、このオブジェクト タイプのテーブル (t1)、ob オブジェクトのインスタンスを指示する REF カラムを含むテーブル (t2) を作成して、REF を REF カラムに挿入します。REF は、t1 の行を指します (最初のカラムの値は 5)。

BLOB と CLOB によるプログラミング

この節では、OracleBlob インタフェースへのアクセス方法を示すサンプル コードについて説明します。WebLogic Server でサポートされるメソッドを使用している場合、この例で示す構文は、OracleBlob インタフェースで使用できます。「Oracle 拡張機能インタフェースとサポートされるメソッドの表」を参照してください。

注意 : BLOB および CLOB (「LOB」と呼ばれる) を使用する場合、トランザクションの境界を考慮する必要があります。たとえば、すべての読み取り/書き込みをトランザクション内の特定の LOB に転送します。詳細については、Oracle Web サイトにある Oracle のマニュアルの「LOB Locators and Transaction Boundaries」を参照してください。

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;

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 がサポートするメソッドにアクセスできます。

PreparedStatement を使用して CLOB 値を更新する

PreparedStatement を使用して CLOB を更新し、新しい値が以前の値より短い場合、CLOB は更新中に明示的に置換されなかった文字を保持します。たとえば、CLOB の現在の値が abcdefghij の場合に、PreparedStatement を使用して zxyw で CLOB を更新すると、CLOB の値が zxywefghij に更新されます。PreparedStatement で更新された値を修正するには、dbms_lob.trim プロシージャを使用して、更新後に残った余分な文字を削除します。dbms_lob.trim プロシージャの詳細については、Oracle のマニュアルを参照してください。

 


Oracle 仮想プライベート データベースによるプログラミング

Oracle Virtual Private Database (VPD) は、サーバによって強制されるアプリケーション定義のファイン グレイン アクセス制御と、Oracle 9i データベース サーバのセキュアなアプリケーション コンテキストを組み合わせたものです。WebLogic Server アプリケーションで VPD を使用するには、以下の手順に従います。

  1. Oracle Thin Driver または Oracle OCI Driver を使用する WebLogic Server コンフィグレーション内に JDBC 接続プールを作成します。「WebLogic JDBC のコンフィグレーションと使い方」、または Administration Console オンライン ヘルプの「JDBC 接続プールの作成とコンフィグレーション」を参照してください。
  2. 注意 : XA 対応の JDBC ドライバを使用している場合は、KeepXAConnTillTxComplete=true を設定する必要があります。Administration Console オンライン ヘルプの「追加の XA 接続プール プロパティ」を参照してください。

    WebLogic jDriver for Oracle は ClientIdentifier を伝播できないため、VPD で使用するドライバとしては適していません。

  3. 接続プールを指す WebLogic Server コンフィグレーション内にデータ ソースを作成します。「DataSource のコンフィグレーションと使い方」、または Administration Console オンライン ヘルプの「JDBC データ ソースの作成とコンフィグレーション」を参照してください。
  4. アプリケーションで次のコードを実行します。
import weblogic.jdbc.extensions.WLConnection
// WLS JDBC 接続プールから接続を取得する
Connection conn = ds.getConnection();
// 基底のベンダ接続オブジェクトを取得する
oracle.jdbc.OracleConnection orConn = (oracle.jdbc.OracleConnection)
(((WLConnection)conn).getVendorConnection());
// CLIENT_IDENTIFIER を設定する (データベース サーバ サイドの USERENV ネーミング 
// コンテキストからアクセス可能になる)
orConn.setClientIdentifier(clientId);
/* アプリケーション固有の処理を実行する (できれば orConn ではなく conn を使用する) */
// WLS JDBC 接続プールに戻る前に接続をクリーンアップする
orConn.clearClientIdentifier(clientId);
// ベンダ固有の呼び出しの使用が完了したら、
// 物理的な接続への参照を即座に破棄する
orConn = null;
// プールされた接続を閉じる
conn.close();

注意 : このコードでは、プールされた (論理的な) 接続からの基底の物理的な接続を使用します。「接続プールからの物理的な接続の取得」を参照してください。

WebLogic Server 8.1 SP2 での Oracle VPD の使用

WebLogic Server 8.1 SP2 以降では、プールされた接続からの基底の物理的な接続を使用せずに、oracle.jdbc.OracleConnection.setClientIdentitfier メソッドおよび oracle.jdbc.OracleConnection.clearClientIndentifier メソッドを使用することができます。WebLogic Server アプリケーションで VPD を使用するには、以下の手順に従います。

import weblogic.jdbc.vendor.oracle.OracleConnection;
// WLS JDBC 接続プールから接続を取得する
Connection conn = ds.getConnection();
// Oracle 拡張機能にキャストして CLIENT_IDENTIFIER を設定する
// (データベース サーバ サイドの USERENV ネーミング コンテキスト
// からアクセス可能になる)
((weblogic.jdbc.vendor.oracle.OracleConnection)conn).setClientIdentifier(clientId);
/* アプリケーション固有の処理を実行する */
// WLS JDBC 接続プールに戻る前に接続をクリーンアップする
((OracleConnection)conn).clearClientIdentifier(clientId);
// 接続を閉じる
conn.close();

 


バージョンの異なる WebLogic Server クライアント/サーバ間のベンダ拡張機能のサポート

WebLogic Server がベンダの JDBC 拡張機能をサポートする方法は WebLogic Server 8.1 で変更されたため、バージョンの異なるクライアントとサーバの間の相互運用性が影響を受けます。

WebLogic Server 8.1 クライアントが WebLogic Server 7.0 以前のサーバと対話する場合、Oracle 拡張機能はサポートされません。クライアント アプリケーションは JDBC オブジェクトを Oracle 拡張機能インタフェースにキャストしようとすると、ClassCastException を受け取ります。ただし、WebLogic Server 7.0 以前のクライアントが WebLogic Server 8.1 のサーバと対話する場合、Oracle 拡張機能はサポートされます。

このことは以下の Oracle 拡張機能インタフェースに適用されます。

注意 : 標準の JDBC インタフェースは、クライアントまたはサーバのバージョンに関係なくサポートされます。

 


Oracle 拡張機能インタフェースとサポートされるメソッドの表

以前のリリースの WebLogic Server では、以下の表に示す JDBC 拡張機能のみがサポートされていました。現在のリリースの WebLogic Server は、ベンダの JDBC ドライバでパブリック インタフェースとして公開されているほとんどの拡張機能メソッドをサポートします。ベンダ拡張機能を使用する手順については、「JDBC インタフェースのベンダ拡張機能の使い方」を参照してください。ベンダ拡張機能をサポートするための新しい内部メカニズムは以前の実装に依存していないため、一部のインタフェースは不要になって非推奨となりました。これらのインタフェースは WebLogic Server の将来のリリースで削除される予定です。表 5-6 を参照してください。表に示された代わりのインタフェースを使用することをお勧めします。

表 5-6 Oracle JDBC 拡張機能向けの非推奨になったインタフェース

非推奨になったインタフェース (WebLogic Server 7.0 以前でサポート)

代わりに使用する Oracle のインタフェース (WebLogic Server 8.1 以降でサポート)

weblogic.jdbc.vendor.oracle.
OracleConnection

oracle.jdbc.OracleConnection

weblogic.jdbc.vendor.oracle.
OracleStatement

oracle.jdbc.OracleStatement

weblogic.jdbc.vendor.oracle.
OracleCallableStatement

oracle.jdbc.OracleCallableStatement

weblogic.jdbc.vendor.oracle.
OraclePreparedStatement

oracle.jdbc.OraclePreparedStatement

weblogic.jdbc.vendor.oracle.
OracleResultSet

oracle.jdbc.OracleResultSet

表 5-7 に示すインタフェースは、これらの拡張機能メソッドにアクセスするインタフェースを Oracle が提供していないため、引き続き有効です。

表 5-7 WebLogic Server で引き続きサポートされる Oracle インタフェース

Oracle インタフェース

weblogic.jdbc.vendor.oracle.OracleArray

weblogic.jdbc.vendor.oracle.OracleRef

weblogic.jdbc.vendor.oracle.OracleStruct

weblogic.jdbc.vendor.oracle.OracleThinClob

weblogic.jdbc.vendor.oracle.OracleThinBlob

Oracle インタフェースを以下の表に示します。また、標準 JDBC (java.sql.*) インタフェースを拡張するために Oracle Thin Driver (またはこれらのメソッドをサポートするその他のドライバ) で使用するメソッドでサポートされているものも示します。

表 5-8 OracleConnection インタフェース

拡張

メソッド シグネチャ

OracleConnection
拡張 java.sql.Connection

(このインタフェースは非推奨 表 5-6 を参照してください。)


void clearClientIdentifier(String s) 
throws java.sql.SQLException;
boolean getAutoClose() 
throws java.sql.SQLException;
String getDatabaseProductVersion()
throws java.sql.SQLException;
String getProtocolType() throws
java.sql.SQLException;
String getURL() throws java.sql.SQLException;
String getUserName()
throws java.sql.SQLException;
boolean getBigEndian() 
throws java.sql.SQLException;
boolean getDefaultAutoRefetch() throws
java.sql.SQLException;
boolean getIncludeSynonyms()
throws java.sql.SQLException;
boolean getRemarksReporting()
throws java.sql.SQLException;
boolean getReportRemarks() 
throws java.sql.SQLException;

OracleConnection
拡張 java.sql.Connection

(続き)

(このインタフェースは非推奨 表 5-6 を参照してください。)


boolean getRestrictGetTables()
throws java.sql.SQLException;
boolean getUsingXAFlag()
throws java.sql.SQLException;
boolean getXAErrorFlag() 
throws java.sql.SQLException;
boolean isCompatibleTo816()
throws java.sql.SQLException;
(非推奨)
byte[] getFDO(boolean b) 
throws java.sql.SQLException;
int getDefaultExecuteBatch() throws 
java.sql.SQLException;
int getDefaultRowPrefetch() 
throws java.sql.SQLException;
int getStmtCacheSize() 
throws java.sql.SQLException;
java.util.Properties getDBAccessProperties()
throws java.sql.SQLException;
short getDbCsId() throws java.sql.SQLException;
short getJdbcCsId() throws java.sql.SQLException;
short getStructAttrCsId() 
throws java.sql.SQLException;
short getVersionNumber() 
throws java.sql.SQLException;
void archive(int i, int j, String s) 
throws java.sql.SQLException;

OracleConnection
拡張 java.sql.Connection

(続き)

(このインタフェースは非推奨 表 5-6 を参照してください。)


void close_statements() 
throws java.sql.SQLException;
void initUserName() throws java.sql.SQLException;
void logicalClose() throws java.sql.SQLException;
void needLine() throws java.sql.SQLException;
void printState() throws java.sql.SQLException;
void registerSQLType(String s, String t) 
throws java.sql.SQLException;
void releaseLine() throws java.sql.SQLException;  
void removeAllDescriptor() 
throws java.sql.SQLException;
void removeDescriptor(String s) 
throws java.sql.SQLException;
void setAutoClose(boolean on) throws
java.sql.SQLException;
void setClientIdentifier(String s) 
throws java.sql.SQLException;
void clearClientIdentifier(String s) throws java.sql.SQLException;
void setDefaultAutoRefetch(boolean b)
throws java.sql.SQLException;
void setDefaultExecuteBatch(int i) 
throws java.sql.SQLException;
void setDefaultRowPrefetch(int i) 
throws java.sql.SQLException;
void setFDO(byte[] b) 
throws java.sql.SQLException;
void setIncludeSynonyms(boolean b) 
throws java.sql.SQLException;

OracleConnection
拡張 java.sql.Connection

(続き)

(このインタフェースは非推奨 表 5-6 を参照してください。)


void setPhysicalStatus(boolean b) 
throws java.sql.SQLException;
void setRemarksReporting(boolean b) 
throws java.sql.SQLException;
void setRestrictGetTables(boolean b) 
throws java.sql.SQLException;
void setStmtCacheSize(int i) 
throws java.sql.SQLException;
void setStmtCacheSize(int i, boolean b) 
throws java.sql.SQLException;
void setUsingXAFlag(boolean b) 
throws java.sql.SQLException;
void setXAErrorFlag(boolean b) 
throws java.sql.SQLException;
void shutdown(int i) 
throws java.sql.SQLException;
void startup(String s, int i)
throws java.sql.SQLException;


 

表 5-9 OracleStatement インタフェース

拡張

メソッド シグネチャ

OracleStatement
拡張 java.sql.statement

(このインタフェースは非推奨 表 5-6 を参照してください。)


String getOriginalSql() 
throws java.sql.SQLException;
String getRevisedSql() 
throws java.sql.SQLException;
(Oracle 8.1.7 で非推奨、Oracle 9i で破棄)
boolean getAutoRefetch() 
throws java.sql.SQLException;
boolean is_value_null(boolean b, int i) 
throws java.sql.SQLException;
byte getSqlKind() 
throws java.sql.SQLException;
int creationState() 
throws java.sql.SQLException;
int getAutoRollback() 
throws java.sql.SQLException;
(非推奨)
int getRowPrefetch() 
throws java.sql.SQLException;
int getWaitOption() 
throws java.sql.SQLException;
(非推奨)
int sendBatch() 
throws java.sql.SQLException;

OracleStatement
拡張 java.sql.statement

(続き)

(このインタフェースは非推奨 表 5-6 を参照してください。)


void clearDefines() 
throws java.sql.SQLException;
void defineColumnType(int i, int j) 
throws java.sql.SQLException;
void defineColumnType(int i, int j, String s)
throws java.sql.SQLException;
void defineColumnType(int i, int j, int k) 
throws java.sql.SQLException;
void describe() 
throws java.sql.SQLException;
void setAutoRefetch(boolean b) 
throws java.sql.SQLException;
void setAutoRollback(int i) 
throws java.sql.SQLException;
(非推奨)
void setRowPrefetch(int i) 
throws java.sql.SQLException;
void setWaitOption(int i) 
throws java.sql.SQLException;
(非推奨)


 

表 5-10 OracleResultSet インタフェース

拡張

メソッド シグネチャ

OracleResultSet
拡張 java.sql.ResultSet

(このインタフェースは非推奨 表 5-6 を参照してください。)


boolean getAutoRefetch() throws java.sql.SQLException;
int getFirstUserColumnIndex() 
throws java.sql.SQLException;
void closeStatementOnClose() 
throws java.sql.SQLException;
void setAutoRefetch(boolean b) 
throws java.sql.SQLException;
java.sql.ResultSet getCursor(int n) 
throws java.sql.SQLException;
java.sql.ResultSet getCURSOR(String s) 
throws java.sql.SQLException;


 

.

表 5-11 OracleCallableStatement インタフェース

拡張

メソッド シグネチャ

OracleCallableStatement
拡張
java.sql.CallableStatement

(このインタフェースは非推奨 表 5-6 を参照してください。)


void clearParameters() 
throws java.sql.SQLException;
void registerIndexTableOutParameter(int i, 
int j, int k, int l)
throws java.sql.SQLException;
void registerOutParameter
(int i, int j, int k, int l)
throws java.sql.SQLException;
java.sql.ResultSet getCursor(int i) 
throws java.sql.SQLException;
java.io.InputStream getAsciiStream(int i)
throws java.sql.SQLException;
java.io.InputStream getBinaryStream(int i)
throws java.sql.SQLException;
java.io.InputStream getUnicodeStream(int i)
throws java.sql.SQLException;


 

.

表 5-12 OraclePreparedStatement インタフェース

拡張

メソッド シグネチャ

OraclePreparedStatement
拡張
OracleStatement および java.sql. PreparedStatement

(このインタフェースは非推奨 表 5-6 を参照してください。)


int getExecuteBatch() 
throws java.sql.SQLException;
void defineParameterType(int i, int j, int k) 
throws java.sql.SQLException;
void setDisableStmtCaching(boolean b) 
throws java.sql.SQLException;
void setExecuteBatch(int i) 
throws java.sql.SQLException;
void setFixedCHAR(int i, String s) 
throws java.sql.SQLException;
void setInternalBytes(int i, byte[] b, int j)
throws java.sql.SQLException;


 

表 5-13 OracleArray インタフェース

拡張

メソッド シグネチャ

OracleArray
拡張 java.sql.Array


public ArrayDescriptor getDescriptor() 
throws java.sql.SQLException;
public Datum[] getOracleArray() 
throws SQLException;
public Datum[] getOracleArray(long l, int i) 
throws SQLException;
public String getSQLTypeName()
throws java.sql.SQLException;
public int length()
throws java.sql.SQLException;
public double[] getDoubleArray()
throws java.sql.SQLException;
public double[] getDoubleArray(long l, int i)
throws java.sql.SQLException;
public float[] getFloatArray()
throws java.sql.SQLException;
public float[] getFloatArray(long l, int i)
throws java.sql.SQLException;
public int[] getIntArray()
throws java.sql.SQLException;
public int[] getIntArray(long l, int i)
throws java.sql.SQLException;
public long[] getLongArray()
throws java.sql.SQLException;
public long[] getLongArray(long l, int i)
throws java.sql.SQLException;

OracleArray
拡張 java.sql.Array

(続き)

public short[] getShortArray()
throws java.sql.SQLException;
public short[] getShortArray(long l, int i)
throws java.sql.SQLException;
public void setAutoBuffering(boolean flag)
throws java.sql.SQLException;
public void setAutoIndexing(boolean flag)
throws java.sql.SQLException;
public boolean getAutoBuffering()
throws java.sql.SQLException;
public boolean getAutoIndexing()
throws java.sql.SQLException;
public void setAutoIndexing(boolean flag, int i)
throws java.sql.SQLException;


 

表 5-14 OracleStruct インタフェース

拡張

メソッド シグネチャ

OracleStruct
拡張 java.sql.Struct


public Object[] getAttributes() 
throws java.sql.SQLException;
public Object[] getAttributes(java.util.Dictionary map)
throws java.sql.SQLException;
public Datum[] getOracleAttributes() 
throws java.sql.SQLException;
public oracle.sql.StructDescriptor getDescriptor() 
throws java.sql.SQLException;
public String getSQLTypeName() 
throws java.sql.SQLException;
public void setAutoBuffering(boolean flag) 
throws java.sql.SQLException;
public boolean getAutoBuffering() 
throws java.sql.SQLException;


 

表 5-15 OracleRef インタフェース

拡張

メソッド シグネチャ

OracleRef
拡張 java.sql.Ref


public String getBaseTypeName() 
throws SQLException;
public oracle.sql.StructDescriptor getDescriptor() 
throws SQLException;
public oracle.sql.STRUCT getSTRUCT() 
throws SQLException;
public Object getValue() 
throws SQLException;
public Object getValue(Map map) 
throws SQLException;
public void setValue(Object obj) 
throws SQLException;


 

表 5-16 OracleThinBlob インタフェース

拡張

メソッド シグネチャ

OracleThinBlob
拡張 java.sql.Blob

int getBufferSize()throws java.sql.Exception
int getChunkSize()throws java.sql.Exception
int putBytes(long, int, byte[])throws java.sql.Exception
int getBinaryOutputStream()throws java.sql.Exception


 

表 5-17 OracleThinClob インタフェース

拡張

メソッド シグネチャ

OracleThinClob
拡張 java.sql.Clob

public OutputStream getAsciiOutputStream()
throws java.sql.Exception;
public Writer getCharacterOutputStream()
throws java.sql.Exception;
public int getBufferSize() throws java.sql.Exception;
public int getChunkSize() throws java.sql.Exception;
public char[] getChars(long l, int i)
throws java.sql.Exception;
public int putChars(long start, char myChars[])
throws java.sql.Exception;
public int putString(long l, String s)
throws java.sql.Exception;


 

 

フッタのナビゲーションのスキップ  ページの先頭 前 次