Comments
Description
Transcript
アプリケーション開発ガイド (JDBCドライバ編)
Symfoware Server V10.0.0 アプリケーション開発ガイド (JDBCドライバ編) Windows/Solaris/Linux J2X1-7487-01Z0(00) 2010年1月 まえがき 本書の目的 本書は、JDBCドライバを利用して、Symfoware/RDBのデータベースにアクセスする方法について説明しています。 本書の読者 本書は、JDBCドライバを使用して、アプリケーションを開発される方に読んでいただくように書かれています。 本書を読むには、以下に示す技術および知識が必要です。 ・ Symfoware/RDBに関する知識 ・ SQLに関する知識 ・ オブジェクト指向のプログラミングに関する一般知識 ・ Javaに関する一般知識 ・ JDBCに関する一般知識 ・ HTMLに関する一般知識 ・ インターネットに関する一般知識 ・ Interstage Application Serverに関する一般知識 ・ Interstage Studioに関する一般知識 ・ EJBに関する一般知識 参照 グローバルサーバ上のデータベースを利用する場合には、“アプリケーション開発ガイド(JDBCドライバ編)グローバル サーバ連携”を参照してください。 本書の構成 本書の構成と内容は以下のとおりです。 第1章 アプリケーション開発の概要 JDBCドライバを利用したアプリケーション開発の概要について説明しています。 第2章 アプリケーションの設計 JDBCドライバを利用したアプリケーションの設計時に考慮すべき点について説明しています。 第3章 アプリケーションの作成 JDBCドライバを利用したアプリケーションの作成方法について説明しています。 第4章 ルーチンを利用するアプリケーションの作成 プロシジャルーチンを利用するアプリケーションの作成方法について説明しています。 第5章 アプリケーションのコンパイルおよび実行 JDBCドライバを利用したアプリケーションのコンパイルおよび実行方法を説明しています。 付録A Java言語のサンプルプログラム JDBCドライバを利用したJava言語のサンプルプログラムを記載します。 付録B DriverManagerクラスからの接続 DriverManagerクラスのAPIを使用し、データベースに接続する方法について説明しています。 -i- 付録C 異常時の対処 JDBCドライバ利用時に、異常が発生した際の対処方法について説明しています。 付録D 使用可能SQL文一覧 JDBCドライバを使用したアプリケーションで指定可能なSQL文について説明しています。 付録E メッセージリファレンス 各エラーメッセージに対する利用者の対処方法について説明しています。 付録F サポートAPI一覧 RDB2_TCP接続でのサポートメソッドの一覧を記載します。 注意事項 本書の説明で使用しているInterstage Application Serverのバージョンは、V9.0です。 平成22年 1月 初版 - ii - 目 次 第1章 アプリケーション開発の概要.............................................................................................................................................1 1.1 JDBCドライバの概要...........................................................................................................................................................................1 1.2 利用形態.............................................................................................................................................................................................1 1.2.1 JDBCドライバの利用形態............................................................................................................................................................1 1.2.2 データベースへの接続形態........................................................................................................................................................4 1.3 利用可能な機能..................................................................................................................................................................................5 1.3.1 Symfoware Serverの機能.............................................................................................................................................................5 1.3.2 J2EEの機能..................................................................................................................................................................................5 1.4 JDKとの組合せ....................................................................................................................................................................................6 1.5 アプリケーション開発作業の流れ.......................................................................................................................................................7 第2章 アプリケーションの設計....................................................................................................................................................9 2.1 コネクション..........................................................................................................................................................................................9 2.1.1 コネクションの接続形態.............................................................................................................................................................10 2.1.2 コネクションプーリング................................................................................................................................................................10 2.1.2.1 Interstage Application Serverでのコネクションプーリング..................................................................................................10 2.1.2.2 JDBCドライバでのコネクションプーリング...........................................................................................................................11 2.2 文字コード系の考慮..........................................................................................................................................................................12 2.2.1 文字コード系の決定...................................................................................................................................................................13 2.2.2 文字コード系に関する留意事項...............................................................................................................................................14 2.3 トランザクション..................................................................................................................................................................................17 2.3.1 トランザクションの概要...............................................................................................................................................................18 2.3.2 トランザクションの有効範囲.......................................................................................................................................................18 2.3.3 トランザクションのアクセスモード...............................................................................................................................................20 2.3.4 独立性水準................................................................................................................................................................................21 2.4 データ型............................................................................................................................................................................................22 2.4.1 データ型の概要..........................................................................................................................................................................22 2.4.2 Symfoware Serverのデータ型....................................................................................................................................................25 2.4.2.1 Symfoware ServerのSMALLINT型....................................................................................................................................25 2.4.2.2 Symfoware ServerのINTEGER型.......................................................................................................................................26 2.4.2.3 Symfoware ServerのNUMERIC型およびDECIMAL型....................................................................................................27 2.4.2.4 Symfoware ServerのREAL型.............................................................................................................................................28 2.4.2.5 Symfoware ServerのDOUBLE型........................................................................................................................................29 2.4.2.6 Symfoware ServerのFLOAT型...........................................................................................................................................30 2.4.2.7 Symfoware ServerのDATE型.............................................................................................................................................31 2.4.2.8 Symfoware ServerのTIME型..............................................................................................................................................32 2.4.2.9 Symfoware ServerのTIMESTAMP型.................................................................................................................................33 2.4.2.10 Symfoware ServerのCHAR型およびVARCHAR型........................................................................................................35 2.4.2.11 Symfoware ServerのNCHAR型およびNCHAR VARYING型.......................................................................................37 2.4.2.12 Symfoware ServerのBLOB型...........................................................................................................................................37 2.4.2.13 Symfoware ServerのROW_ID型......................................................................................................................................38 2.5 データ操作........................................................................................................................................................................................39 2.5.1 データ検索について..................................................................................................................................................................39 2.5.2 データ更新について..................................................................................................................................................................40 2.5.3 ストアドプロシジャの実行について............................................................................................................................................41 2.5.4 NULLの扱いについて...............................................................................................................................................................42 2.5.5 ResultSetの機能について..........................................................................................................................................................43 2.5.5.1 ResultSetの同時複数操作..................................................................................................................................................44 2.5.5.2 ResultSetの更新..................................................................................................................................................................44 2.6 省資源・高性能アプリケーション作成のために................................................................................................................................45 2.6.1 オブジェクトのcloseメソッド.........................................................................................................................................................45 2.6.2 ステートメントキャッシュ..............................................................................................................................................................46 2.6.3 行識別子(SQL ROWID)を利用したデータ操作......................................................................................................................48 2.6.4 バッチ更新機能について...........................................................................................................................................................50 2.7 デッドロックについて.........................................................................................................................................................................50 - iii - 2.8 国際化に対応したアプリケーションについて...................................................................................................................................50 第3章 アプリケーションの作成..................................................................................................................................................52 3.1 コーディング方法...............................................................................................................................................................................52 3.2 データベースへの接続/切断............................................................................................................................................................52 3.3 データ参照........................................................................................................................................................................................54 3.4 データ更新........................................................................................................................................................................................56 3.5 パラメタ指定でのデータ参照............................................................................................................................................................57 3.6 パラメタ指定でのデータ更新............................................................................................................................................................60 3.7 BLOBデータの参照..........................................................................................................................................................................61 3.8 BLOBデータの更新..........................................................................................................................................................................64 3.9 スクロールカーソルの実行................................................................................................................................................................65 3.10 行識別子(SQL ROWID)データの取得..........................................................................................................................................67 3.11 行識別子(SQL ROWID)データを利用したデータ操作................................................................................................................68 3.12 ResultSetの保持機能を利用したデータの参照.............................................................................................................................70 3.13 複数ResultSetの同時データ参照...................................................................................................................................................72 3.14 ResultSetでのデータ更新...............................................................................................................................................................75 3.15 バッチ更新の実行...........................................................................................................................................................................76 3.16 タイムゾーン指定でのデータ更新..................................................................................................................................................78 3.17 エラー情報の取得...........................................................................................................................................................................79 第4章 ルーチンを利用するアプリケーションの作成....................................................................................................................82 4.1 プロシジャルーチンを利用するアプリケーションの作成の流れ......................................................................................................82 4.2 プロシジャルーチンの実行...............................................................................................................................................................82 4.3 プロシジャルーチンの処理結果.......................................................................................................................................................82 4.4 プロシジャルーチン利用時のトランザクション..................................................................................................................................84 第5章 アプリケーションのコンパイルおよび実行........................................................................................................................85 5.1 アプリケーションのコンパイル...........................................................................................................................................................85 5.2 ネーミングサービスとJDBCデータソース登録ツール.......................................................................................................................85 5.2.1 ネーミングサービスの起動.........................................................................................................................................................86 5.2.1.1 Windows(R)サービス機能を利用したネーミングサービスの起動.....................................................................................86 5.2.1.2 Javaコマンドを使用したネーミングサービスの起動............................................................................................................90 5.2.2 JDBCデータソース登録ツールの起動......................................................................................................................................94 5.2.3 JDBCデータソース登録ツール..................................................................................................................................................95 5.2.3.1 データソース一覧画面........................................................................................................................................................95 5.2.3.2 データソースの情報設定画面............................................................................................................................................97 5.2.3.3 データソースのオプション情報設定画面...........................................................................................................................99 5.2.3.4 ctuneparamオプションについて.........................................................................................................................................101 5.2.3.5 クライアント用の動作環境ファイルの指定について.........................................................................................................123 5.2.4 symjddefdsコマンドによるJDBCデータソースの登録..............................................................................................................124 5.2.4.1 JDBCデータソース定義ファイルとは................................................................................................................................124 5.2.4.2 接続先情報の設定............................................................................................................................................................124 5.2.4.3 オプションの設定...............................................................................................................................................................125 5.3 アプリケーションの実行...................................................................................................................................................................131 5.3.1 Interstage Application Serverを使用する場合の環境設定.....................................................................................................131 5.3.2 Javaアプリケーションの環境設定.............................................................................................................................................138 5.3.3 symjdコマンド使用時の設定....................................................................................................................................................142 5.3.4 実行方法..................................................................................................................................................................................145 5.4 アプリケーションのデバッグ.............................................................................................................................................................145 5.4.1 エラーメッセージによる対処.....................................................................................................................................................146 5.4.2 JDBCスナップによる対処.........................................................................................................................................................147 5.4.2.1 JDBCスナップの採取方法................................................................................................................................................147 5.4.2.2 JDBCスナップの分析方法................................................................................................................................................150 5.5 アプリケーションのチューニング.....................................................................................................................................................152 付録A Java言語のサンプルプログラム...................................................................................................................................153 A.1 サンプル実行前の準備..................................................................................................................................................................153 - iv - A.1.1 データベースの作成...............................................................................................................................................................153 A.1.2 初期データの追加...................................................................................................................................................................154 A.1.3 JDBCデータソース登録ツールの設定...................................................................................................................................154 A.2 データを参照する...........................................................................................................................................................................155 A.3 データを更新する...........................................................................................................................................................................156 A.4 パラメタを指定してデータを参照する............................................................................................................................................158 A.5 パラメタを指定してデータを追加する............................................................................................................................................159 A.6 スクロールカーソルを使用する......................................................................................................................................................160 A.7 ストアドプロシジャを使用する.........................................................................................................................................................162 A.8 BLOB型の列に対する操作を行う.................................................................................................................................................163 A.9 トランザクションを手動で制御する.................................................................................................................................................166 A.10 独立性水準を設定する................................................................................................................................................................168 A.11 Connection Manager連携.............................................................................................................................................................170 A.12 Interstage Application Serverを使用したアプリケーション...........................................................................................................171 A.13 行識別子(SQL ROWID)データを利用してデータを操作する...................................................................................................172 A.14 ResultSetの保持機能を利用したResultSetの操作を行う............................................................................................................174 A.15 ResultSetを複数同時に利用してデータ参照する.......................................................................................................................175 A.16 ResultSetの更新機能を利用してデータを更新する....................................................................................................................177 A.17 バッチ更新機能を利用してデータを更新する............................................................................................................................178 A.18 タイムゾーン機能を利用してデータの更新を行う.......................................................................................................................180 A.19 Unicode文字のストリーム機能を利用してデータの更新を行う...................................................................................................181 付録B DriverManagerクラスからの接続.................................................................................................................................184 B.1 URL記述形式.................................................................................................................................................................................184 B.2 getConnectionメソッドのオプション.................................................................................................................................................185 B.3 データベースとの接続/切断...........................................................................................................................................................186 B.4 サンプルアプリケーション...............................................................................................................................................................188 付録C 異常時の対処.............................................................................................................................................................190 付録D 使用可能SQL文一覧..................................................................................................................................................192 付録E メッセージリファレンス..................................................................................................................................................196 E.1 SQLSTATEエラーメッセージ.........................................................................................................................................................196 E.1.1 SQLSTATEエラーメッセージ(08001)......................................................................................................................................196 E.1.2 SQLSTATEエラーメッセージ(08003~0A000).......................................................................................................................196 E.1.3 SQLSTATEエラーメッセージ(22000~2A000).......................................................................................................................198 E.1.4 SQLSTATEエラーメッセージ(34000~42000)........................................................................................................................200 E.1.5 SQLSTATEエラーメッセージ(HZ080~HZxxx(xxxは3けたの数字))...................................................................................202 E.1.6 SQLSTATEエラーメッセージ(S1000~S1093).......................................................................................................................203 E.2 Vendorエラーメッセージ.................................................................................................................................................................204 E.2.1 Vendorエラーメッセージ(0~9)................................................................................................................................................205 E.2.2 Vendorエラーメッセージ(12~99)............................................................................................................................................206 E.2.3 Vendorエラーメッセージ(100~117)........................................................................................................................................209 E.2.4 Vendorエラーメッセージ(1000~1009)....................................................................................................................................213 E.2.5 Vendorエラーメッセージ(1010~1019)....................................................................................................................................215 E.2.6 Vendorエラーメッセージ(1020~1039)....................................................................................................................................218 E.2.7 Vendorエラーメッセージ(1040~1049)....................................................................................................................................220 E.2.8 Vendorエラーメッセージ(1050~1096)....................................................................................................................................223 E.2.9 Vendorエラーメッセージ(1100~1199)....................................................................................................................................234 E.2.10 Vendorエラーメッセージ(2000~4007)..................................................................................................................................239 E.2.11 Vendorエラーメッセージ(7001~7007)..................................................................................................................................242 E.2.12 Vendorエラーメッセージ(8000~8009)..................................................................................................................................244 E.3 symjdメッセージ..............................................................................................................................................................................246 E.3.1 symjdメッセージ(インフォメーションメッセージ).....................................................................................................................247 E.3.2 symjdメッセージ(異常系メッセージ)......................................................................................................................................248 付録F サポートAPI一覧.........................................................................................................................................................261 -v- 索引......................................................................................................................................................................................280 - vi - 第1章 アプリケーション開発の概要 本章では、JDBCドライバを利用したアプリケーション開発の概要について説明します。 1.1 JDBCドライバの概要 JDBCは、米国Sun Microsystems,Inc.によって提唱されたJavaを使ってSQL文を実行し、データベース操作をするための APIです。 JDBCドライバは、クライアント上のJavaアプリケーションから、サーバ上のSymfowareデータベース(以降、データベースと 呼びます)にアクセスするためのインタフェースを提供します。 JDBCドライバのドライバタイプ JDBCドライバのドライバタイプは、一般に以下の4つのタイプに分類されます。 ドライバタイプ ODBCブリッジ(タイプ1) 概要 ODBCドライバを経由して、各データベースに接 続するドライバです。 ネイティブブリッジ(タイプ2) DBMS固有の接続ライブラリ用APIを使用したドラ イバです。Symfoware Serverへの高速アクセスが 可能です。 ネットプロトコルドライバ(タ イプ3) 以下の2つの部分から構成されるドライバです。 ・ ネットワーク経由でダウンロード可能なJDBC ドライバ部 ・ 3階層モデルの中間層のアプリケーションとし て動作するミドルウェア部 ネイティブプロトコルドライ バ(タイプ4) JDBC APIからDBMS依存のネイティブプロトコル への変換まで、すべてを単体で行うPureJavaで構 成されたドライバです。 Symfoware ServerのJDBCドライバでは、ネイティブブリッジ(タイプ2)とネイティブプロトコルドライバ(タイプ4)をサポートし ています。 1.2 利用形態 JDBCドライバの利用形態について説明します。 1.2.1 JDBCドライバの利用形態 JDBCドライバを使用したアプリケーションには、以下の種類があります。 -1- アプリケーションの種類 説明 アプリケーションサー バ上で運用する場 合 EJB EJBサービスを使用したアプリケー ション Servlet JSP Webサーバ上で実行され、Webブ ラウザをクライアントとして使用する アプリケーション クライアント端末上で 運用する場合 Javaアプリケーション Javaアプリケーションを作成し、直 接使用する形態 EJBアプリケーションを使用する場合は、Interstage Application ServerのEJBサービスを使用してください。 ServletやJSPを使用する場合は、Interstage Application ServerのServletサービスの使用を推奨します。 その他のServletコンテナを使用する場合は、各製品のドキュメントを参照してください。 JDBCドライバの利用形態には、システム規模に応じて以下のようなモデルがあります。 ・ 4階層モデル ・ 3階層モデル ・ 2階層モデル 4階層モデル 大/中規模システムを構築するユーザ向けの4階層モデルについて説明します。 図1.1 4階層モデル 4階層モデルでは、各層における役割分担が明確になります。通常クライアントはWebブラウザになります。Webサー バでは、クライアントに対するビューの提供と、クライアントからの要求をアプリケーションサーバに引渡す役割を担い ます。アプリケーションサーバでは、Webサーバからの要求に応じてデータベースサーバにあるリソースとのやり取り などの固有のビジネスロジックを実行し、その結果をWebサーバに戻します。データベースサーバには、ユーザの資 産であるデータベースが存在します。このモデルでは、JDBCドライバはアプリケーションサーバに存在します。 4階層モデルでは、各層で個別の機能に特化した開発が行いやすく、開発効率および保守性が高くなり再利用性の 高い部品開発も容易になります。 3階層モデル 小/中規模システムを構築するユーザ向けの3階層モデルについて説明します。 -2- 図1.2 3階層モデル(1) “図1.2 3階層モデル(1)”に示したモデルは、4階層モデルからアプリケーションサーバを除いた構成になります。この ため中間層であるWebサーバでビジネスロジックを実装する必要があり、データベースへのアクセスなど比較的単純 な要求を処理するシステムに適用されることが多くなります。クライアントは通常Webブラウザになります。このモデル では、JDBCドライバはWebサーバに存在します。 図1.3 3階層モデル(2) “図1.3 3階層モデル(2)”に示したモデルは、4階層モデルからWebサーバを除いた構成になります。クライアントのア プリケーションは通常Javaアプリケーションとなり、必要に応じて利用者へのビューを実装します。クライアントのJavaア プリケーションでは複雑なビューを提供することができますが、各クライアント端末に対してJavaアプリケーションの配 布が必要となります。このモデルでは、JDBCドライバはアプリケーションサーバに存在します。 2階層モデル 小規模システムを構築するユーザ向けの2階層モデルについて説明します。 -3- 図1.4 2階層モデル 2階層モデルでは、3階層モデルおよび4階層モデルにおけるWebサーバとアプリケーションサーバの機能をクライア ントで提供する必要があります。このため、2階層モデルは、単一の機能のみを処理するようなごく小規模なシステム で使用されます。このモデルでは、JDBCドライバはクライアントに存在します。 1.2.2 データベースへの接続形態 JDBCドライバのデータベースへの接続形態と、JDBCドライバが動作可能なプラットフォームについて、以下に示します。 接続形態 JDBCドライバからデータベースに接続するには、以下の2つの形態があります。 接続形態名 ドライバタイプ 説明 ローカルアク セス ネイティブ・ブリッ ジ(タイプ2) JDBCドライバと接続先データベースが、 同一サーバシステム上にある接続形態 です。Windows(R)、SolarisまたはLinux 上のデータベースに接続する場合に使 用します。 リモートアクセ ス (RDB2_TCP 連携) JDBCドライバと接続先データベースが、 異なるサーバシステム上にある接続形態 です。Windows(R)、Solaris、Linux、また は、グローバルサーバおよび PRIMEFORCE上のデータベースに接続 する場合に使用します。 サポートプラットフォーム JDBCドライバが動作可能なプラットフォームには、以下があります。 動作プラットフォーム 接続可能プラット フォーム 接続形態 ・ Windows ・ Windows ・ ローカルアクセス ・ Solaris ・ Solaris ・ リモートアクセス(RDB2_TCP連携) ・ Linux ・ Linux -4- 動作プラットフォーム 接続可能プラット フォーム ・ グローバル 接続形態 ・ RDB2_TCP連携 サーバおよ び PRIMEFOR CE 1.3 利用可能な機能 JDBCドライバを使用することで、利用可能となる機能について説明します。 1.3.1 Symfoware Serverの機能 CやCOBOLで作成されたアプリケーションと同様に、JDBCドライバを利用したアプリケーションからもSQL文を利用した データ操作、トランザクション操作、ストアドプロシジャの実行などの機能を利用することができます。 JDBCドライバを利用したアプリケーションには以下の特長があります。 ・ アプリケーション開発が容易にできる ・ データ型に対する操作が容易にできる ・ アプリケーションの移植が容易にできる 使用可能なSQL文の詳細については、“付録D 使用可能SQL文一覧”を参照してください。データ型の詳細について は、“2.4 データ型”を参照してください。 1.3.2 J2EEの機能 J2EEの1サービスであるJDBCドライバには、以下の機能があります。 JDBC2.1以前からある機能 標準機能(Core API) - データベースとの接続/切断 - データ操作(データ参照、データ更新、パラメタ指定) - トランザクションの管理(自動/手動トランザクション、コミット/ロールバック、トランザクションモード) - ストアドプロシジャの実行 - データベースのメタデータの取得(データベースの定義情報を取得する機能) - 例外についての情報の取得(アプリケーション実行時に発生したエラーに関する情報を取得する機能) - バッチ更新機能 - カタログ取得関数強化 - オブジェクト型(getObject)サポート - BLOB型(getBLOB)のサポート - 新しいデータ型に関するAPIへの対応(BLOB、CLOB、オブジェクト型) - ResultSetの更新 拡張機能(JDBC 2.0 Optional Package) - JDBCデータソースを使用したデータベースとの接続(接続先データベースに関する情報を、アプリケーションとは 別に管理し、データベースに接続する機能) - コネクションプーリング(データベースへのコネクションをキャッシュする機能) -5- これらの機能を利用する場合、JNDIクラスライブラリおよびJDBC 2.0 Optional Packageが必要です。なお、JDK1.4以 降をご利用の場合は、JDKにJNDIクラスライブラリおよびJDBC 2.0 Optional Packageの機能が同梱されています。 JNDIクラスライブラリおよびJDBC 2.0 Optional Packageの詳細については、JNDIのホームページを参照してくださ い。 JDBC 3.0でサポートされた機能 ・ ResultSetの保持 ・ 新しいデータ型に関するAPIへの対応(BOOLEAN、DATALINK/URL) ・ 同時に複数のResultSetを利用可能 JDBC 4.0でサポートされた機能 ・ ROWID型サポート 1.4 JDKとの組合せ JDBCドライバが動作可能なJDKとの組合せと、JDBC規約との対応について以下に説明します。 JDKとは Javaアプリケーションの開発環境です。 JDBC規約との対応 JDBC2.X対応ドライバを使用することで、JDBC1.X規約およびJDBC2.X規約に対応したアプリケーションを動作させるこ とができます。 JDBC3.X対応ドライバを使用することで、JDBC1.XからJDBC3.X規約に対応したアプリケーションを動作させることがで きます。 JDBC4.X対応ドライバを使用することで、JDBC1.XからJDBC4.X規約に対応したアプリケーションを動作させることがで きます。 基本的にはJDBC4.X対応ドライバを利用することを推奨します。 ただし、連携する開発環境との制約でJDK6が利用できない場合には、JDKのバージョンに合った最新のバージョンのド ライバを利用してください。 また、旧バージョンのSymfoware Serverからのアップデートで、JDBC3.X以降の機能が不要な場合には、JDBC2.X対応 ドライバを利用してください。 APIのサポート状況については、“付録F サポートAPI一覧”を参照してください。 JDKとの組合せ Interstage Application Serverに同梱されているJDKとの組合せを推奨します。 JDBCドライバは3種類用意されており、それぞれ動作可能なJDKとの組合せが異なります。 各JDBCドライバが動作可能なJDKとの組合せを以下に示します。 動作可否 JDKのバージョン JDBC2.X対応ドライバ JDBC3.X対応ドライバ JDBC4.X対応ドライバ JDK1.1x × × × JDK1.2x × × × JDK1.3x ○ × × JDK1.4x ○ ○ × JDK5.0x ○ ○ × -6- 動作可否 JDKのバージョン JDBC2.X対応ドライバ JDK6 ○ JDBC3.X対応ドライバ JDBC4.X対応ドライバ ○ ○ 以下の実行環境の場合には、使用できるJDKのバージョンが限定されます。 ・ JDBCドライバの実行環境が、Solaris 10の場合、以下のバージョンが使用可能です。 Interstage Application Serverに同梱されているJDK: 1.4.2_08以降 ・ IPv6のネットワーク環境で運用する場合は、JDK1.4以降が必要です。 ・ JDBCドライバの実行環境が、RHEL-AS4(IPF)またはRHEL5の場合、以下のバージョンが使用可能です。 RHEL-AS4(IPF) RHEL5(IPF) RHEL5(Intel64) Interstage Applicatio n Serverに 同梱されて いるJDK 1.4.2_05以降 5.0 Update10以 降 5.0 Update 10以降 Sun製JDK 1.4.2_08以降 (注) 対応版なし 5.0 Update2以降 RHEL5(x86) 5.0以降 注) 5.0は対応版がありません。 ・ IPv6のネットワーク環境で運用する場合は、JDK1.4以降が必要です。 ・ JDBCドライバの実行環境がWindows Server(R) 2003 for Itaniumの場合、以下のバージョンが使用可能です。 Interstage Application Serverに同梱されているJDK: 1.4.2、5.0 Update 13以降 Sun製JDK: 1.4.2以降 ・ Windows Server(R) 2008 for ItaniumまたはWindows Server(R) 2008 R2 for Itaniumの場合、以下のバージョンが使 用可能です。 Interstage Application Serverに同梱されているJDK: 5.0 Update 13以降 ・ Windows Server(R) 2003 x64 Editionsの場合、以下のバージョンが使用可能です。 Interstage Application Serverに同梱されているJDK: 1.4.2_16、5.0 Update 13以降 Sun製JDK: 5.0 Update 2以降 ・ Windows Server(R) 2008 for x64またはWindows Server(R) 2008 R2 for x64の場合、以下のバージョンが使用可能 です。 Interstage Application Serverに同梱されているJDK: 5.0 Update 13以降 ・ JDBCドライバの実行環境がWindows Vista(R)またはWindows(R) 7の場合、以下のバージョンが使用可能です。 Interstage Application Serverに同梱されているJDK: 1.4.2_14以降 Sun製JDK: 1.4.2_14以降 ・ IPv6のネットワーク環境で運用する場合は、JDK5.0以降が必要です。 1.5 アプリケーション開発作業の流れ JDBCドライバを利用したアプリケーションを開発する場合の作業の流れを以下に示します。 -7- -8- 第2章 アプリケーションの設計 本章では、JDBCドライバを利用したアプリケーションの設計時に考慮すべき点について説明します。 2.1 コネクション コネクションについて、以下に分類して説明します。 ・ コネクションとは ・ コネクションの接続手段 ・ コネクションの接続 ・ コネクションの切断 コネクションとは コネクションとは、JDBCドライバを使用するアプリケーションがSymfoware Serverにアクセスするために結んだ接続関係 のことです。アプリケーションがデータベースシステムとコネクションをもつことにより、そのデータベースシステムの資源を 操作することができます。 コネクションの接続手段 JDBCドライバを使用するアプリケーションからデータベースに接続するためには、以下の2種類の手段があります。 パッケージ API 概要 javax.sql DataSourceインタフェー ス アプリケーション内でJDBCデータ ソースを使用して、データベースに 接続する方法 java.sql DriverManagerクラス アプリケーション内で、接続先のURL を直接指定する方法 アプリケーションサーバ上で運用する場合、DataSourceインタフェースの利用を推奨します。 本書では、DataSourceインタフェースを利用した場合を主に説明します。 データソースの設定方法については、“5.2 ネーミングサービスとJDBCデータソース登録ツール”を参照してください。 コネクションの接続 JDBCドライバを使用するアプリケーションとデータベースとのコネクションの接続は、DataSourceインタフェースの getConnectionメソッドで行います。また、コネクションを接続することにより、SQL文を実行することができます。 コネクションの切断 JDBCドライバを使用するアプリケーションとSymfoware Serverとのコネクションの切断は、Connectionインタフェースのclose メソッドで行います。コネクションの切断は、DataSourceインタフェースのgetConnectionメソッドで接続したコネクションに対 して実行できます。また、トランザクションは終了した状態で実行します。トランザクション中にコネクションが切断されると、 トランザクションも終了します。 プログラミングの概要 以下に、コネクションのプログラミング概要を示します。 InitialContext ctx = new InitialContext(); (1) DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/ds1"); (2) Connection con = ds.getConnection(); : con.setAutoCommit(false); (3) (4) -9- : con.commit(); con.close(); (5) (6) (1) JNDI環境の指定 (2) JDBCデータソースの取得 (3) データベースへの接続 (4) 自動コミットモードの無効化 (5) トランザクションのコミット (6) データベースへの接続の切断 各項目の詳細な設定方法については、“3.2 データベースへの接続/切断”を参照してください。 2.1.1 コネクションの接続形態 JDBCドライバからデータベースに対してコネクションを接続する場合、以下の接続形態があります。 接続形態 説明 ローカルアクセス JDBCドライバと接続先データベースが、同一サーバシ ステムにある接続形態です。 Windows(R)、SolarisまたはLinux上のデータベースに 接続する際に使用します。 リモートアクセス (RDB2_TCP連携) JDBCドライバと接続先データベースが、異なるサーバ システム上にある接続形態です。 Windows(R)、Solaris、Linux、または、グローバルサー バおよびPRIMEFORCE上のデータベースに接続する 際に使用します。 また、接続先のサーバのOSファイル(/etc/servicesファイルなど)にサービス名とポート番号が定義されている必要がありま す。指定するポート番号は、通信方法によって異なります。 参照 ポート番号の指定方法の詳細については、“セットアップガイド”を参照してください。 2.1.2 コネクションプーリング コネクションプーリングとは、データベースに接続する場合に、要求されるたびにコネクションを作成するのではなく、コネ クションをプール(保持)して再利用する機能です。 このため、コネクションプーリングを使用することにより、同一ユーザのアプリケーションからデータベースへ接続する回数 が軽減し、データベースへのコネクションを確立するアプリケーションの負荷も軽減されます。 コネクションプーリングを使用する場合、以下の2種類の方式から選択できます。 ・ 2.1.2.1 Interstage Application Serverでのコネクションプーリング ・ 2.1.2.2 JDBCドライバでのコネクションプーリング Interstage Application Server 9.0.0以降と連携する場合には、Interstage Application Serverでコネクションプーリングを行 う方式を推奨します。 2.1.2.1 Interstage Application Serverでのコネクションプーリング Interstage Application Serverでコネクションプーリングを行うことにより、Interstage Application Serverが提供している以下 の機能が利用可能となります。 - 10 - ・ IJServerが提供する最大コネクション数、コネクションタイムアウトの指定 ・ 自動再接続機能 ・ コネクションのモニタ情報表示 - コネクションプール情報 物理コネクション数、空きコネクション数、使用中コネクション数 - コネクション獲得待ち情報 コネクション待ち回数、コネクション待ち時間、コネクション待ちスレッド数、コネクション待ちタイムアウト回数 - 物理コネクション確立情報 物理コネクション確立回数、物理コネクション確立時間、アイドルタイムアウトによるクローズ回数、例外発生によ るクローズ回数 また、Interstage Application Serverでコネクションプーリングを行う場合は、以下の手順が不要となります。 ・ 環境構築時 - JDBCドライバのネーミングサービス起動 - JDBCドライバのネーミングサービスにデータソース情報を登録 ・ 運用時 - JDBCドライバのネーミングサービス起動 参照 ・ Interstage Application Serverのコネクションプーリングの詳細については、“Interstage Application Server J2EE ユー ザーズガイド”を参照してください。 ・ Interstage Application ServerによるJDBCデータソース登録の詳細については、“Interstage 管理コンソールヘルプ” または“Interstage Application Server リファレンスマニュアル(コマンド編)”を参照してください。 注意 ・ 最大コネクション数で設定された値以上のコネクション要求が発生した場合、プールにコネクションが返却されるのを 待ちます。 ・ コネクションタイムアウト値を超えてもコネクションが返却されない場合、エラーを返却します。 ・ コネクションタイムアウト値に0を指定した場合、JDBCドライバと同様に即座にエラーを返却します。 2.1.2.2 JDBCドライバでのコネクションプーリング コネクションプーリングについて、以下に分類して説明します。 ・ JDBCドライバの動作 ・ データソースとプロセスの関係 JDBCドライバの動作 JDBCドライバのコネクションプーリング時の動作について、以下に説明します。 コネクション接続 初回接続時は、 コネクションプーリングを使用しない場合と同じように、データベースへ接続します。次回の接続要求 をした場合でも、プールしているコネクションがすべて使用中の場合には、新規にデータベースへ接続します。 - 11 - また、最大コネクション数で設定された値以上のコネクション要求が発生した場合、JDBCドライバがエラーを返却しま す。 コネクションのプール(保持)と再利用 JDBCドライバでは、データソース接続に設定された“最大プールコネクション数”に達するまで、コネクションを保持し ていきます。接続要求をした際、プールしているコネクションの中に未使用のものが存在すると、事前に接続したコネ クションを再利用します。その後、プールしているコネクション数以上に接続要求が重なると、未使用のコネクションが 存在しないため、新たに接続してコネクションの接続本数は増加(最大コネクション数まで)していきます。 コネクションの切断 コネクションプーリング中は、アプリケーションでcloseメソッドを実施しても、データベースとの物理的なコネクションの 切断を行いません。以下の場合に、データベースとの物理的なコネクションを切断します。 - プロセスが終了する場合には、データベースとの物理的なコネクションをすべて切断します。 - 処理途中においても、同時に接続要求が重なり、最大プールコネクション数を超えるコネクションが接続された場 合には、そのクローズ要求で、データベースとの物理的なコネクションを切断します(最大プールコネクション数内 に収まるように調整します)。 データソースとプロセスの関係 複数のプロセスから同一データソースを使用する場合、データソースに登録したコネクション数(最大コネクション数、最 大プールコネクション数)はJavaのプロセスごとに対応します。データソース登録の詳細については、“5.2.3 JDBCデータ ソース登録ツール”を参照してください。 以下の例では、データソースに最大コネクション数を16、最大プールコネクション数を5として登録しています。この時、Java アプリケーション1、Javaアプリケーション2それぞれ16まで接続が可能で、コネクションをそれぞれ5つプーリングします。 2.2 文字コード系の考慮 アプリケーション開発を行う場合に、文字コード系に関して考慮しなければならない点を説明します。 - 12 - 2.2.1 文字コード系の決定 Javaのアプリケーションでは、以下の文字コード系が使用できます。 ・ EUCコード ・ シフトJISコード ・ UNICODE Javaのアプリケーションは、文字データを内部的にUNICODEで扱っており、Javaアプリケーションに対して文字コード系が UNICODEの入出力を行う場合、データベース格納文字コード系にUNICODEを選択することでコード変換処理が軽減 するという利点があります。 拡張漢字および拡張非漢字を流通する場合 Javaのアプリケーションは、文字データを内部的にUNICODE (UCS-2)で扱っており、Javaアプリケーションに対して UNICODE以外の文字コード系の入出力を扱う場合、Javaのコード変換機能(Javaコンバータ)が動作します。このJavaの コード変換機能は、JIS漢字およびJIS非漢字以外の文字コードの変換をサポートしていないので、拡張文字を流通させ る際にはすべてUNICODEで流通させることを推奨します。 UNICODE流通するには、データベースに格納する文字コード系をUNICODEとします。また、データベースに対して RDB2_TCP連携またはローカルで接続してください。 SolarisマシンまたはLinuxマシンでMSベンダー文字を流通する場合 JavaのアプリケーションでMSベンダー文字を流通する場合もUNICODEでの流通を推奨します。ただし、UNICODE流通 しなくても、JDBCドライバおよびJavaのエンコーディング名にMS932を指定することでMSベンダー文字の流通を行うこと ができます。Windows(R)マシンの場合にはデフォルトでMS932が指定されています。 SolarisマシンまたはLinuxマシン上にJDBCドライバがインストールされていて、Windows(R)マシンとの間でデータのやり とりを行う場合には、MS932を指定することでMSベンダー文字をWindows(R)マシンから入出力することができます。た だし、SolarisマシンまたはLinuxマシンでは、MSベンダー文字を標準出力することはできません。また、エンコーディング名に MS932を指定したSolarisマシンとエンコーディング名にSJISを指定または省略したSolarisマシン、またはエンコーディン グ名にMS932を指定したLinuxマシンとエンコーディング名にSJISを指定または省略したLinuxマシンとの間でデータの やりとりをする場合に、一部の文字(“-”や“~”など)が文字化けなどで流通できなくなります。エンコーディング名が混 在しているシステムの場合には注意が必要となります。 なお、ベンダー依存の問題に関する詳細については、“2.2.2 文字コード系に関する留意事項”を参照してください。 UNICODE以外の文字コード系を使用する場合には、Javaアプリケーションのエンコーディング名にMS932を設定してく ださい。 JDBCドライバに対してエンコーディング名にMS932を設定する場合は、以下のように設定してください。 javaconverterオプションを設定する場合: 記述形式 javaconverter=MS932 設定方法 JDBCデータソース登録ツールの「オプション情報設定」画面で「その他パラメタ」の欄にオプションを設定してくだ さい。 クライアント用の動作環境ファイルのJAVA_CONVERTERパラメタを指定する場合: 記述形式 JAVA_CONVERTER=(MS932) 参照 クライアント用の動作環境ファイルのJAVA_CONVERTERパラメタの詳細は、“アプリケーション開発ガイド(共通編)” の“クライアント用の動作環境ファイル”を参照してください。 - 13 - アプリケーション実行環境のロケールがCの場合 アプリケーション実行環境のロケールがCで、ASCIIコード範囲外の文字データを利用する場合、javaconverterオプショ ンまたはクライアント用の動作環境ファイルのJAVA_CONVERTERパラメタで対象データのエンコーディングを指定して ください。javaconverterオプションの詳細は、“5.2.4.3 オプションの設定”を参照してください。 参照 クライアント用の動作環境ファイルのJAVA_CONVERTERパラメタの詳細は、“アプリケーション開発ガイド(共通編)” の“クライアント用の動作環境ファイル”を参照してください。 2.2.2 文字コード系に関する留意事項 Javaで異機種間結合を行う場合、あるいは、データベース接続を行う場合に起こる問題の1つに、文字化けの問題があり ます。たとえば、SolarisマシンからWindows(R)マシンにネットワークを介して全角のチルダ記号('~')を送ると、Windows(R) マシンで表示したときに文字化けしてしまうことがあります。 これは既存の日本語コード(JIS、EUC、シフトJIS)をUNICODEに変換する際の変換規則が各ベンダによって異なるため に起きる問題です。この問題はJavaで解決できるものではなく、Javaのシステム開発者がこの問題を避けるための自衛的 手段を講じる必要があります。 この問題を理解するには、この問題が起きた背景を理解する必要があります。 以下ではその背景を説明します。 UNICODEの特徴 UNICODEはUNICODEコンソーシアムが規定した文字コード体系です。世界の主要な言語のほとんどの文字を収録し、 1つの文字コード体系で多国語処理を可能にしようという目的で策定されたものです。UNICODEは国際標準化機構(ISO) の規格であるISO/IEC 10646のベースになっています。 UNICODEは主要な言語のほとんどの文字を収録しようとした訳ですが、この過程で次のような特徴が生まれました。 似たような文字が多数収録されている UNICODEは、見た目が同じような文字であっても役割や用途が異なる文字は別文字として収録する、という方針で 策定されています。たとえば全角のチルダ記号('~'、JIS X 0208では WAVE DASH(01-33))に似た文字は、以下のように 6種類も収録されています。 表2.1 JIS X 0208 01-33(WAVE DASH、'~')に似たUNICODE文字 コードポイント 登録名 U+301c WAVE DASH U+223c TILDE OPERATOR U+223d REVERSED TILDE U+223e INVERTED LAZY S U+223f SIGN WAVE U+ff5e FULLWIDTH TILDE 全角・半角を別文字として収録している UNICODEでは、既存の文字コード系との互換性を保証するために、全角と半角を別文字として収録しています。た とえば全角の'A'と半角の'A'はUNICODEでは異なる文字として収録されています。 しかし、'£'や'¢'などのように日本語の文字コード系では全角の文字しかないものも、UNICODEでは全角と半角の2 種類の文字が収録されています。 - 14 - 表2.2 JIS X 0208 01-82(POUND SIGN、'£')に対応可能なUNICODE文字 コードポイント 登録名 U+00a3 POUND SIGN U+ffe1 FULLWIDTH POUND SIGN 表2.3 JIS X 0208 01-81(CENT SIGN、'¢')に対応可能なUNICODE文字 コードポイント 登録名 U+00a2 CENT SIGN U+ffe0 FULLWIDTH CENT SIGN コード変換のベンダ依存性 このようにUNICODEには似たような文字が多数収録されているので、既存の日本語文字コード系の文字をUNICODEの どの文字に対応させるべきか、いろいろな解釈が出てきます。ベンダごとの解釈が異なるために、実際に各ベンダの変 換規則に違いが出ています。代表的な例を以下に挙げます。 UNICODEコンソーシアムではJIS漢字とUNICODEの変換規則を提供 JISでもJIS X 0221の付属書でJIS漢字とUNICODEの変換規則を定義しています。この2つで全角のダッシュ記号(JIS X 0201 01-29、'*')の変換規則が異なります。 UNICODEコンソーシアムとJISの変換規則の違い MicrosoftはWindows(R)でのシフトJISとUNICODEの相互変換規則を独自に定義 Windows(R)の変換規則では日本語コードの全角文字はUNICODEの全角文字に対応させるというのが基本方針 で、そのためJISの変換規則と異なる文字がいくつかあります。 表2.4 JISの変換規則とWindows(R)の変換規則の違い JIS X 0208 01-33 WAVE DASH ('~') UNICODEへの変換 JIS:U+301c (WAVE DASH) Windows(R):U+ff5e (FULLWIDTH TILDE) 01-82 POUND SIGN ('£') JIS:U+00a3 (POUND SIGN) Windows(R):U+ffe1 (FULLWIDTH POUND SIGN) 01-81 CENT SIGN ('¢') JIS:U+00a2 (CENT SIGN) Windows(R):U+ffe0 (FULLWIDTH CENT SIGN) - 15 - これらの変換規則は、どれが正しくてどれが間違っているというものではありません。JISで定義されている変換規則はあ くまでも参考であり、強制力を持つものではありません。どの文字をどの文字に対応させるかは、最終的には変換規則を 作成する各ベンダに任せられているのが現状です。 文字化けが起きる仕組み このように各ベンダにより変換規則が異なるために、Javaで異ベンダのシステムを連携させたときに、いくつかの文字が文 字化けすることになります。 例として、JavaでSolarisとWindows(R)をネットワーク接続し、テキストデータをやりとりするシステムを考えてみます。 表2.5 変換表の不整合による文字化けの例(ネットワーク通信時) EUCデータ Solaris シフトJISデータ Windows Java(UNICOD E) '~' → U+301c → 未定義 未定義 ← U+ff5e ← '~' Javaはプラットフォーム固有の文字コード系の文字データを読み込み、それをUNICODEに変換して処理します。データ がネットワーク転送される際にはUNICODE形式で送られ、それが他方のプラットフォーム固有の文字コード系に変換し 直されます。 この例ではSolaris上での文字コード系にEUCコードを用いることにします。Solaris上のEUCコードとUNICODEの相互変 換はJISの変換規則に従ったものです。Javaも基本的にはJISの変換規則に従ってEUCコードとUNICODEの相互変換を 行います。 Windows(R)の方では文字コード系にシフトJISを用いることにします。Windows(R)にはWindows(R)のコード変換規則が あるので、JavaもWindows(R)の変換規則に従ってシフトJISとUNICODEの相互変換を行います。 ここで、SolarisからWindows(R)に全角のチルダ文字('~')を送る場合を考えてみます。 1. JavaはSolaris上でEUCコードの'~'を読み込み、UNICODEに変換します。Solaris上ではJISの変換規則に従った 変換を行うので、'~'はU+301cに変換されます。 2. UNICODEに変換された'~'(U+301c)がWindows(R)にネットワーク転送されます。 3. 送られたUNICODEデータがWindows(R)上でシフトJISに変換しなおされます。このときWindows(R)上では Windows(R)の変換規則に従った変換が行われます。 4. しかし、Windows(R)の変換規則では'~'に対応するUNICODEはU+ff5eです。Solarisから送られてきたUNICODE データ(U+301c)は、Windows(R)の変換規則では対応する文字が定義されていません。このため、Windows(R)の 変換規則でU+301cを変換するとシフトJISでは未定義文字になってしまいます。 この逆も同じことで、Windows(R)上の'~'(U+ff5e)をSolarisに送った場合にも、JISの変換規則ではU+ff5eに対応する文 字が定義されていないため、EUCコードに変換したときには未定義文字になってしまいます。 Solaris上のコード変換もWindows(R)上のコード変換も変換規則に問題はなく、Javaもそれに従って正しい変換を行って います。しかしそれぞれの変換規則が異なるために、2つの規則を組み合わせたときに正しい変換が行われなくなってし まいます。 対処方法 これらの問題は一方の変換規則をもう一方に合わせれば解決するように見えますが、そうすると今度は変換規則を変え た方で別の不整合が起こります。 たとえば始めの例で、Windows(R)側の変換規則をJISの変換規則に変えてしまうと、Solarisから送られてきたUNICODE データは正しく変換できるようになりますが、Windows(R)上に保存されている既存のUNICODEデータが正しく変換でき なくなります。 最も単純かつ確実な対処方法は、文字化けが起きる文字をシステムで使わないようにすることです。文字化けが起きる 文字はごく限られた少数のマルチバイト文字のみです。システム設計時にそれらの文字を使用しないよう注意する必要 があります。 - 16 - あるいは、サーバがSolarisでクライアントがWindows(R)であるといったように使用するプラットフォームやデータベースが 特定できる場合には、データ転送時にフィルタを掛けるという対処法もあります。 たとえば、SolarisからWindows(R)に文字データを送信する際に、データ内に現れるU+301cをすべてU+ff5eに変換して から転送すれば、SolarisからWindows(R)に正しく'~'が送られるようになります。 いずれにせよ、異なるベンダのシステムをつないだシステム開発を行う際には、システム開発者が事前に自衛的手段を 講じて、文字化けの問題が起きるのを防ぐ必要があります。 参考 以下は、Javaで前述の例(SolarisとWindows(R)でのネットワーク通信を行うシステム)を実現した場合に文字化けが起きる 文字の一覧です。 2.3 トランザクション JDBCドライバを利用する場合に、トランザクションについて考慮すべき点を説明します。 - 17 - 2.3.1 トランザクションの概要 JDBCドライバを使用するアプリケーションで、トランザクションの操作をする場合、自動でコミット処理を行う方法と手動で 制御する方法の2種類の方法があります。 また、トランザクションのアクセスモードと独立性水準の変更を行うことができます。 2.3.2 トランザクションの有効範囲 トランザクションの有効範囲について、以下に説明します。 自動コミット機能 JDBCドライバを使用するアプリケーションでのトランザクション操作は、接続に対して行います。トランザクションはSQL文 の操作を行うと開始され、commitまたはrollbackを実行することで終了します。JDBCドライバを使用するアプリケーション では、SQL文の実行ごとに自動的にコミット処理を行う機能があります。これを自動コミットと呼びます。 例 データベースにデータを挿入する以下のようなアプリケーションがあるとします。 アプリケーションでSQL文に関する操作(準備、実行)を行ったタイミングで、トランザクションが開始されます。しかし、 自動コミットが有効になっている場合、それぞれの操作を完了すると共にトランザクションはコミットされ、次の操作へ 継続されません。 自動コミットが有効になっているかどうかはgetAutoCommitメソッドで確認する事ができます。データベースに対してコ ネクションを接続した直後は、自動コミットが有効になっています。 トランザクションを手動で制御する方法 自動コミットが有効になっている場合、SQL文の実行ごとに自動的にコミット処理が行われます。しかし、一般的には複数の SQL文をひとまとめにして1つのトランザクションとして扱うことが多いです。 このような処理を行う場合、setAutoCommitメソッドで自動コミットを無効にします。 setAutoCommitメソッドで自動コミットを無効にした場合、接続に対してcommitメソッドまたはrollbackメソッドを実行して、 明示的にトランザクションを終了させる必要があります。 SQL文の実行が何らかの原因でエラーとなりSQLExceptionが発生した場合にも、トランザクションは継続中となっていま す。SQLSTATEが40xx系以外の場合、rollbackメソッドを実行してトランザクションを終了させてください。 setAutoCommitメソッドはトランザクション中には実行できません。トランザクションの開始前またはトランザクションが終了 している必要があります。 例 データベースの表tbl1にデータを挿入し、かつ別の表tbl2を更新するアプリケーションがあるとします。 - 18 - 自動コミットを無効にしたので、SQL文に関する操作(準備、データ設定、実行)を行っても、トランザクションはコミット されず、次の処理に継続されます。 ResultSetの保持機能 ResultSetの保持機能とは、コミット時にResultSetをクローズしない機能です。トランザクションが終了してもResultSetの操 作を行う場合に使用します。 ResultSetの保持機能は、setHoldabilityメソッドで設定します。 例 以下の例ではコミット時にResultSetをクローズしないため、コミットした後にResultSetに対してカーソル操作を行うこと ができます。 - 19 - ResultSetを使用した場合の注意事項 ResultSetの保持機能を使用しない場合は、トランザクションを終了させたときに同一の接続でオープン中のResultSet(結 果セット)はすべてクローズされます。ResultSetを使用中には結果をすべて取り出すまでトランザクションを終了させない ようにしてください。 自動コミットが有効になっている場合の注意事項 自動コミットが有効になっている場合、順方向カーソルの結果セットの最終行の取り出しが完了すると、コミット処理が行 われます。 同一の接続に対して複数のResultSetを同時に使用している場合、どれか1つでもResultSetの最終行の取り出しが完了 すると、最終行の取り出しが完了されていない他のResultSetはすべてクローズされます。 また、ResultSetを使用中に、executeUpdateメソッドを使用して他の更新系SQL文を実行した場合や、ResultSetの更新機 能を使用して更新した場合、ResultSetはクローズされます。 複数のResultSetを同時に使用する場合、ResultSetを使用中に他の更新系SQL文を実行する場合、ResultSetの更新機 能を使用する場合、およびバッチ更新機能を使用する場合は、自動コミットを無効にしてください。 バッチ更新機能については、“2.6.4 バッチ更新機能について”を参照してください。 2.3.3 トランザクションのアクセスモード アクセスモード トランザクションのアクセスモードは、setReadOnlyメソッドで読込み専用に変更することができます。 現在のトランザクションのアクセスモードが読込み専用かどうかは、isReadOnlyメソッドで確認することができます。新しく 生成された接続に対するトランザクションのアクセスモードは、更新可能となっています。 トランザクションのアクセスモードは、トランザクションの継続中に変更することはできません。必ずトランザクションが終了 している状態で変更してください。 例 トランザクションのアクセスモードを読込み専用に変更する例を以下に示します。 Connection cnct = DataSource.getConnection(); cnct.setAutoCommit(false); cnct.setReadOnly(true); - 20 - : cnct.commit(); default_readonlyオプション default_readonlyオプションを指定することで、データベースコネクト時に、トランザクションのアクセスモードの初期値を変 更することができます。 default_readonlyオプションは、運用時のチューニングパラメタとして使用してください。 default_readonlyオプションの詳細については、“5.2.4.3 オプションの設定”または“B.2 getConnectionメソッドのオプショ ン”を参照してください。 注意 ・ アプリケーション内でsetReadOnlyメソッドを使用してトランザクションアクセスモードが変更された場合、setReadOnly メソッドで指定された値が有効になります。 ・ Connection.closeメソッドを実行後、getConnectionメソッドで再度接続した場合も、トランザクションアクセスモードの値は default_readonlyオプションで指定された値で動作します。 2.3.4 独立性水準 独立性水準 トランザクションの独立性水準は、setTransactionIsolationメソッドで変更することができます。データベースとのコネクショ ンを接続した直後は、独立性水準はSERIALIZABLEとなっています。ただし、行単位の排他を使用している場合、トラ ンザクションの独立性水準にSERIALIZABLEと指定しても、REPEATABLE READとして扱います。 トランザクションの独立性水準は、トランザクションの継続中に変更することはできません。必ずトランザクションが終了し ている状態で変更してください。 例 トランザクションの独立性水準をREAD UNCOMMITTEDに変更する例を以下に示します。 Connection cnct = DataSource.getConnection(); cnct.setAutoCommit(false); cnct.setTransactionIsolation(java.sql.Connection.TRANSACTION_READ_UNCOMMITTED); : cnct.commit(); default_isolationオプション default_isolationオプションを指定することで、データベースコネクト時に、トランザクションの独立性水準の初期値を変更 することができます。 default_isolationオプションは、運用時のチューニングパラメタとして使用してください。 default_ isolationオプションの詳細については、“5.2.4.3 オプションの設定”または“B.2 getConnectionメソッドのオプショ ン”を参照してください。 注意 ・ アプリケーション内でsetTransactionIsolationメソッドを使用して独立性水準が変更された場合、setTransactionIsolation メソッドで指定された値が有効になります。 ・ Connection.closeメソッドを実行後、getConnectionメソッドで再度接続した場合も、独立性水準の値はdefault_ isolation オプションで指定された値で動作します。 - 21 - 占有モード指定 JDBCドライバを利用したアプリケーションから、占有モードを設定することができます。占有モード指定とは、SQL文単位 に読み込んだデータベース資源に対して、占有モードを設定することができる機能です。 参照 占有モード指定の詳細については、“SQLリファレンス”を参照してください。 2.4 データ型 Javaのデータ型について説明します。 2.4.1 データ型の概要 JDBCドライバを利用するアプリケーションからデータベースにアクセスする場合、利用者はSQLのデータ型を意識したア プリケーション作りをする必要があります。 Symfoware ServerのSQLのデータ型に対応するJavaのデータ型を以下の表に示します。 表2.6 Symfoware ServerのSQLのデータ型と対応するJavaのデータ型 分類 真数型 Symfoware Server のSQLのデータ型 short boolean byte java.lang.Object 2.4.2.1 Symfoware Serverの SMALLINT型 INTEGER int java.lang.Object 2.4.2.2 Symfoware Serverの INTEGER型 NUMERIC java.math.BigDecimal long java.lang.Object 2.4.2.3 Symfoware Serverの NUMERIC型お よびDECIMAL 型 float java.lang.Object 2.4.2.4 Symfoware ServerのREAL 型 double java.lang.Object 2.4.2.5 Symfoware Serverの DOUBLE型 DATE java.sql.Date java.lang.Object 2.4.2.7 Symfoware ServerのDATE 型 TIME java.sql.Time java.lang.Object 2.4.2.8 Symfoware ServerのTIME型 TIMESTAMP java.sql.Timestamp java.lang.Object 2.4.2.9 Symfoware REAL FLOAT(p) p=1~23 FLOAT(p) p=24~52 DOUBLE PRECISION 日時型 参照先 SMALLINT DECIMAL 概数型 Javaのデータ型 - 22 - 分類 Symfoware Server のSQLのデータ型 参照先 Javaのデータ型 Serverの TIMESTAMP型 文字列型 CHARACTER VARCHAR String java.sql.Clob java.net.URL java.lang.Object java.io.Reader 2.4.2.10 Symfoware ServerのCHAR 型および VARCHAR型 String java.lang.Object 2.4.2.11 Symfoware ServerのNCHAR 型および NCHAR VARYING型 各国語 NCHAR 文字列型 NCHAR VARYING BLOB型 BLOB byte[] java.sql.Blob java.lang.Object 2.4.2.12 Symfoware ServerのBLOB 型 SQL ROWID型 ROW_ID java.sql.RowId java.lang.Object 2.4.2.13 Symfoware Serverの ROW_ID型 時間隔型 INTERVAL YEAR TO MONTH 未サポート INTERVAL YEAR INTERVAL MONTH INTERVAL DAY TO HOUR INTERVAL DAY TO MINUTE INTERVAL DAY TO SECOND INTERVAL DAY INTERVAL HOUR TO MINUTE INTERVAL HOUR TO SECOND INTERVAL HOUR INTERVAL MINUTE TO SECOND INTERVAL MINUTE INTERVAL SECOND Javaアプリケーションでは、ResultSetMetaDataのgetColumnTypesメソッドでSymfoware ServerのSQLのデータ型を取得し たり、CallableStatementのregisterOutParameterメソッドでSymfoware ServerのSQLのデータ型を指定する場合がありま す。 SQLのデータ型を識別する値はjava.sql.Typesで規定されています。Symfoware ServerのSQLのデータ型に対応する java.sql.Typesの値を以下の表に示します。 表2.7 Symfoware ServerのSQLのデータ型と対応するjava.sql.Types 分類 真数型 Symfoware Server のSQLのデータ java.sql.Typesで規定されるデータ型 型 SMALLINT java.sql.Types.SMALLINT(推奨) java.sql.Types.BIT java.sql.Types.TINYINT java.sql.Types.JAVA_OBJECT - 23 - 分類 Symfoware Server のSQLのデータ java.sql.Typesで規定されるデータ型 型 INTEGER java.sql.Types.INTEGER(推奨) java.sql.Types.JAVA_OBJECT NUMERIC java.sql.Types.NUMERIC(推奨) java.sql.Types.JAVA_OBJECT java.sql.Types.BIGINT java.sql.Types.JAVA_OBJECT 概数型 DECIMAL java.sql.Types.DECIMAL(推奨) java.sql.Types.JAVA_OBJECT java.sql.Types.BIGINT REAL java.sql.Types.REAL(推奨) java.sql.Types.FLOAT java.sql.Types.JAVA_OBJECT FLOAT(p) p=1~23 FLOAT(p) p=24~52 DOUBLE PRECISION 日時型 java.sql.Types.DOUBLE(推奨) java.sql.Types.JAVA_OBJECT DATE java.sql.Types.DATE(推奨) java.sql.Types.JAVA_OBJECT TIME java.sql.Types.TIME(推奨) java.sql.Types.JAVA_OBJECT TIMESTAMP java.sql.Types.TIMESTAMP(推奨) java.sql.Types.JAVA_OBJECT CHARACTER java.sql.Types.CHAR(推奨) java.sql.Types.JAVA_OBJECT java.sql.Types.CLOB java.sql.Types.DATALINK VARCHAR java.sql.Types.VARCHAR(推奨) java.sql.Types.LONGVARCHAR java.sql.Types.JAVA_OBJECT java.sql.Types.CLOB java.sql.Types.DATALINK NCHAR java.sql.Types.CHAR(推奨) java.sql.Types.JAVA_OBJECT NCHAR VARYING java.sql.Types.VARCHAR(推奨) java.sql.Types.LONGVARCHAR java.sql.Types.JAVA_OBJECT BLOB型 BLOB java.sql.Types.BINARY(推奨) java.sql.Types.VARBINARY java.sql.Types.LONGVARBINARY java.sql.Types.JAVA_OBJECT java.sql.Types.BLOB SQL ROWID型 ROW_ID java.sql.Types.ROWID(推奨) java.sql.Types.JAVA_OBJECT 時間隔型 INTERVAL YEAR TO MONTH 未サポート 文字列型 各国語 文字列型 INTERVAL YEAR INTERVAL MONTH INTERVAL DAY TO HOUR INTERVAL DAY TO MINUTE - 24 - 分類 Symfoware Server のSQLのデータ java.sql.Typesで規定されるデータ型 型 INTERVAL DAY TO SECOND INTERVAL DAY INTERVAL HOUR TO MINUTE INTERVAL HOUR TO SECOND INTERVAL HOUR INTERVAL MINUTE TO SECOND INTERVAL MINUTE INTERVAL SECOND 注意 JDBCドライバとしては対応しているデータ型であってもSymfoware Serverが対応していない場合があります。 2.4.2 Symfoware Serverのデータ型 Symfoware Serverのデータ型について説明します。 2.4.2.1 Symfoware ServerのSMALLINT型 Javaのshort型とSymfoware ServerのSMALLINT型は一致し、共に-32768から32767までの16ビットの符号付き整数値を 表します。 Symfoware ServerのSMALLINT型への代入 Symfoware ServerのSMALLINT型へ代入可能なJavaのデータ型は以下のとおりです。 表2.8 Symfoware ServerのSMALLINT型へ代入可能なJavaのデータ型 分類 レベル Javaのデータ型 文字列型 String 可能 真数型 java.math.BigDecimal 可能 boolean 可能 byte 可能 short 推奨 int 可能 long 可能 float 可能 double 可能 java.lang.Object 可能 概数型 Object型 ・ Symfoware ServerのSMALLINT型にデータを格納する場合、Javaのshort型の使用を推奨します。 ・ JavaのString型のデータをSymfoware ServerのSMALLINT型へ代入する場合、格納される文字データは-32768から 32767までのASCIIコードで表現される文字データである必要があります。 ・ Javaの真数型および概数型のデータをSymfoware ServerのSMALLINT型へ代入する場合、格納される数値データ は-32768から32767までの16ビットの符号付き整数値で表現できるデータである必要があります。 - 25 - Symfoware ServerのSMALLINT型からの取り出し Symfoware ServerのSMALLINT型から取り出し可能なJavaのデータ型は以下のとおりです。 表2.9 Symfoware ServerのSMALLINT型から取り出し可能なJavaのデータ型 分類 レベル Javaのデータ型 文字列型 String 可能 真数型 java.math.BigDecimal 可能 boolean 可能 byte 可能 short 推奨 int 可能 long 可能 float 可能 double 可能 java.lang.Object 可能 概数型 Object型 ・ Symfoware ServerのSMALLINT型のデータを取り出す場合、Javaのshort型の使用を推奨します。 ・ Symfoware ServerのSMALLINT型のデータをJavaのString型へ取り出す場合、取り出すデータはASCIIコードで表 現される文字列に置き換わって取り出されます。 ・ Symfoware ServerのSMALLINT型のデータをJavaの真数型および概数型へ取り出す場合、取り出す先のデータ型 で表現できる範囲の数値である必要があります。それ以外のデータを取り出すことはできません。 2.4.2.2 Symfoware ServerのINTEGER型 Javaのint型とSymfoware ServerのINTEGER型は一致し、共に-2147483648から2147483647までの32ビットの符号付き整 数値を表します。 Symfoware ServerのINTEGER型への代入 Symfoware ServerのINTEGER型へ代入可能なJavaのデータ型は以下のとおりです。 表2.10 Symfoware ServerのINTEGER型へ代入可能なJavaのデータ型 分類 レベル Javaのデータ型 文字列型 String 可能 真数型 java.math.BigDecimal 可能 boolean 可能 byte 可能 short 可能 int 推奨 long 可能 float 可能 double 可能 java.lang.Object 可能 概数型 Object型 ・ Symfoware ServerのINTEGER型にデータを格納する場合、Javaのint型の使用を推奨します。 ・ JavaのString型のデータをSymfoware ServerのINTEGER型へ代入する場合、格納される文字データは-2147483648 から2147483647までのASCIIコードで表現される文字データである必要があります。 - 26 - ・ Javaの真数型および概数型のデータをSymfoware ServerのINTEGER型へ代入する場合、格納される数値データ は-2147483648から2147483647までの32ビットの符号付き整数値で表現できるデータである必要があります。 Symfoware ServerのINTEGER型からの取り出し Symfoware ServerのINTEGER型から取り出し可能なJavaのデータ型は以下のとおりです。 表2.11 Symfoware ServerのINTEGER型から取り出し可能なJavaのデータ型 分類 レベル Javaのデータ型 文字列型 String 可能 真数型 java.math.BigDecimal 可能 boolean 可能 byte 可能 short 可能 int 推奨 long 可能 float 可能 double 可能 java.lang.Object 可能 概数型 Object型 ・ Symfoware ServerのINTEGER型のデータを取り出す場合、Javaのint型の使用を推奨します。 ・ Symfoware ServerのINTEGER型のデータをJavaのString型へ取り出す場合、取り出すデータはASCIIコードで表現 される文字列に置き換わって取り出されます。 ・ Symfoware ServerのINTEGER型のデータをJavaの真数型および概数型へ取り出す場合、取り出す先のデータ型で 表現できる範囲の数値である必要があります。それ以外のデータを取り出すことはできません。 2.4.2.3 Symfoware ServerのNUMERIC型およびDECIMAL型 Javaのjava.math.BigDecimal型とSymfoware ServerのNUMERIC型およびDECIMAL型は一致し、共に精度と位取りを 持つ10進数を表します。 Symfoware ServerのNUMERIC型およびDECIMAL型への代入 Symfoware ServerのNUMERIC型およびDECIMAL型へ代入可能なJavaのデータ型は以下のとおりです。 表2.12 Symfoware ServerのNUMERIC型およびDECIMAL型へ代入可能なJavaのデータ型 分類 Javaのデータ型 レベル 文字列型 String 可能 真数型 java.math.BigDecimal 推奨 boolean 可能 byte 可能 short 可能 int 可能 long 可能 float 可能 double 可能 java.lang.Object 可能 概数型 Object型 - 27 - ・ Symfoware ServerのNUMERIC型およびDECIMAL型にデータを格納する場合、Javaのjava.math.BigDecimal型の 使用を推奨します。 ・ JavaのString型のデータをSymfoware ServerのNUMERIC型およびDECIMAL型へ代入する場合、格納される文字 データは数値を表現する文字データである必要があります。 ・ Javaの真数型および概数型のデータをSymfoware ServerのNUMERIC型およびDECIMAL型へ代入する場合、格 納される数値データは固定精度の10進数で表現できるデータである必要があります。 Symfoware ServerのNUMERIC型およびDECIMAL型からの取り出し Symfoware ServerのNUMERIC型およびDECIMAL型から取り出し可能なJavaのデータ型は以下のとおりです。 表2.13 Symfoware ServerのNUMERIC型およびDECIMAL型から取り出し可能なJavaのデータ型 分類 レベル Javaのデータ型 文字列型 String 可能 真数型 java.math.BigDecimal 推奨 boolean 可能 byte 可能 short 可能 int 可能 long 可能 float 可能 double 可能 java.lang.Object 可能 概数型 Object型 ・ Symfoware ServerのNUMERIC型およびDECIMAL型のデータを取り出す場合、Javaのjava.math.BigDecimal型の 使用を推奨します。 ・ Symfoware ServerのNUMERIC型およびDECIMAL型のデータをJavaのString型へ取り出す場合、取り出すデータは ASCIIコードで表現される文字列に置き換わって取り出されます。 ・ Symfoware ServerのNUMERIC型およびDECIMAL型のデータをJavaの真数型および概数型へ取り出す場合、取り 出す先のデータ型で表現できる範囲の数値である必要があります。それ以外のデータを取り出すことはできません。 2.4.2.4 Symfoware ServerのREAL型 Javaのfloat型とSymfoware ServerのREAL型は一致し、共に7桁の仮数部を持つ単精度の浮動小数点数を表します。 Symfoware ServerのREAL型への代入 Symfoware ServerのREAL型へ代入可能なJavaのデータ型は以下のとおりです。 表2.14 Symfoware ServerのREAL型へ代入可能なJavaのデータ型 分類 レベル Javaのデータ型 文字列型 String 可能 真数型 java.math.BigDecimal 可能 boolean 可能 byte 可能 short 可能 int 可能 long 可能 float 推奨 概数型 - 28 - 分類 Object型 レベル Javaのデータ型 double 可能 java.lang.Object 可能 ・ Symfoware ServerのREAL型にデータを格納する場合、Javaのfloat型の使用を推奨します。 ・ JavaのString型のデータをSymfoware ServerのREAL型へ代入する場合、格納される文字データは7桁の仮数部を 持つ単精度のASCIIコードで表現される文字データである必要があります。 ・ Javaの真数型および概数型のデータをSymfoware ServerのREAL型へ代入する場合、格納される数値データは7桁 の仮数部を持つ単精度の浮動小数点数値で表現できるデータである必要があります。 Symfoware ServerのREAL型からの取り出し Symfoware ServerのREAL型から取り出し可能なJavaのデータ型は以下のとおりです。 表2.15 Symfoware ServerのREAL型から取り出し可能なJavaのデータ型 分類 レベル Javaのデータ型 文字列型 String 可能 真数型 java.math.BigDecimal 可能 boolean 可能 byte 可能 short 可能 int 可能 long 可能 float 推奨 double 可能 java.lang.Object 可能 概数型 Object型 ・ Symfoware ServerのREAL型のデータを取り出す場合、Javaのfloat型の使用を推奨します。 ・ Symfoware ServerのREAL型のデータをJavaのString型へ取り出す場合、取り出すデータはASCIIコードで表現され る文字列に置き換わって取り出されます。 ・ Symfoware ServerのREAL型のデータをJavaの真数型および概数型へ取り出す場合、取り出す先のデータ型で表 現できる範囲の数値である必要があります。それ以外のデータを取り出すことはできません。 2.4.2.5 Symfoware ServerのDOUBLE型 Javaのdouble型とSymfoware ServerのDOUBLE型は一致し、共に15桁の仮数部を持つ倍精度の浮動小数点数を表しま す。 Symfoware ServerのDOUBLE型への代入 Symfoware ServerのDOUBLE型へ代入可能なJavaのデータ型は以下のとおりです。 表2.16 Symfoware ServerのDOUBLE型へ代入可能なJavaのデータ型 分類 レベル Javaのデータ型 文字列型 String 可能 真数型 java.math.BigDecimal 可能 boolean 可能 byte 可能 short 可能 - 29 - 分類 概数型 Object型 レベル Javaのデータ型 int 可能 long 可能 float 可能 double 推奨 java.lang.Object 可能 ・ Symfoware ServerのDOUBLE型にデータを格納する場合、Javaのdouble型の使用を推奨します。 ・ JavaのString型のデータをSymfoware ServerのDOUBLE型へ代入する場合、格納される文字データは15桁の仮数 部を持つ倍精度のASCIIコードで表現される文字データである必要があります。 ・ Javaの真数型および概数型のデータをSymfoware ServerのDOUBLE型へ代入する場合、格納される数値データは 15桁の仮数部を持つ倍精度の浮動小数点数値で表現できるデータである必要があります。 Symfoware ServerのDOUBLE型からの取り出し Symfoware ServerのDOUBLE型から取り出し可能なJavaのデータ型は以下のとおりです。 表2.17 Symfoware ServerのDOUBLE型から取り出し可能なJavaのデータ型 分類 レベル Javaのデータ型 文字列型 String 可能 真数型 java.math.BigDecimal 可能 boolean 可能 byte 可能 short 可能 int 可能 long 可能 float 可能 double 推奨 java.lang.Object 可能 概数型 Object型 ・ Symfoware ServerのDOUBLE型のデータを取り出す場合、Javaのdouble型の使用を推奨します。 ・ Symfoware ServerのDOUBLE型のデータをJavaのString型へ取り出す場合、取り出すデータはASCIIコードで表現 される文字列に置き換わって取り出されます。 ・ Symfoware ServerのDOUBLE型のデータをJavaの真数型および概数型へ取り出す場合、取り出す先のデータ型で 表現できる範囲の数値である必要があります。それ以外のデータを取り出す事はできません。 2.4.2.6 Symfoware ServerのFLOAT型 Symfoware ServerのFLOAT型は、定義によって7桁の仮数部を持つ単精度の浮動小数点数であったり15桁の仮数部を 持つ倍精度の浮動小数点数であったりします。 7桁の仮数部を持つ単精度の浮動小数点数であるJavaのfloat型との混同のおそれがあるので、あまりFLOAT型の使用 は推奨しません。 精度に1~23を指定したFLOAT型はREAL型と同義です。“2.4.2.4 Symfoware ServerのREAL型”を参照してください。 精度に24~52を指定したFLOAT型または精度を省略したFLOAT型はDOUBLE型と同義です。“2.4.2.5 Symfoware Server のDOUBLE型”を参照してください。 - 30 - 2.4.2.7 Symfoware ServerのDATE型 JavaのDATE型は年、月、日で構成されます。これに対しSymfoware ServerのDATE型も年、月、日で構成されます。 したがって、JavaのDATE型とSymfoware ServerのDATE型は一致します。 Symfoware ServerのDATE型への代入 Symfoware ServerのDATE型へ代入可能なJavaのデータ型は以下のとおりです。 表2.18 Symfoware ServerのDATE型へ代入可能なJavaのデータ型 分類 レベル Javaのデータ型 文字列型 String 可能 日時型 java.sql.Date 推奨 java.sql.Timestamp 可能 java.lang.Object 可能 Object型 ・ Symfoware ServerのDATE型へデータを代入する場合、java.sql.Date型の使用を推奨します。 ・ JavaのString型のデータをSymfoware ServerのDATE型へ代入する場合、以下の形式で代入してください。 【記述形式】 YYYY-MM-DD 【記述例】 2007-04-21 ・ 各フィールドに代入可能な値の有効値は以下のとおりです。 フィールド 有効値 年 1~9999 月 1~12 日 1~31 ・ Javaのjava.sql.TimestampクラスのデータをSymfoware ServerのDATE型へ代入する場合、時、分、秒、およびナノ秒 フィールドのデータは代入されません。年、月および日のデータが代入されます。 Symfoware ServerのDATE型からの取り出し Symfoware ServerのDATE型から取り出し可能なJavaのデータ型は以下のとおりです。 表2.19 Symfoware ServerのDATE型から取り出し可能なJavaのデータ型 分類 Javaのデータ型 レベル 文字列型 String 可能 日時型 java.sql.Date 推奨 java.sql.Timestamp 可能 java.lang.Object 可能 Object型 ・ Symfoware ServerのDATE型のデータを取り出す場合、java.sql.Date 型の使用を推奨します。 ・ Symfoware ServerのDATE型のデータをJavaのString型へ取り出す場合、以下の形式で取り出されます。 【返却形式】 YYYY-MM-DD 【返却例】 2007-04-21 - 31 - ・ 各フィールドに返却される値は以下のとおりです。 フィールド 有効値 年 1~9999 月 1~12 日 1~31 ・ Symfoware ServerのDATE型のデータをJavaのjava.sql.Timestampクラスへ取り出す場合、時、分、秒、およびナノ秒 フィールドには0が設定されます。 2.4.2.8 Symfoware ServerのTIME型 JavaのTIME型は時、分、秒で構成されます。これに対しSymfoware ServerのTIME型も時、分、秒で構成されます。 したがって、JavaのTIME型とSymfoware ServerのTIME型は一致します。 Symfoware ServerのTIME型への代入 Symfoware ServerのTIME型へ代入可能なJavaのデータ型は以下のとおりです。 表2.20 Symfoware ServerのTIME型へ代入可能なJavaのデータ型 分類 Javaのデータ型 レベル 文字列型 String 可能 日時型 java.sql.Time 推奨 java.sql.Timestamp 可能 java.lang.Object 可能 Object型 ・ Symfoware ServerのTIME型へデータを代入する場合、java.sql.Time 型の使用を推奨します。 ・ JavaのString型のデータをSymfoware ServerのTIME型へ代入する場合、以下の形式で代入してください。 【記述形式】 hh:mm:ss 【記述例】 11:34:56 ・ 各フィールドに代入可能な値の有効値は以下のとおりです。 フィールド 有効値 時 0~23 分 0~59 秒 0~59 ・ Javaのjava.sql.TimestampクラスのデータをSymfoware ServerのTIME型へ代入する場合、年、月、日、およびナノ秒 フィールドのデータは代入されません。時、分および秒フィールドのデータが代入されます。 Symfoware ServerのTIME型からの取り出し Symfoware ServerのTIME型から取り出し可能なJavaのデータ型は以下のとおりです。 表2.21 Symfoware ServerのTIME型から取り出し可能なJavaのデータ型 分類 レベル Javaのデータ型 文字列型 String 可能 日時型 java.sql.Time 推奨 - 32 - 分類 Object型 レベル Javaのデータ型 java.sql.Timestamp 可能 java.lang.Object 可能 ・ Symfoware ServerのTIME型のデータを取り出す場合、java.sql.Time 型の使用を推奨します。 ・ Symfoware ServerのTIME型のデータをJavaのString型へ取り出す場合、以下の形式で取り出されます。 【返却形式】 hh:mm:ss 【返却例】 11:34:56 ・ 各フィールドに返却される値は以下のとおりです。 フィールド 有効値 時 0~23 分 0~59 秒 0~59 ・ Symfoware ServerのTIME型のデータをJavaのjava.sql.Timestampクラスへ取り出す場合、年、月、日フィールドには データ取得時の年、月、日のデータが設定されます。また、ナノ秒フィールドには0が設定されます。 2.4.2.9 Symfoware ServerのTIMESTAMP型 JavaのTIMESTAMP型は年、月、日、時、分、秒、ナノ秒で構成されます。これに対しSymfoware ServerのTIMESTAMP 型は年、月、日、時、分および秒で構成され、ナノ秒のフィールドがありません。 したがって、JavaのTIMESTAMP型とSymfoware ServerのTIMESTAMP型は一致せず、ナノ秒のデータを扱うことができ ません。 Symfoware ServerのTIMESTAMP型への代入 Symfoware ServerのTIMESTAMP型へ代入可能なJavaのデータ型は以下のとおりです。 表2.22 Symfoware ServerのTIMESTAMP型へ代入可能なJavaのデータ型 分類 レベル Javaのデータ型 文字列型 String 可能 日時型 java.sql.Date 可能 java.sql.Time 可能 java.sql.Timestamp 推奨 java.lang.Object 可能 Object型 ・ Javaのjava.sql.TimestampクラスのデータをSymfoware ServerのTIMESTAMP型へ代入する場合、ナノ秒フィールド のデータは代入されません。Symfoware Serverは、この型を使用してデータ操作を行う事を推奨します。 ・ JavaのString型のデータをSymfoware ServerのTIMESTAMP型へ代入する場合、以下の形式で代入してください。 【記述形式】 YYYY-MM-DD hh:mm:ss 【記述例】 2007-04-21 11:34:56 - 33 - ・ 各フィールドに代入可能な値の有効値は以下のとおりです。 フィールド 有効値 年 1~9999 月 1~12 日 1~31 時 0~23 分 0~59 秒 0~59 ・ Javaのjava.sql.DateクラスのデータをSymfoware ServerのTIMESTAMP型へ代入する場合、時、分および秒フィール ドには0が代入されます。 ・ Javaのjava.sql.TimeクラスのデータをSymfoware ServerのTIMESTAMP型へ代入する場合、年、月および日フィー ルドには現在の日付が代入されます。 Symfoware ServerのTIMESTAMP型からの取り出し Symfoware ServerのTIMESTAMP型から取り出し可能なJavaのデータ型は以下のとおりです。 表2.23 Symfoware ServerのTIMESTAMP型から取り出し可能なJavaのデータ型 分類 Javaのデータ型 レベル 文字列型 String 可能 日時型 java.sql.Date 可能 java.sql.Time 可能 java.sql.Timestamp 推奨 java.lang.Object 可能 Object型 ・ Symfoware ServerのTIMESTAMP型のデータをJavaのjava.sql.Timestampクラスへ取り出す場合、ナノ秒フィールド には0が設定されます。Symfoware Serverはこの型を使用してデータ操作を行う事を推奨します。 ・ Symfoware ServerのTIMESTAMP型のデータをJavaのString型へ取り出す場合、以下の形式で取り出されます。 【返却形式】 YYYY-MM-DD hh:mm:ss 【返却例】 2007-04-21 11:34:56 ・ 各フィールドに返却される値は以下のとおりです。 フィールド 有効値 年 1~9999 月 1~12 日 1~31 時 0~23 分 0~59 秒 0~59 ・ Symfoware ServerのTIMESTAMP型のデータをJavaのjava.sql.Dateクラスへ取り出す場合、時、分、秒およびナノ秒 フィールドのデータは切り捨てられます。 - 34 - ・ Symfoware ServerのTIMESTAMP型のデータをJavaのjava.sql.Timeクラスへ取り出す場合、年、月、日フィールドの データは切り捨てられます。 2.4.2.10 Symfoware ServerのCHAR型およびVARCHAR型 JavaのString型は可変長です。Symfoware ServerのCHAR型は固定長で、VARCHAR型は可変長です。JavaのString型 を用いて、Symfoware ServerのCHAR型およびVARCHAR型のデータを扱うことができます。 Symfoware ServerのCHAR型およびVARCHAR型への代入 Symfoware ServerのCHAR型およびVARCHAR型へ代入可能なJavaのデータ型は以下のとおりです。 表2.24 Symfoware ServerのCHAR型およびVARCHAR型へ代入可能なJavaのデータ型 分類 文字列型 真数型 概数型 日時型 Object型 Javaのデータ型 レベル String 推奨 java.sql.Clob 可能 java.net.URL 可能 java.io.Reader 可能 java.math.BigDecimal 可能 boolean 可能 byte 可能 short 可能 int 可能 long 可能 float 可能 double 可能 java.sql.Date 可能 java.sql.Time 可能 java.sql.Timestamp 可能 java.lang.Object 可能 ・ Symfoware ServerのCHAR型は固定長なので、扱うデータがデータベースの定義長よりも短い場合、代入するデー タの後方には空白が付加されて格納されます。VARCHAR型は可変長なので、データの後方に空白は付加され ず、そのまま格納されます。Symfoware ServerのCHAR型またはVARCHAR型へデータを代入する場合、String型 の使用を推奨します。 ・ Javaの真数型および概数型のデータをSymfoware ServerのCHAR型およびVARCHAR型へ代入する場合、数値 データはASCIIコードで表現される文字列に置き換わって格納されます。 ・ setDoubleメソッドを使用してJavaのdouble型のデータをSymfoware ServerのCHAR型およびVARCHAR型へ代入す る場合、またはsetFloatメソッドを使用してJavaのfloat型のデータをSymfoware ServerのCHAR型およびVARCHAR 型へ代入する場合、代入するデータは、小数点以下6桁で四捨五入された値に置き換わって格納されます。 ・ Javaの日時型のデータをSymfoware ServerのCHAR型およびVARCHAR型へ代入する場合、Symfoware Serverの 文字型に次のような形式の文字列に置き換わって格納されます。 【格納形式】 java.sql.Data型 :YYYY-MM-DD java.sql.Time型 :hh:mm:ss java.sql.Timestamp型 :YYYY-MM-DD hh:mm:ss - 35 - 【格納例】 java.sql.Data型 :2007-04-21 java.sql.Time型 :11:34:56 java.sql.Timestamp型 :2007-04-21 11:34:56 Symfoware ServerのCHAR型およびVARCHAR型からの取り出し Symfoware ServerのCHAR型およびVARCHAR型から取り出し可能なJavaのデータ型は以下のとおりです。 表2.25 Symfoware ServerのCHAR型およびVARCHAR型から取り出し可能なJavaのデータ型 分類 文字列型 真数型 概数型 日時型 Object型 Javaのデータ型 レベル String 推奨 java.sql.Clob 可能 java.net.URL 可能 java.io.Reader 可能 java.math.BigDecimal 可能 boolean 可能 byte 可能 short 可能 int 可能 long 可能 float 可能 double 可能 java.sql.Date 可能 java.sql.Time 可能 java.sql.Timestamp 可能 java.lang.Object 可能 ・ Symfoware ServerのCHAR型およびVARCHAR型のデータを取り出す場合、JavaのString型の使用を推奨します。 Symfoware ServerのCHAR型データの後方に空白が付加されている場合には空白を含めたデータがそのまま取り 出されます。 ・ Symfoware ServerのCHAR型およびVARCHAR型のデータをJavaの真数型および概数型へ取り出す場合、取り出 す文字データが数値で表現できるデータである必要があります。また、取り出す先のデータ型で表現できる範囲の数値の ASCIIコードで表現される文字データである必要があります。それ以外の文字データを取り出す事はできません。 ・ Symfoware ServerのCHAR型およびVARCHAR型のデータをJavaの日時型へ取り出す場合、取り出す文字データ が以下の形式である必要があります。それ以外の文字データを取り出す事はできません。 【文字データの形式】 java.sql.Date型 :YYYY-MM-DD java.sql.Time型 :hh:mm:ss java.sql.Timestamp型 :YYYY-MM-DD hh:mm:ss 【文字データ例】 java.sql.Date型 :2007-04-21 java.sql.Time型 :11:34:56 java.sql.Timestamp型 :2007-04-21 11:34:56 - 36 - ・ 日時の各フィールドに代入可能な値の有効値は以下のとおりです。 フィールド 有効値 年 1~9999 月 1~12 日 1~31 時 0~23 分 0~59 秒 0~59 Symfoware ServerのCHAR型およびVARCHAR型を使用する場合の注意事項 CHAR型またはVARCHAR型に対して、ヘキサデータの0x00を取り扱うことはできません。ヘキサデータを扱う場合は、 BLOB型を使用してください。 2.4.2.11 Symfoware ServerのNCHAR型およびNCHAR VARYING型 JavaのString型は可変長です。Symfoware ServerのNCHAR型は固定長で、NCHAR VARYING型は可変長です。Java のString型を用いて、Symfoware ServerのNCHAR型およびNCHAR VARYING型のデータを扱うことができます。 Symfoware ServerのNCHAR型およびNCHAR VARYING型への代入 Symfoware ServerのNCHAR型およびNCHAR VARYING型へ代入可能なJavaのデータ型は以下のとおりです。 表2.26 Symfoware ServerのNCHAR型およびNCHAR VARYING型へ代入可能なJavaのデータ型 分類 Javaのデータ型 レベル 文字列型 String 推奨 Object型 java.lang.Object 可能 ・ Symfoware ServerのNCHAR型は固定長なので、扱うデータがデータベースの定義長よりも短い場合、代入するデー タの後方には空白が付加されて格納されます。NCHAR VARYING型は可変長なので、データの後方に空白は付 加されず、そのまま格納されます。Symfoware ServerのNCHAR型またはNCHAR VARYING型へデータを代入す る場合、String型の使用を推奨します。 Symfoware ServerのNCHAR型およびNCHAR VARYING型からの取り出し Symfoware ServerのNCHAR型およびNCHAR VARYING型から取り出し可能なJavaのデータ型は以下のとおりです。 表2.27 Symfoware ServerのNCHAR型およびNCHAR VARYING型から取り出し可能なJavaのデータ型 分類 レベル Javaのデータ型 文字列型 String 推奨 Object型 java.lang.Object 可能 ・ Symfoware ServerのNCHAR型およびNCHAR VARCHAR型のデータを取り出す場合、JavaのString型の使用を推 奨します。Symfoware ServerのNCHAR型データの後方に空白が付加されている場合には空白を含めたデータがそ のまま取り出されます。 2.4.2.12 Symfoware ServerのBLOB型 Javaのbyte[]型とSymfoware ServerのBLOB型は一致します。 Symfoware ServerのBLOB型への代入 Symfoware ServerのBLOB型へ代入可能なJavaのデータ型は以下のとおりです。 - 37 - 表2.28 Symfoware ServerのBLOB型へ代入可能なJavaのデータ型 分類 Javaのデータ型 レベル 文字列型 String 可能 BLOB型 byte[] 推奨 java.sql.Blob 可能 java.lang.Object 可能 Object型 ・ Symfoware ServerのBLOB型にデータを格納する場合、Javaのbyte[]型の使用を推奨します。 ・ JavaのString型のデータをSymfoware ServerのBLOB型へ代入する場合、格納される文字データは数値で表現でき るデータである必要があります。2文字の文字データが1バイトのデータに置き換わって格納されます。たとえば文字 データ“01”はバイナリの00000001に変換され、文字データ“FF”はバイナリの11111111に変換されます。 Symfoware ServerのBLOB型からの取り出し Symfoware ServerのBLOB型から取り出し可能なJavaのデータ型は以下のとおりです。 表2.29 Symfoware ServerのBLOB型から取り出し可能なJavaのデータ型 分類 レベル Javaのデータ型 文字列型 String 可能 BLOB型 byte[] 推奨 java.sql.Blob 可能 java.lang.Object 可能 Object型 ・ Symfoware ServerのBLOB型のデータを取り出す場合、Javaのbyte[]型の使用を推奨します。 ・ Symfoware ServerのBLOB型のデータをJavaのString型へ取り出す場合、16進表記の文字データに変換されて取り 出されます。 2.4.2.13 Symfoware ServerのROW_ID型 Javaのjava.sql.RowId型とSymfoware ServerのROW_ID型は一致します。 Symfoware ServerのROW_ID型への代入 Symfoware ServerのROW_ID型へ代入可能なJavaのデータ型は以下のとおりです。 表2.30 Symfoware ServerのROW_ID型へ代入可能なJavaのデータ型 分類 レベル Javaのデータ型 SQL ROWID型 java.sql.RowId 推奨 Object型 java.lang.Object 可能 ・ Symfoware ServerのROW_ID型にデータを格納する場合、Javaのjava.sql.RowId型以外の使用はできません。 Symfoware ServerのROW_ID型からの取り出し Symfoware ServerのROW_ID型から取り出し可能なJavaのデータ型は以下のとおりです。 表2.31 Symfoware ServerのROW_ID型から取り出し可能なJavaのデータ型 分類 レベル Javaのデータ型 SQL ROWID型 java.sql.RowId 推奨 Object型 java.lang.Object 可能 ・ Symfoware ServerのROW_ID型のデータを取り出す場合、Javaのjava.sql.RowId型以外の使用はできません。 - 38 - 2.5 データ操作 ここでは、データ操作の方法について説明します。 2.5.1 データ検索について データ検索は以下の流れで行います。 SQL文を実行するためのオブジェクトの生成 SQL文は使用するインタフェースにより指定するメソッドが異なります。以下にインタフェースごとにSQL文を指定するメ ソッドを示します。 Statementインタフェース executeQueryメソッドで指定。 StatementオブジェクトはConnectionイ ンタフェースのcreateStatementメソッド で作成。 PreparedStatementインタフェース prepareStatementメソッドで指定。 PreparedStatementオブジェクトは Connectionインタフェースの prepareStatementメソッドで作成。 StatementインタフェースとPreparedStatementインタフェースはSQL文の使用方法により以下のように使い分けてください。 Statementインタフェース PreparedStatementインタフェース “?”パラメタを使用せずに、同じ形式の SQL文を一度だけ実行する場合に使 用してください。 “?”パラメタを使用する、または、同じ 形式のSQL文を、値を変えて複数回 実行する場合に使用してください。 SQL文の実行 executeQueryメソッドによりSQL文(問合せ式)を実行します。SQL文が正常に実行されるとSQL文の条件を満たす行の ResultSet(結果セット)が作成されます。 参照 指定可能なSQL文については、“SQLリファレンス”の“DECLARE CURSOR(カーソル宣言)”を参照してください。 - 39 - カーソルの位置づけ カーソルは、表の中の1行を特定する仮想的な道具です。カーソルを使用して処理の対象とする行を特定しておいて、 その行からデータを取り出したり、その行を更新したり、または削除したりすることができます。カーソルにより行を特定す ることを、カーソルを位置づけるといいます。 メソッド名 概要 nextメソッド カーソルが位置づけられている行の次の行にカーソ ルを位置づけます。 absoluteメソッド 先頭行から、指定された値の分だけうしろの行にカー ソルを位置づけます。負の値を指定した場合は、そ の値の絶対値分だけ前の行にカーソルを位置づけ ます。 afterLastメソッド カーソルを最終行の直後に位置づけます。 beforeFirstメソッド カーソルを先頭行の直前に位置づけます。 firstメソッド カーソルを先頭行に位置づけます。 lastメソッド カーソルを最終行に位置づけます。 previousメソッド カーソルが位置づけられている行の直前の行に位置 づけます。 relativeメソッド カーソルが位置づけられている行に指定された値を 加算した行にカーソルを位置づけます。 注意 next以外のメソッドを使用する場合、Statement オブジェクトまたはPreparedStatement オブジェクト作成時に、スクロール カーソル指定を行う必要があります。 データの取得 位置づけられた行からgetXXXメソッドを使用してデータを列単位に取得します。 参照 getXXXメソッドの詳細については“Java APIリファレンス”を参照してください。 オブジェクトのクローズ 生成した各クラスのオブジェクトを、closeメソッドを使用してクローズします。 2.5.2 データ更新について データ検索は以下の流れで行います。 - 40 - SQL文を実行するためのオブジェクトの生成 SQL文は使用するインタフェースにより指定するメソッドが異なります。以下にインタフェースごとにSQL文を指定するメ ソッドを示します。 Statementインタフェース executeUpdateメソッドで指定。 StatementオブジェクトはConnectionイ ンタフェースのcreateStatementメソッド で作成。 PreparedStatementインタフェース prepareStatementメソッドで指定。 PreparedStatementオブジェクトは Connectionインタフェースの prepareStatementメソッドで作成。 StatementインタフェースとPreparedStatementインタフェースはSQL文の使用方法により以下のように使い分けてください。 Statementインタフェース PreparedStatementインタフェース “?”パラメタがない、単純なSQL文を実 行する場合に使用してください。 “?”パラメタを使用して、同じ形式の SQL文を、値を変えて複数回実行す る場合に使用してください。 SQL文の実行 executeUpdateメソッドによりSQL文(INSERT文やUPDATE文、DELETE文など)を実行します。 オブジェクトのクローズ 生成したオブジェクトを、closeメソッドを使用してクローズします。 2.5.3 ストアドプロシジャの実行について ストアドプロシジャを実行する場合は以下の流れで行います。 - 41 - ストアドプロシジャとは クライアント側にあるアプリケーションをサーバで実行する形態の場合は、クライアントからサーバにSQL文を送信し、サー バ側の実行結果をクライアント側で受信して処理を行っています。このとき、SQL文単位で送信・受信を繰り返すため、ク ライアント側に通信負荷がかかります。大規模なアプリケーション開発の場合、このようなクライアント側の性能限界を解 消し、開発および保守の生産性を向上させるためにはプロシジャを利用します。プロシジャとは、サーバに登録する処理 手続きのことです。プロシジャをサーバに登録しておいて、クライアント側からプロシジャのルーチンを呼出し、サーバ側 で一連のトランザクション処理を実行します。 ストアドプロシジャの登録 サーバ環境にストアドプロシジャを登録します。ストアドプロシジャはCREATE PROCEDURE文で登録します。 参照 ストアドプロシジャの詳細は、“SQLリファレンス”を参照してください。 SQL文の指定 SQL文はConnectionインタフェースのprepareCallメソッドに指定します。CALL文にサーバ環境に登録したプロシジャ名 を指定します。 SQL文の実行 executeUpdateメソッドによりSQL文(CALL文)を実行します。 2.5.4 NULLの扱いについて すべての列に対してNULLを扱うことができます(表の定義でNOT NULLが指定された列を除きます)。 JDBCドライバを利用したアプリケーションでは、getXXXメソッドでNULLを取得し、setXXXメソッドでNULLを指定するこ とができます。 参照 getXXXメソッドおよびsetXXXメソッドの詳細については“Java APIリファレンス”を参照してください。 getXXXメソッドで取得したデータがNULLかどうかを判断するためには、データ取得後にwasNullメソッドを使用する必要 があります。これはデータの型によりNULLの値がNULL、0、またはfalseに変換されるためです。以下に各getXXXメソッ ドで返されるNULLの値について説明します。 メソッド名 getString 返却値 NULL getBigDecimal getBytes getDate getTime getTimestamp getBinaryStream getBlob getClob getObject getURL - 42 - メソッド名 getByte 返却値 0 getShort getInt getLong getFloat getDouble getBoolean false setXXXメソッドでNULLを指定する場合にはJavaのデータ型により使用するメソッドが異なります。以下に各データ型に 対して指定可能なsetXXXメソッドについて説明します。 Symfoware Serverのデータ 型 CHARACTER VARCHAR NCHAR NCHAR VARYING NUMERIC DECIMAL メソッド名 setString setClob setObject setURL setNull setString setObject setNull setBigDecimal setObject setNull BLOB setBytes setBinaryStream setBlob setObject setNull DATE setDate setObject setNull TIME setTime setObject setNull TIMESTAMP setTimestamp setObject setNull SMALLINT setObject setNull INTEGER FLOAT REAL DOUBLE PRECISION 2.5.5 ResultSetの機能について ResultSetインタフェースを使用することで、JDBC規約に定められている以下のResultSetの機能が利用できます。 ・ ResultSetの同時複数操作 - 43 - ・ ResultSetの更新 参照 ResultSetインタフェースについては“Java APIリファレンス”を参照してください。 2.5.5.1 ResultSetの同時複数操作 getMoreResultsメソッドを使用すると、SELECT文の実行後に返される複数のResultSetを同時に操作することができます。 例 以下の例では複数のResultSetを同時に操作しています。 図2.1 同時に複数結果セットの利用 (1)更新行の確認 (2)TBL1の結果セットを取得 (3)現在の結果セットを閉じずに次のカーソル位置に位置づけ (4)TBL2の結果セットの取得 (5) 2つの結果セットを同時に利用 参照 getMoreResultsメソッドについては“Java APIリファレンス”を参照してください。 2.5.5.2 ResultSetの更新 ResultSet更新機能を使用することで、カーソルで位置づけている行に対してSQL文を利用せずにデータベース操作を 行うことができます。 - 44 - 例 以下の例ではResultSetインタフェースを使用し、データを更新しています。 (1) ResultSetによる更新を可能にする設定を行います。 (2) SQL文を実行して、ResultSetオブジェクトを生成します。 (3) カーソルの位置を最終行まで1行ずつ移動します。 (4) 位置づけている行の“価格”列の値を取得します。 (5) 位置づけている行の“価格”列の値を更新します。 (6) データベースを更新します。 2.6 省資源・高性能アプリケーション作成のために ここでは、省資源・高性能アプリケーションを作成するポイントと、ステートメントキャッシュについて説明します。 2.6.1 オブジェクトのcloseメソッド 以下のインタフェースのオブジェクトを生成した場合には、Java環境だけではなくサーバ側にも資源が作成されます。 ・ Connectionインタフェースのオブジェクト ・ Statementインタフェースのオブジェクト ・ PreparedStatementインタフェースのオブジェクト ・ CallableStatementインタフェースのオブジェクト ・ ResultSetインタフェースのオブジェクト 作成された資源は、不要になった時点でcloseメソッドを実行することにより、即座に回収することができます。しかし、close メソッドを省略し、資源回収をガーベジコレクションに任せている場合、ガーベジコレクションはJava環境の空間を制御し ているだけなので、サーバ側に無駄な資源が残る可能性があり、性能上問題となります。これらのオブジェクトが不要と なった場合は、必ずcloseメソッドを指定し回収を行ってください。 - 45 - 2.6.2 ステートメントキャッシュ ステートメントキャッシュとは 繰り返し実行されるループやメソッドの中でSQL文の準備、実行および解放が行われると、そのつど文の解析と作成およ びカーソルの作成が行われます。 このような場合に、SQL文をキャッシュして再利用することで性能を向上させる機能です。 ステートメントキャッシュを利用すると、次のメリットがあります。 ・ 定型SQL文を繰り返し実行する場合に性能が向上します。 ・ コネクションプーリング機能と組み合わせることで、コネクションが再利用された時に、以前のコネクションでキャッシュ していたSQL文が有効となるため、性能が向上します。 ステートメントキャッシュの仕組み ステートメントキャッシュ機能は、prepareStatementメソッドまたはprepareCallメソッドで実行されたSQL文をキャッシュの対 象にします。 ステートメントキャッシュ機能を有効にすると、以下のような動作となります。 1. prepareStatementメソッドまたはprepareCallメソッドが実行されて、SQL文が作成されたときにキャッシュに登録しま す。 2. PreparedStatementインタフェースまたはCallableStatementインタフェースのcloseメソッドが実行された、またはガー ベジコレクションされたとき、キャッシュに登録されているSQL文を再利用可能な状態にします。 3. 以降、prepareStatementメソッドまたはprepareCallメソッドが実行されるとキャッシュからSQL文を取り出して再利用し ます。 JDBCドライバはSQL文をキーにして同じSQL文かどうかを判断し、キャッシュを再利用します。以下の条件をすべて満足 する場合に、同じSQL文であると判断します。 ・ アプリケーションで指定されたSQL文の文字列が同じであること (SQL文の大文字と小文字は区別されます。たとえば、“SELECT”と“select”は別の文字列として認識されます) ・ StatementオブジェクトやPreparedStatementオブジェクト作成時に指定された、ResultSetのタイプが同じであること ・ StatementオブジェクトやPreparedStatementオブジェクト作成時に指定された、ResultSetの並行処理が同じであること キャッシュへのSQL文の登録は、SQL文を実行した順番に行います。 ステートメントキャッシュに登録することができるSQL文の上限値は、データソースオプション設定画面の「ステートメント キャッシュ数」で設定します。 実行したSQL文の数が、「ステートメントキャッシュ数」に設定した値に達した場合、それ以降実行するSQL文はキャッシュ しません。 データソースオプション設定画面の詳細については、“5.2.3 JDBCデータソース登録ツール”を参照してください。 性能が向上するケース 性能が向上するケースについて、記述例をもとに以下に説明します。 ケース1 PreparedStatement pstmt1 = null; ResultSet rs1 = null; (1) (2) pstmt1 = con.prepareStatement("SELECT ID,NAME FROM GENERAL.EMPLOYEE WHERE ID=?"); pstmt1.setInt(1, iNumber); rs1 = pstmt1.executeQuery(); : rs1.close(); pstmt1.close(); (3) - 46 - (4) (5) (6) (7) 以降、(3)~(7)の処理を繰り返し実行する。 上記のように、繰り返し実行される処理の中で、処理(3)のprepareStatementメソッドを毎回実行している場合、2回目 以降はキャッシュに登録されたSQL文が再利用されるため、SQL文の解析と作成およびカーソルの作成が行われな くなり、性能が向上します。 ケース2 PreparedStatement pstmt1 = null; ResultSet rs1 = null; pstmt1 = con.prepareStatement("SELECT ID,NAME FROM GENERAL.EMPLOYEE WHERE ID=?"); pstmt1.setInt(1, iNumber); rs1 = pstmt1.executeQuery(); : rs1.close(); pstmt1.close(); (1) (2) (3) (4) (5) (6) (7) 以降、(4)~(6)の処理を繰り返し実行する。 上記のように、繰り返し実行される処理の外で、処理(3)のprepareStatementメソッドを一度しか実行しない場合、コネ クションプーリング機能と組み合わせることで、コネクションが再利用されたときに、以前のコネクションでキャッシュしていた SQL文が有効となるため、性能が向上します。 使用メモリ量について ステートメントキャッシュ機能はSQL文をキャッシュするため、通常に比べてメモリ使用量が増加します。 使用するメモリ量については、以下を目安にしてください。 1文当たりのメモリ増加量 = 約100Kbyte 参照 アプリケーション全体のメモリ使用量については、“Interstage Application Server インストールガイド”を参照してください。 自動クローズオプション PreparedStatementインタフェースまたはCallableStatementインタフェースのcloseメソッドが指定されている場合、ステート メントキャッシュ機能は、キャッシュに登録されたSQL文を再利用可能な状態にします。 しかし、closeメソッドを省略してガーベジコレクションにクローズを任せている場合には、キャッシュに登録されたSQL文を 再利用可能な状態にするのが不定期となります。性能を向上するためには、アプリケーションでcloseメソッドを記述する 修正が必要になります。 Symfoware ServerのJDBCドライバでは、アプリケーションを修正せずに自動クローズオプションを指定することで、以下 の条件の場合にcloseメソッドを自動的に実行します。 1. PreparedStatementインタフェースまたはCallableStatementインタフェースのcloseメソッドが実行されていない状態 2. prepareStatementメソッドまたはprepareCallメソッドで同一のSQL文を指定 3. 結果セットのタイプが同じ 4. 結果セットの並行処理の種類が同じ 自動クローズオプションは、データソースオプション設定画面の「ステートメント自動クローズ」で設定することができます。 データソースオプション設定画面の詳細については、“5.2.3 JDBCデータソース登録ツール”を参照してください。 実行したSQL文の数が、「ステートメントキャッシュ数」で設定されたキャッシュ数に達した場合、以降実行されるSQL文は キャッシュしませんが、自動クローズの対象にもなりません。 - 47 - 注意 以下の記述例の処理(5)と(6)のように、prepareStatementメソッドで同一のSQL文を重複して使用している場合は、自動ク ローズオプションを使用しないでください。以下の例で自動クローズオプションを指定すると、処理(6)で処理(5)のSQL文 がクローズされてしまい、処理(7)でエラーが発生します。 PreparedStatement pstmt1 = null; PreparedStatement pstmt2 = null; ResultSet rs1 = null; ResultSet rs2 = null; (1) (2) (3) (4) pstmt1 = con.prepareStatement("SELECT ID,NAME FROM GENERAL.EMPLOYEE WHERE ID=?"); pstmt2 = con.prepareStatement("SELECT ID,NAME FROM GENERAL.EMPLOYEE WHERE ID=?"); (5) pstmt1.setInt(1, iNumber); rs1 = pstmt1.executeQuery(); : pstmt2.setInt(1, iNumber2); rs2 = pstmt2.executeQuery(); : (7) (8) (6) (9) (10) MAX_SQLまたはCLI_MAX_SQLとの関係 MAX_SQLまたはCLI_MAX_SQLを超える数のステートメントキャッシュをすることはできません。MAX_SQLまたは CLI_MAX_SQLを超えた場合には、アプリケーション実行時にエラーとなる場合があります。 MAX_SQLまたはCLI_MAX_SQLには、データソースオプション設定画面の「ステートメントキャッシュ数」で指定した数 よりも大きい値を設定してください。 参照 MAX_SQLについては、“アプリケーション開発ガイド(共通編)”の“クライアント用の動作環境ファイル”を参照してくださ い。 CLI_MAX_SQLについては、“5.2.3.4 ctuneparamオプションについて”を参照してください。 2.6.3 行識別子(SQL ROWID)を利用したデータ操作 ここでは、行識別子の概要と注意事項について説明します。 行識別子(SQL ROWID)とは 行識別子は、データベース中の任意の表の行を一意に識別するためのものです。Symfoware Serverにおける行識別子 は、“ROW_ID”で表します。行識別子は、問合せ指定の選択リストに指定して値を取り出すことができます。取り出した 行識別子は、以下の探索条件に指定して任意の行を操作するために使用します。 ・ UPDATE文:探索の探索条件 ・ DELETE文:探索の探索条件 ・ 問合せ指定のWHERE句の探索条件 行識別子を使用することにより、データベース中の単一行を高速に操作することができます。また、あらかじめ検索した 集合の任意の行を一意に識別して操作することができます。 例 行識別子を使用して行の更新を行います。 - 48 - 行識別子使用時の注意 行識別子を使用する場合の注意事項を、以下に示します。 ・ 行識別子を使用する場合には、JDK6とJDBC4.Xドライバの組合せが必要になります。 ・ 問合せ指定で取り出した行識別子を、SQLデータ操作文のWHERE句の探索条件に指定する場合、SQLデータ操 作文は、行識別子を取り出した問合せ指定と同じ表を操作する必要があります。取り出した行識別子を、異なる表を 操作するデータ操作の探索条件に指定すると、検索データは見つかりません。 ・ 取り出した行識別子は、そのトランザクション内で再検索または更新に使用することができます。ただし、トランザクショ ンの独立性水準により同一トランザクション内においても、同じデータを検索、もしくは、異なる行を更新してしまうこと があります。 独立性水準 同一行の操作 SERIALIZABLE 同一行の操作を保証します。 REPEATABLE READ 同一行の操作を保証します。 READ COMMITTED 以下のいずれかの条件で取得した行識別子は、再検 索で異なる行を識別することがあります。 ・トランザクションアクセスモードがREAD ONLY ・カーソルの更新可能性句がREAD ONLY READ UNCOMMITTED 再検索で異なる行を識別することがあります。 ・ 取り出した行識別子を、他のトランザクションで再検索または更新に利用すると、同じデータを検索、または、異なる 行を更新することがあります。このような場合は、行識別子を取り出したときに行のデータも同時に取り出しておき、行 識別子を利用して更新する前に、行識別子で再検索して行のデータが他のトランザクションにより変更されていない かどうかを調べる必要があります。 事象 検索データなし 前回の検索結果 と値が異なる 原因 該当行が、他のトランザクションにより削除または更新されています。 ・ 他のトランザクションにより行が更新されています。 ・ 他のトランザクションにより行が削除されたあと、別の行が挿入されています。 参照 行識別子を指定可能な箇所についての詳細は、“SQLリファレンス”を参照してください。 - 49 - 注意 プロシジャルーチン内の処理には、行識別子は使用できません。 2.6.4 バッチ更新機能について バッチ更新機能とは、データ更新を行うSQL文(INSERT文、UPDATE文、DELETE文)を一度に複数データベースに送 り、処理させることができる機能です。PreparedStatementインタフェース使用時、複数のSQL文をまとめて送ることで、通 信量も待ち時間も少なくてすむため、パフォーマンスが向上します。 バッチ更新機能を使わない場合の更新処理 SQL文を1つ実行するたびにSQL文の送信と結果の受信が行われます。 バッチ更新機能を使う場合の更新処理 複数のSQL文を一度に送信して、まとめて結果を受信するため通信回数が少なくなります。 2.7 デッドロックについて デッドロック検出時のアプリケーションでの振る舞いについて以下に説明します。 デッドロックはSymfoware Serverが自動的に検出します。Symfoware Serverがデッドロックを検出すると、複数のトランザ クションのうち、1つのトランザクションを取り消して、アプリケーションにエラー復帰します。このとき、SQLSTATEには40001 が設定されます。 デッドロックの発生を通知されたアプリケーションでは、一般にデッドロックが発生したトランザクションの再実行を試みま す。トランザクションを再実行するには、トランザクションを開始した直前に制御を移します。 2.8 国際化に対応したアプリケーションについて ここでは国際化に対応するアプリケーション利用時に便利な機能を説明します。 - 50 - タイムゾーン機能 日時値データを、指定したタイムゾーンの日時値に変更して、格納、および取得することができます。 本機能を使用することで、異なるタイムゾーンの時刻を取得することができ、複数のタイムゾーンにまたがるデータベース システムを利用する場合、タイムゾーンを統一して容易にデータベースに格納できます。 参照 日時値の詳細については“SQLリファレンス”を参照してください。 Unicode文字のストリーム機能 以下のメソッドを利用することで、データベースの文字列データをUnicode文字ストリームとして取得、挿入、更新ができま す。 ・ ResultSetインタフェース - getCharacterStreamメソッド - updateCharacterStreamメソッド ・ PreparedStatementインタフェース - setCharacterStreamメソッド ・ CallableStatementインタフェース - getCharacterStreamメソッド - setCharacterStreamメソッド ・ Clobインタフェース - getCharacterStreamメソッド - setCharacterStreamメソッド 参照 詳細は“Java APIリファレンス”を参照してください。 - 51 - 第3章 アプリケーションの作成 本章では、アプリケーションの作成方法について記述例を用いて説明します。 3.1 コーディング方法 JDBCドライバを利用したアプリケーションのコーディング方法について説明します。 Interstage Studioを利用したコーディング ビジネスアプリケーションを効率的に開発するための統合開発環境であるInterstage Studioを使用することにより、一連の 開発作業を統合された使いやすいビュー操作によって操作することが可能です。 また、Interstage Studioでは、さまざまなアプリケーションの開発支援機能を提供しているため、アプリケーション開発の生 産性を向上させることが可能です。 Interstage Studioでは、以下のアプリケーションが開発できます。 連携形態 EJBアプリ連携 アプリケーション種別 Session Bean(STATEFUL) Session Bean(STATELESS) 作成方法 Interstage Studioが出力する ひな型のソースファイルに ユーザロジックを追加。 Entity Bean(BMP) Entity Bean(CMP) Webアプリ連携 JSP Servlet Javaアプリ連携 Javaアプリケーション Interstage Studioによるアプリケーション開発作業時に異常が発生した場合には、Interstage Studioのドキュメントを参照し て対処を行ってください。 参照 Interstage Studioの詳細については、“Interstage Studio 解説書”および“Interstage Studio ユーザーズガイド”を参照して ください。 エディタによるコーディング エディタなどを利用してソースファイルにJava言語で直接コーディングを行う方法です。 3.2 データベースへの接続/切断 操作手順 データベースと接続/切断をする場合、以下の手順で行います。 - 52 - ここでは、DataSourceインタフェースを利用した場合について説明しています。 記述例 データベースと接続/切断をする場合の記述例を以下に説明します。 InitialContext ctx = new InitialContext(); (1) DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/ds1"); (2) Connection con = ds.getConnection(); (3) con.setAutoCommit(false); : con.commit(); : con.close(); (4) (5) (6) (1) JNDI環境の指定 (2) JDBCデータソースの取得 (3) データベースとの接続 (4) 自動コミットモードの無効化 (5) トランザクションのコミット (6) データベースとの接続の切断 以下に各項目の設定方法を示します。 JNDI環境の指定 JNDI APIを使用して下記の形式で指定します。 【記述形式】 InitialContext ctx = new InitialContext(); JDBCデータソースの取得 JNDIのコンテキストを使用して、JDBCデータソースを取得します。 【記述形式】 DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/<datasource_name>"); - 53 - 【引数】 <datasource_name> JDBCデータソース登録時に指定した、JDBCデータソース名を指定します。省略することはできません。 データベースとの接続 データベースと接続します。 自動コミットモードの無効化 自動コミットモードを無効化します。 ConnectionインタフェースのsetAutoCommitメソッドを使用します。 トランザクションのコミット トランザクションをコミットします。 Connectionインタフェースのcommitメソッドを使用します。 データベースとの接続の切断 データ参照更新などの処理の終了後、データベースとの接続を切断する必要があります。 ネーミングサービスの運用方法については、“5.2.1 ネーミングサービスの起動”を参照してください。 注意 データベースとの接続処理で、アプリケーション実行環境のロケールを認識する前に異常終了すると、英語のエラー メッセージが返却されます。 3.3 データ参照 操作手順 データベースのデータを参照する場合、以下の手順で行います。 - 54 - この例では、スキーマ名“GENERAL”、表“EMPLOYEE”の情報を参照します。 記述例 データベースのデータを参照する場合の記述例を以下に説明します。 Statement stmt = con.createStatement(); (1) ResultSet rs = stmt.executeQuery( "SELECT ID,NAME FROM GENERAL.EMPLOYEE"); (2) int iID = 0; String sName = null; (2) (2) while(rs.next()) { (3) (3) iID = rs.getInt(1); sName = rs.getString(2); (4) (4) System.out.println("ID = " + iID); System.out.println("NAME = " + sName); (4) (4) } rs.close(); stmt.close(); (4) (5) (5) con.commit(); (6) (1) SQL文を実行するためのオブジェクトの生成 (2) ResultSetオブジェクトの生成 (3) カーソルの位置づけ (4) ResultSetオブジェクトからのデータ取得 (5) オブジェクトのクローズ (6) トランザクションのコミット 以下に各項目の設定方法を示します。 SQL文を実行するためのオブジェクトの生成 ConnectionインタフェースのcreateStatementメソッドを使用し、Statementインタフェースのオブジェクトを生成します。 ResultSetオブジェクトの生成 StatementインタフェースのexecuteQueryメソッドを使用し、ResultSetオブジェクトを生成します。 カーソルの位置づけ ResultSetインタフェースのnextメソッドを使用し、カーソルの位置づけを現在の位置から1行下に移動します。 - 55 - ResultSetオブジェクトからのデータ取得 ResultSetインタフェースのgetXXXメソッドを使用し、ResultSetオブジェクトからデータを取得します。 参照 getXXXメソッドの詳細については“Java APIリファレンス”を参照してください。 オブジェクトのクローズ 生成した各オブジェクトをクローズします。 ResultSetインタフェースのcloseメソッドと、Statementインタフェースのcloseメソッドを使用します。 トランザクションのコミット トランザクションをコミットします。 Connectionインタフェースのcommitメソッドを使用します。 3.4 データ更新 操作手順 データベースのデータを更新する場合、以下の手順で行います。 この例では、スキーマ名“GENERAL”、表“EMPLOYEE”の情報を更新します。 記述例 データベースのデータを更新する場合の記述例を以下に説明します。 Statement stmt = con.createStatement(); (1) stmt.executeUpdate("UPDATE GENERAL.EMPLOYEE SET NAME= - 56 - 'gorilla' WHERE ID=1"); (2) stmt.close(); (3) con.commit(); (4) (1) SQL文を実行するためのオブジェクトの生成 (2) SQL文の実行 (3) オブジェクトのクローズ (4) トランザクションのコミット 以下に各項目の設定方法を示します。 SQL文を実行するためのオブジェクトの生成 ConnectionインタフェースのcreateStatementメソッドを使用し、Statementインタフェースのオブジェクトを生成します。 SQL文の実行 StatementインタフェースのexecuteUpdateメソッドを使用し、SQL文を実行します。 オブジェクトのクローズ Statementインタフェースのオブジェクトをクローズします。 Statementインタフェースのcloseメソッドを使用します。 トランザクションのコミット トランザクションをコミットします。 Connectionインタフェースのcommitメソッドを使用します。 3.5 パラメタ指定でのデータ参照 操作手順 データベースのデータをパラメタ指定で参照する場合、以下の手順で行います。 - 57 - この例では、スキーマ名“GENERAL”、表“EMPLOYEE”の情報を参照します。 記述例 データベースのデータをパラメタ指定で参照する場合の記述例を以下に説明します。 PreparedStatement pstmt = con.prepareStatement( "SELECT ID,NAME FROM GENERAL.EMPLOYEE WHERE ID=?"); (1) pstmt.setInt(1, 1); (2) ResultSet rs = pstmt.executeQuery(); (3) int iID = 0; String sName = null; (3) (3) while (rs.next()) { (4) (4) - 58 - iID = rs.getInt(1); sName = rs.getString(2); (5) (5) System.out.println("ID = " + iID); System.out.println("NAME = " + sName); (5) (5) } (5) rs.close(); pstmt.close(); (6) (6) con.commit(); (7) (1) SQL文の準備 (2) パラメタへの値の設定 (3) ResultSetオブジェクトの生成 (4) カーソルの位置づけ (5) ResultSetオブジェクトからのデータ取得 (6) オブジェクトのクローズ (7) トランザクションのコミット 以下に各項目の設定方法を示します。 SQL文の準備 ConnectionインタフェースのprepareStatementメソッドを使用し、SQL文を準備します。パラメタは、“?”で指定します。 パラメタへの値の設定 PreparedStatementインタフェースのsetXXXメソッドを使用し、パラメタに値を設定します。 参照 setXXXメソッドの詳細については“Java APIリファレンス”を参照してください。 ResultSetオブジェクトの生成 PreparaedStatementインタフェースのexecuteQueryメソッドを使用し、ResultSetオブジェクトを生成します。 カーソルの位置づけ ResultSetインタフェースのnextメソッドを使用し、カーソルの位置づけを現在の位置から1行下に移動します。 ResultSetオブジェクトからのデータ取得 ResultSetインタフェースのgetXXXメソッドを使用し、ResultSetオブジェクトからデータを取得します。 参照 getXXXメソッドの詳細については“Java APIリファレンス”を参照してください。 オブジェクトのクローズ 生成した各クラスのオブジェクトをクローズします。 ResultSetインタフェースのcloseメソッドと、PreparedStatementインタフェースのcloseメソッドを使用します。 トランザクションのコミット トランザクションをコミットします。 - 59 - Connectionインタフェースのcommitメソッドを使用します。 3.6 パラメタ指定でのデータ更新 操作手順 データベースのデータをパラメタ指定で更新する場合、以下の手順で行います。 データベースのデータをパラメタ指定で更新する場合の記述例を以下に説明します。 記述例 データベースのデータをパラメタ指定で更新する場合の記述例を以下に説明します。 PreparedStatement pstmt = con.prepareStatement( "INSERT INTO GENERAL.EMPLOYEE( ID,NAME) VALUES(?,?)"); (1) pstmt.setInt(1,4); pstmt.setString(2,"monkey"); (2) (2) pstmt.executeUpdate(); (3) pstmt.close(); (4) con.commit(); (5) - 60 - (1) SQL文の準備 (2) パラメタへの値の設定 (3) SQL文の実行 (4) オブジェクトのクローズ (5) トランザクションのコミット 以下に各項目の設定方法を示します。 SQL文の準備 ConnectionインタフェースのprepareStatementメソッドを使用し、SQL文を準備します。パラメタは、“?”で指定します。 パラメタへの値の設定 PreparedStatementインタフェースのsetXXXメソッドを使用し、パラメタに値を設定します。 参照 setXXXメソッドの詳細については“Java APIリファレンス”を参照してください。 SQL文の実行 PreparedStatementインタフェースのexecuteUpdateメソッドを使用し、SQL文を実行します。 オブジェクトのクローズ PreparedStatementインタフェースのcloseメソッドを使用して、オブジェクトをクローズします。 トランザクションのコミット トランザクションをコミットします。 Connectionインタフェースのcommitメソッドを使用します。 3.7 BLOBデータの参照 操作手順 データベースのBLOBデータを参照する場合、以下の手順で行います。 - 61 - 記述例 データベースのBLOBデータを参照する場合の記述例を以下に説明します。 Statement stmt = con.createStatement(); (1) ResultSet rs = stmt.executeQuery( "SELECT COL_BLOB FROM BLOBTBL WHERE COL_INT = 1"); (2) while (rs.next()) { (3) InputStream oIS = rs.getBinaryStream(1); (4) FileOutputStream fs = new FileOutputStream("ファイル名などを指定"); (4) byte[] bTmp = new byte[oIS.available()]; oIS.read(bTmp); fs.write(bTmp); (5) (5) (5) int iBData=0; while ((iBData=oIS.read()) != -1) { fs.write(iBData); } (6) (6) oIS.close(); fs.close(); (7) (7) (6) } - 62 - rs.close(); stmt.close(); (8) (8) con.commit(); (9) (1) SQL文を実行するためのオブジェクトの生成 (2) ResultSetオブジェクトの生成 (3) カーソルの位置づけ (4) ResultSetオブジェクトからのデータ取得 (5) ストリームからのデータ読込み(byte配列) (6) ストリームからのデータ読込み(1バイト) (7) ストリームオブジェクトのクローズ (8) オブジェクトのクローズ (9) トランザクションのコミット 注意 (5)と(6)の処理は、データのサイズ、件数または実行環境に合わせて、以下の要領で、どちらかを実行してください。 ・ ストリームからデータを一括で取り出す場合、(5)の処理を実行する ・ ストリームからデータを1バイトずつ取り出す場合、(6)の処理を実行する ・ 参照先のBLOBデータのサイズが32キロバイト以上の場合、同じBLOB列に対して複数回getXXX()を実行すること はできません。同じBLOB列のデータを再取得したい場合、absolute()などを使用して、ResultSetの現在行を移動し てください。 以下に各項目の設定方法を示します。 SQL文を実行するためのオブジェクトの生成 ConnectionインタフェースのcreateStatementメソッドを使用し、Statementインタフェースのオブジェクトを生成します。 ResultSetオブジェクトの生成 StatementインタフェースのexecuteQueryメソッドを使用し、ResultSetオブジェクトを生成します。 カーソルの位置づけ ResultSetインタフェースのnextメソッドを使用し、カーソルの位置づけを現在の位置から1行下に移動します。 ResultSetオブジェクトからのデータ取得 ResultSetインタフェースのgetBinaryStreamメソッドを使用し、ResultSetオブジェクトからBLOB型のデータをストリーム として取得します。 ストリームからのデータ読込み(byte配列) InputStreamクラスのreadメソッドを使用して、ストリームからデータをbyte配列で一括に読み込みます。 ストリームからのデータ読込み(1バイト) InputStreamクラスのreadメソッドを使用して、ストリームからデータを1バイトずつ-1(データなし)が返却されるまで読み 込みます。 ストリームオブジェクトのクローズ InputStreamクラスのcloseメソッドとFileOutputStreamクラスのcloseメソッドを使用して、オブジェクトをクローズします。 オブジェクトのクローズ 生成した各クラスのオブジェクトをクローズします。 - 63 - ResultSetインタフェースのcloseメソッドと、Statementインタフェースのcloseメソッドを使用します。 トランザクションのコミット トランザクションをコミットします。 Connectionインタフェースのcommitメソッドを使用します。 3.8 BLOBデータの更新 操作手順 データベースのBLOBデータを更新する場合、以下の手順で行います。 記述例 データベースのBLOBデータを更新する場合の記述例を以下に説明します。 PreparedStatement pstmt = con.prepareStatement( "INSERT INTO BLOBTBL VALUES(1, ?)"); (1) FileInputStream oFIS = new FileInputStream("ファイル名などを指定"); pstmt.setBinaryStream(1, oFIS, oFIS.available()); (1) (2) pstmt.executeUpdate(); oFIS.close(); (3) (3) pstmt.close(); (4) con.commit(); (5) (1) SQL文の準備 (2) パラメタへの値の設定 (3) SQL文の実行 (4) オブジェクトのクローズ (5) トランザクションのコミット 以下に各項目の設定方法を示します。 - 64 - SQL文の準備 ConnectionインタフェースのprepareStatementメソッドを使用し、SQL文を準備します。パラメタは、“?”で指定します。 パラメタへの値の設定 PreparedStatementインタフェースのsetBinaryStreamメソッドを使用し、パラメタに値をストリームで設定します。 SQL文の実行 PreparedStatementインタフェースのexecuteUpdateメソッドを使用し、SQL文を実行します。 オブジェクトのクローズ PreparedStatementインタフェースのcloseメソッドを使用し、オブジェクトをクローズします。 トランザクションのコミット トランザクションをコミットします。 Connectionインタフェースのcommitメソッドを使用します。 3.9 スクロールカーソルの実行 操作手順 スクロールカーソルを使用してデータを参照する場合、以下の手順で行います。 記述例 スクロールカーソルを使用してデータを参照する場合の記述例を以下に説明します。 Statement stmt = con.createStatement( java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE, java.sql.ResultSet.CONCUR_READ_ONLY); (1) ResultSet rs = stmt.executeQuery( "SELECT ID,NAME FROM GENERAL.EMPLOYEE"); - 65 - (2) int iID = 0; String sName = null; int iCursor = 0; (2) (2) (2) if(rs.absolute(3)) { (3) (3) iID = rs.getInt(1); sName = rs.getString(2); (4) (4) System.out.println("ID = " + iID); System.out.println("NAME = " + sName); (4) (4) iCursor = rs.getRow(); System.out.println("カーソル位置 = " + iCursor); } (5) (5) (5) rs.close(); stmt.close(); (6) (6) con.commit(); (7) (1) SQL文を実行するためのオブジェクトの生成 (2) ResultSetオブジェクトの生成 (3) カーソルの位置づけ (4) ResultSetオブジェクトからのデータ取得 (5) カーソルの現在行の取得 (6) オブジェクトのクローズ (7) トランザクションのコミット 以下に各項目の設定方法を示します。 SQL文を実行するためのオブジェクトの生成 スクロール可能なResultSetオブジェクトを生成するよう指定し、Statementオブジェクトを生成する。 ResultSetオブジェクトの生成 StatementインタフェースのexecuteQueryメソッドを使用し、ResultSetオブジェクトを生成します。 カーソルの位置づけ ResultSetインタフェースのabsoluteメソッドを使用し、カーソルの位置づけを先頭から3行目に移動します。 ResultSetオブジェクトからのデータ取得 ResultSetインタフェースのgetXXXメソッドを使用し、ResultSetオブジェクトからデータを取得します。 参照 getXXXメソッドの詳細については“Java APIリファレンス”を参照してください。 カーソルの現在行の取得 ResultSetインタフェースのgetRowメソッドを使用し、カーソルの現在行を取得します。 オブジェクトのクローズ 生成した各クラスのオブジェクトをクローズします。 ResultSetインタフェースのcloseメソッドと、Statementインタフェースのcloseメソッドを使用します。 - 66 - トランザクションのコミット トランザクションをコミットします。 Connectionインタフェースのcommitメソッドを使用します。 3.10 行識別子(SQL ROWID)データの取得 操作手順 行識別子を取得する場合、以下の手順で行います。 この例では、スキーマ名“GENERAL”、表“EMPLOYEE”の情報を参照します。 備考) 行識別子は、24バイトで表されるByte配列データで構成されています。 記述例 データベースの行識別子を取得する場合の記述例を以下に説明します。 Statement stmt = con.createStatement(); (1) ResultSet rs = stmt.executeQuery("SELECT ROW_ID,ID,NAME FROM GENERAL.EMPLOYEE"); (2) RowId rowid = null; ArrayList arraylist = new ArrayList(); while(rs.next()) { rowid = rs.getRowId(1); arraylist.add(rowid); (2) (3) (4) - 67 - } rs.close(); stmt.close(); con.commit(); (5) (5) (6) (1) SQL文を実行するためのオブジェクトの生成 (2) ResultSetオブジェクトの生成 (3) カーソルの位置づけ (4) ResultSetオブジェクトからのデータ取得 (5) オブジェクトのクローズ (6) トランザクションのコミット 以下に各項目の設定方法を示します。 SQL文を実行するためのオブジェクトの生成 ConnectionインタフェースのcreateStatementメソッドを使用し、Statementインタフェースのオブジェクトを生成します。 ResultSetオブジェクトの生成 問合せ式の選択リストに行識別子を指定します。 StatementインタフェースのexecuteQueryメソッドを使用し、ResultSetオブジェクトを生成します。 カーソルの位置づけ ResultSetインタフェースのnextメソッドを使用し、カーソルの位置づけを現在の位置から1行下に移動します。 ResultSetオブジェクトからのデータ取得 ResultSetインタフェースのgetRowIdメソッドを使用し、ResultSetオブジェクトからデータを取得します。 参照 getRowIdメソッドの詳細については“Java APIリファレンス”を参照してください。 オブジェクトのクローズ 生成した各オブジェクトをクローズします。 ResultSetインタフェースのcloseメソッドと、Statementインタフェースのcloseメソッドを使用します。 トランザクションのコミット トランザクションをコミットします。 Connectionインタフェースのcommitメソッドを使用します。 3.11 行識別子(SQL ROWID)データを利用したデータ操作 操作手順 行識別子データを利用してデータの操作をする場合、以下の手順で行います。 - 68 - この例では、スキーマ名“GENERAL”、表“EMPLOYEE”の情報を更新します。 備考) 行識別子は、24バイトで表されるByte配列データで構成されています。 記述例 行識別子データを利用してデータの更新をする記述例を以下に説明します。 Statement stmt = con.createStatement(); (1) ResultSet rs = stmt.executeQuery ("SELECT ROW_ID FROM GENERAL.EMPLOYEE WHERE NAME=lion"); (2) RowId rowid = null; (2) while(rs.next()) (3) { rowid = rs.getRowId(1); (4) } PreparedStatement pstmt = con.prepareStatement ("UPDATE GENERAL.EMPLOYEE SET NAME=? WHERE ROW_ID=?"); (5) pstmt.setString(1,"tiger"); pstmt.setRowId(2,rowid); (6) (6) pstmt.executeUpdate(); rs.close(); stmt.close(); pstmt.close(); (7) (8) (8) (8) con.commit(); (9) (1) SQL文を実行するためのオブジェクトの生成 - 69 - (2) ResultSetオブジェクトの生成 (3) カーソルの位置づけ (4) ResultSetオブジェクトからのデータ取得 (5) SQL文の準備 (6) パラメタへの値の設定 (7) SQL文の実行 (8) オブジェクトのクローズ (9) トランザクションのコミット 以下に各項目の設定方法を示します。 SQL文を実行するためのオブジェクトの生成 ConnectionインタフェースのcreateStatementメソッドを使用し、Statementインタフェースのオブジェクトを生成します。 ResultSetオブジェクトの生成 StatementインタフェースのexecuteQueryメソッドを使用し、ResultSetオブジェクトを生成します。 カーソルの位置づけ ResultSetインタフェースのnextメソッドを使用し、カーソルを現在の位置から1行下に移動します。 ResultSetオブジェクトからのデータ取得 ResultSetインタフェースのgetRowIdメソッドを使用し、ResultSetオブジェクトからデータを取得します。 参照 getRowIdメソッドの詳細については“Java APIリファレンス”を参照してください。 SQL文の準備 ConnectionインタフェースのprepareStatementメソッドを使用し、SQL文を準備します。パラメタは、“?”で指定します。 パラメタへの値の設定 PreparedStatementインタフェースのsetXXXメソッドを使用し、パラメタに値を設定します。 参照 setXXXメソッドの詳細については“Java APIリファレンス”を参照してください。 SQL文の実行 PreparedStatementインタフェースのexecuteUpdateメソッドを使用し、SQL文を実行します。 オブジェクトのクローズ PreparedStatementインタフェースのcloseメソッドを使用して、オブジェクトをクローズします。 トランザクションのコミット Connectionインタフェースのcommitメソッドを使用して、トランザクションをコミットします。 3.12 ResultSetの保持機能を利用したデータの参照 操作手順 ResultSetの保持機能を利用してデータを参照する場合、以下の手順で行います。 - 70 - 記述例 ResultSetの保持機能を使用しデータを参照する場合の記述例を以下に説明します。 con.setHoldability(ResultSet.HOLD_CURSORS_OVER_COMMIT); (1) Statement stmt = con.createStatement(); (2) ResultSet rs = stmt.executeQuery( "SELECT ID,NAME FROM GENERAL.EMPLOYEE"); (3) int iID = 0; String sName = null; (3) (3) con.commit(); (4) while(rs.next()) { (5) iID = rs.getInt(1); sName = rs.getString(2); (6) (6) System.out.println("ID = " + iID); System.out.println("NAME = " + sName); (6) (6) } rs.close(); stmt.close(); (7) (7) (1) ResultSetの保持機能の設定 (2) SQL文を実行するためのオブジェクトの生成 (3) ResultSetオブジェクトの生成 (4) トランザクションのコミット - 71 - (5) カーソルの位置づけ (6) ResultSetオブジェクトからのデータ取得 (7) オブジェクトのクローズ 以下に各項目の設定方法を示します。 ResultSetの保持機能の設定 ResultSetの保持機能を設定します。 ConnectionインタフェースのsetHoldabilityメソッドを使用します。 SQL文を実行するためのオブジェクトの生成 ConnectionインタフェースのcreateStatementメソッドを使用し、Statementインタフェースのオブジェクトを生成します。 ResultSetオブジェクトの生成 StatementインタフェースのexecuteQueryメソッドを使用し、ResultSetオブジェクトを生成します。 SQL文に実行オプション指定を指定した場合は、エラーとなります。 トランザクションのコミット トランザクションをコミットします。 Connectionインタフェースのcommitメソッドを使用します。 カーソルの位置づけ ResultSetインタフェースのnextメソッドを使用し、カーソルを現在の位置から1行下に移動します。 ResultSetオブジェクトからのデータ取得 ResultSetインタフェースのgetXXXメソッドを使用し、ResultSetオブジェクトからデータを取得します。 参照 getXXXメソッドの詳細については“Java APIリファレンス”を参照してください。 オブジェクトのクローズ 生成した各オブジェクトをクローズします。 ResultSetインタフェースのcloseメソッドと、Statementインタフェースのcloseメソッドを使用します。 3.13 複数ResultSetの同時データ参照 操作手順 複数ResultSetのデータを同時に参照する場合、以下の手順で行います。 - 72 - 記述例 複数ResultSetのデータを同時に参照する場合の記述例を以下に説明します。 Statement stmt = con.createStatement(); (1) boolean retval = stmt.execute ("SELECT * FROM TBL1; SELECT * FROM TBL2"); (2) ResultSet rs1 = stmt.getResultSet(); (3) retval = stmt.getMoreResults (Statement.KEEP_CURRENT_RESULT); if (retval == true) { (4) ResultSet rs2 = stmt.getResultSet(); (3) while (rs1.next()) { iID = rs1.getInt(1); sName = rs1.getString(2); (5) (6) (6) System.out.println("ID = " + iID); System.out.println("NAME = " + sName); (6) (6) } while (rs2.next()) { iID = rs2.getInt(1); sName = rs2.getString(2); (5) (6) (6) - 73 - System.out.println("ID = " + iID); System.out.println("NAME = " + sName); (6) (6) } } rs1.close(); rs2.close(); stmt.close(); con.commit(); (7) (7) (7) (8) (1) SQL文を実行するためのオブジェクトの生成 (2) SQL文の実行 (3) ResultSetオブジェクトの作成 (4) 現在のResultSetをクローズさせず、次の結果に移動 (5) カーソルの位置づけ (6) ResultSetオブジェクトからのデータ取得 (7) オブジェクトのクローズ (8) トランザクションのコミット 以下に各項目の設定方法を示します。 SQL文を実行するためのオブジェクトの生成 ConnectionインタフェースのcreateStatementメソッドを使用し、Statementインタフェースのオブジェクトを生成します。 SQL文の実行 Statementインタフェースのexecuteメソッドを使用し、SQL文を実行します。 ResultSetオブジェクトの生成 StatementインタフェースのgetResultSetメソッドを使用し、ResultSetオブジェクトを生成します。 現在のResultSetをクローズさせず、次の結果に移動 StatementインタフェースのgetMoreResultsメソッドを使用し、次の結果に移動する。 カーソルの位置づけ ResultSetインタフェースのnextメソッドを使用し、カーソルを現在の位置から1行下に移動します。 ResultSetオブジェクトからのデータ取得 ResultSetインタフェースのgetXXX メソッドを使用し、ResultSetオブジェクトからデータを取得します。 参照 getXXXメソッドの詳細については“Java APIリファレンス”を参照してください。 オブジェクトのクローズ 生成した各オブジェクトをクローズします。 ResultSetインタフェースのcloseメソッドと、Statementインタフェースのcloseメソッドを使用します。 トランザクションのコミット トランザクションをコミットします。 Connectionインタフェースのcommitメソッドを使用します。 - 74 - 3.14 ResultSetでのデータ更新 操作手順 ResultSetを用いてデータベースのデータを更新する場合、以下の手順で行います。 記述例 ResultSetを用いてデータベースのデータを更新する場合の記述例を以下に説明します。 Statement stmt = conn.createStatement (ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_UPDATABLE); (1) ResultSet rs = stmt.executeQuery( "SELECT ID,NAME FROM GENERAL.EMPLOYEE"); (2) while(rs.next()) { (3) rs.updateString(2, "ABC"); rs.updateRow(); } (4) (4) rs.close(); stmt.close(); (5) (5) con.commit(); (6) (1) SQL文を実行するためのオブジェクトの生成、ResultSetの更新可能の指定 (2) ResultSetオブジェクトの生成 (3) カーソルの位置づけ (4) ResultSetの更新 (5) オブジェクトのクローズ - 75 - (6) トランザクションのコミット 以下に各項目の設定方法を示します。 SQL文を実行するためのオブジェクトの生成、ResultSetの更新可能の指定 ConnectionインタフェースのcreateStatementメソッドにResultSet.CONCUR_UPDATABLEを指定して、Statementイン タフェースのオブジェクトを生成します。 ResultSetオブジェクトの生成 StatementインタフェースのexecuteQueryメソッドを使用し、ResultSetオブジェクトを生成します。 読込み専用カーソルとなるSQL文を指定した場合は、ResultSetの更新時にエラーとなります。 カーソルの位置づけ ResultSetインタフェースのnextメソッドを使用し、カーソルを現在の位置から1行下に移動します。 ResultSetの更新 ResultSetインタフェースのupdateXXXメソッドを使用し更新するデータを用意します。 参照 updateXXXメソッドの詳細については“Java APIリファレンス”を参照してください。 ResultSetインタフェースのupdateRowメソッドを使用してデータベースのデータを更新します。 オブジェクトのクローズ 生成した各クラスのオブジェクトをクローズします。 ResultSetインタフェースのcloseメソッド、Statementインタフェースのcloseメソッドを使用します。 トランザクションのコミット トランザクションをコミットします。 Connectionインタフェースのcommitメソッドを使用します。 3.15 バッチ更新の実行 操作手順 バッチ更新を実行する場合、以下の手順で行います - 76 - 記述例 バッチ更新を実行する場合の記述例を以下に説明します。 con.setAutoCommit(false); (1) PreparedStatement pstmt = con.prepareStatement ( "INSERT INTO TABLE01 VALUES (?, ?)" ); (2) pstmt.setInt(1, 100); pstmt.setString(2, "ABC"); pstmt.addBatch(); (3) (3) (3) pstmt.setInt(1, 200); pstmt.setString(2, "DEF"); pstmt.addBatch(); (3) (3) (3) int[] updateCounts = pstmt.executeBatch(); (4) pstmt.close(); con.commit(); (5) (6) (1) 自動コミットモードの無効化 (2) SQL文を実行するためのオブジェクトの生成 (3) バッチ更新の準備 (4) バッチ更新の実行 (5) オブジェクトのクローズ (6) トランザクションのコミット 以下に各項目の設定方法を示します。 - 77 - 自動コミットモードの無効化 自動コミットモードを無効化します。 ConnectionインタフェースのsetAutoCommitメソッドを使用します。 SQL文を実行するためのオブジェクトの生成 ConnectionインタフェースのprepareStatementメソッドを使用し、PreparedStatementインタフェースのオブジェクトを生成 します。 バッチ更新の準備 PreparedStatementインタフェースのsetXXXメソッドを使用し、パラメタに値を設定します。 参照 setXXXメソッドの詳細については“Java APIリファレンス”を参照してください。 PreparedStatementインタフェースのaddBatchメソッドを使用し、バッチの更新を準備します。 バッチ更新の実行 PreparedStatementインタフェースのexecuteBatchメソッドを使用し、バッチ更新を実行します。 オブジェクトのクローズ 生成したPreparedStatementオブジェクトをクローズします。 PreparedStatementインタフェースのcloseメソッドを使用します。 トランザクションのコミット トランザクションをコミットします。 Connectionインタフェースのcommitメソッドを使用します。 3.16 タイムゾーン指定でのデータ更新 操作手順 データベースのデータをタイムゾーン指定で更新する場合、以下の手順で行います。 記述例 データベースのデータをタイムゾーン指定で更新する場合の記述例を以下に説明します。 - 78 - PreparedStatement pstmt = con.prepareStatement ( "INSERT INTO TBL (ID,日付) values(?,?)"); (1) pstmt.setInt(1, 1); (1) Timestamp tsJpn = new Timestamp (0); Calendar calGmt = Calendar.getInstance(TimeZone.getTimeZone("GMT")); pstmt.setTimestamp(2, tsJpn, calGmt); (2) (3) (4) pstmt.execute(); pstmt.close(); (5) (6) (1) SQL文の準備 (2) Timestampオブジェクトの生成 (3) タイムゾーンを設定 (4) パラメタへの値の設定 (5) SQL文の実行 (6) オブジェクトのクローズ 以下に各項目の設定方法を示します。 SQL文の準備 ConnectionインタフェースのprepareStatementメソッドを使用し、SQL文を準備します。パラメタは、“?”で指定します。 Timestampオブジェクトの生成 Timestampオブジェクトを生成します。 タイムゾーンを設定 TimeZoneクラスのgetTimeZoneメソッドを使用し、データを取得します。 パラメタへの値の設定 PreparedStatementインタフェースのsetXXXメソッドを使用し、パラメタに値を設定します。 参照 setXXXメソッドの詳細については“Java APIリファレンス”を参照してください。 SQL文の実行 PreparedStatementインタフェースのexecuteメソッドを使用し、SQL文を実行します。 オブジェクトのクローズ 生成したオブジェクトをクローズします。 PreparedStatementインタフェースのcloseメソッドを使用します。 3.17 エラー情報の取得 アプリケーション実行中に異常が発生した場合は、以下の対処を行い、問題を取り除いてください。 エラー情報の取得 JDBCドライバ使用中にエラーが発生した場合、catchブロックに記述した処理が行われます。catch文には、エラー情報を 取得する処理などを記述します。 - 79 - データベース関連のエラーはSQLExceptionが通知され、それ以外のエラーはExceptionが通知されます。SQLException は、Exceptionよりも前に記述してください。 エラーメッセージが通知された場合 アプリケーション実行中に、JDBCドライバのエラーメッセージが通知された場合、“付録E メッセージリファレンス”およ び“5.4 アプリケーションのデバッグ”を参照し、対処を行ってください。 記述例 エラー情報を取得する場合の記述例を以下に説明します。 try { : con.commit(); } catch(SQLException e) { System.out.println("ERROR MESSAGE : " + e.getMessage()); System.out.println("SQLSTATE : " + e.getSQLState()); System.out.println("ERROR CODE : " + e.getErrorCode()); : con.rollback(); : } catch(Exception ex) { System.out.println("ERROR MESSAGE : " + ex.getMessage()); ex.printStackTrace(); : con.rollback(); : } (1) (2) (3) (4) (1) (5) (4) (1) エラーメッセージの取得 (2) SQLSTATE値の取得 (3) Vendorエラーメッセージのエラーコードの取得 (4) トランザクションのロールバック (5) スタックトレースの取得 以下に各項目の設定方法を示します。 エラーメッセージの取得 getMessageメソッドを使用し、エラーメッセージを取得します。 SQLSTATE値の取得 発生したエラーがSQLExceptionの場合、エラーに対するSQLSTATE値が返却されます。 SQLExceptionクラスのgetSQLStateメソッドで取得することができます。 Vendorエラーメッセージのエラーコードの取得 SQLExceptionクラスのgetErrorCodeメソッドでVendorエラーメッセージのエラーコードを取得できます。 トランザクションのロールバック トランザクションをロールバックします。 Connectionインタフェースのrollbackメソッドを使用します。 - 80 - スタックトレースの取得 java.lang.ThrowableクラスのprintStackTraceメソッドを使用し、スタックトレースを取得します。 - 81 - 第4章 ルーチンを利用するアプリケーションの作成 本章では、プロシジャルーチンを利用する場合について、以下の項目を説明します。 ・ プロシジャルーチンを利用するアプリケーションの作成の流れ ・ プロシジャルーチンの実行 ・ プロシジャルーチンの処理結果 ・ プロシジャルーチン利用時のトランザクション 4.1 プロシジャルーチンを利用するアプリケーションの作成の流れ プロシジャルーチンを利用するアプリケーションは、以下の手順で作成します。 1. プロシジャルーチンの定義 2. プロシジャルーチンの実行 参照 プロシジャルーチンの定義方法については、“アプリケーション開発ガイド(共通編)”を参照してください。 4.2 プロシジャルーチンの実行 サーバ上のスキーマに登録済のプロシジャルーチンを、クライアント側から呼び出して実行するには、CallableStatement インタフェースのメソッドを使用します。 プロシジャルーチン実行の指定方法 CallableStatement cstmt = con.prepareCall("{CALL GENERAL.PROC01[?,?,?]}"); (1) (2) cstmt.setInt(1,7); (3) cstmt.setString(2,"bird"); (3) cstmt.registerOutParameter(2,java.sql.Types.CHAR); cstmt.registerOutParameter(3,java.sql.Types.INTEGER); (4) (4) cstmt.executeUpdate(); (5) (1) スキーマ名 (2) プロシジャルーチン名 (3) プロシジャルーチンへの入力パラメタの設定 (4) JDBC型の登録 (5) ストアドプロシジャの実行 4.3 プロシジャルーチンの処理結果 ここでは、プロシジャルーチン内での処理結果の確認方法と、プロシジャルーチンの呼出し元のアプリケーションでの処 理結果の確認方法について説明します。 プロシジャルーチン内での処理結果の確認 プロシジャルーチン内の出力パラメタの情報を、CallableStatement.getXXXメソッドで取得できます。registerOutParameter メソッドでJDBCデータ型を指定し、getXXXメソッドでデータを取得してください。 - 82 - プロシジャルーチン内のSQL手続き文の実行中に、例外コード40の例外(ロールバック例外)が発生した場合は、トラン ザクションをロールバックし、呼出し元のアプリケーションに無条件に復帰します。このときの例外事象は、呼出し元にエ ラーメッセージとSQLSTATEを通知します。 プロシジャルーチン内のSQL手続き文の実行中に、例外コード40以外の例外が発生した場合は、エラーメッセージと SQLSTATEを通知します。 プロシジャルーチン内ではハンドラを使用することができます。ハンドラとは、プロシジャルーチン実行中に例外が発生し た際に実行されるサブルーチンです。ハンドラ宣言はどのような例外が発生した場合にどのような動作を行うかを指定し ます。プロシジャルーチン実行中に例外コード40以外の例外が発生した際、該当するハンドラが呼び出され、特定の処 理を行い、プロシジャルーチンの処理を回復することができます。ハンドラ宣言が1つ以上指定されている状態で、かつ、 該当するハンドラが存在しなかった場合は、ハンドラで処理されなかったとして、発生した例外のSQLSTATEおよび SQLMSGが呼び出し元に返却されます。 注意 ハンドラ宣言が1つも指定されていない状態で、プロシジャルーチン実行中に例外コード40以外の例外が発生した場合 は、発生した例外のSQLSTATEおよびSQLMSGは呼び出し元に返却されません。この場合は、プロシジャルーチン内の SQLSTATEとSQLMSGに通知された内容を参照することにより、例外事象を確認します。 また、ハンドラ動作内で新たに例外が発生した場合、ハンドラ動作は終了して、新たに発生した例外のSQLSTATEおよび SQLMSGが呼び出し元に返却されます。 プロシジャルーチンの呼出し元での処理結果の確認 例外によってプロシジャルーチンが実行されない、またはプロシジャルーチン内で例外が発生して処理が中断された場 合は、その例外事象が呼出し元のSQLSTATEおよびSQLMSGに通知されます。プロシジャルーチンが実行されない場 合とは、アクセス規則違反や、プロシジャルーチンのパラメタ間の代入エラーが発生した場合などがあります。プロシジャ ルーチンの処理が中断される場合とは、プロシジャルーチン内のSQL手続き文で例外コード40の例外(ロールバック例 外)が発生した場合、発生した例外がハンドラで処理されない場合、またはハンドラ動作中に新たに例外が発生した場合 です。 以下に、具体例を示します。 プロシジャルーチンの呼出し元での処理結果の確認 CallableStatement cstmt = con.prepareCall( "{CALL GENERAL.PROC01[?,?,?]}"); cstmt.setInt(1,7); cstmt.setString(2,"bird"); cstmt.registerOutParameter(2,java.sql.Types.CHAR); cstmt.registerOutParameter(3,java.sql.Types.INTEGER); (1) (1) cstmt.executeUpdate(); int iID = 0; String sName = null; sName = cstmt.getString(2); iID = cstmt.getInt(3); System.out.println("ID = " + iID); System.out.println("NAME = " + sName); (2) (2) (2) (2) cstmt.close(); (3) (1)JDBCデータ型の設定 (2)出力パラメタからのデータ取得 (3)オブジェクトのクローズ - 83 - 4.4 プロシジャルーチン利用時のトランザクション JDBCドライバを使用したアプリケーションでのトランザクション状態の変更は、commitメソッドまたはrollbackメソッドで行 います。 プロシジャルーチンに、SQL文のCOMMIT文やROLLBACK文が定義されていると、エラーが発生する場合があります。 プロシジャルーチンには、COMMIT文やROLLBACK文を定義しないでください。 - 84 - 第5章 アプリケーションのコンパイルおよび実行 JDBCドライバを利用したアプリケーションのコンパイル、実行およびデバッグ方法について説明します。 5.1 アプリケーションのコンパイル ここではJDBCドライバを利用したアプリケーションのコンパイル方法について説明します。 Interstage Studioを利用したコンパイル Interstage Studioを利用してコーディングを行った場合には、コンパイルもInterstage Studioを使用して行えます。 参照 Interstage Studioの詳細については、“Interstage Studio 解説書”および“Interstage Studio ユーザーズガイド”を参照して ください。 javacコマンドによるコンパイル エディタを使用してコーディングを行った場合には、javacというコマンドを使用して作成したソースファイルをコンパイルし ます。 javacコマンドの実行形式を以下に示します。 javac クラス名.java 例 “A.2 データを参照する”で記載しているサンプルアプリケーションをコンパイルする場合は、以下となります。 javac MyDatabaseAccess.java コンパイルが正常に終わると、MyDatabaseAccess.classという名前の実行形式ファイルが生成されます。 参照 javacコマンドの詳細については、Sunのドキュメントを参照してください。 注意 Solaris/Linuxの場合 SolarisまたはLinuxでコンパイルする場合には、環境変数(CLASSPATH)の設定が必要となります。 環境変数の設定方法については、“Solaris(TM)の場合”または“Linuxの場合”を参照してください。 5.2 ネーミングサービスとJDBCデータソース登録ツール JDBCデータソースやネーミングサービスを使ってデータベースに接続するには、事前に以下の作業が必要となります。 ただし、Interstage Application Serverでコネクションプーリングを行う場合は不要です。 - 85 - 注意 ネーミングサービスを起動するドライバとJDBCデータソース登録ツールを起動するドライバは、同一のものを使用する必 要があります。 5.2.1 ネーミングサービスの起動 ネーミングサービスとは JNDIはJava Naming and Directory Interfaceの略です。 JNDIは、一般に「ネーミングサービス」や「ディレクトリサービス」と言われる名前検索により情報を取り出すサービスへ、Java プログラムからアクセスする手段を提供します。 JDBC 2.0で導入されたJDBCデータソースはJNDIと組み合わせて使用することにより、アプリケーションの自由度を高め ています。 JNDI APIは、「ネーミングサービス」や「ディレクトリサービス」にJavaプログラムからアクセスするための共通APIです。実際に 「ネーミングサービス」や「ディレクトリサービス」へ対する処理は、JNDIサービスプロバイダと呼ばれるライブラリに実装さ れます。アプリケーションは使用するJNDIサービスプロバイダを切り替えるだけで、別のサービスにアクセスすることがで きます。 JDBCドライバでは、JDBCデータソースのためのネーミングサービスとJNDIサービスプロバイダ、およびJDBCデータソー ス登録ツールを提供しています。 ネーミングサービスはJDBCデータソースを登録および管理します。 JDBCアプリケーションは、登録されたJDBCデータソースを、JNDIを使用して取得し、利用します。 JDBCデータソースを使用する場合、事前にネーミングサービスを起動しておく必要があります。 ネーミングサービスの起動には、以下の2種類の方法があります。 ・ Windows(R)サービス機能を利用したネーミングサービスの起動 ・ Javaコマンドを使用したネーミングサービスの起動 注意 ネーミングサービスは、同時に2つ以上起動しないでください。 処理のタイミングにより、ネーミングサービスで管理している情報に矛盾が発生し、JDBCデータソースの登録情報が壊れ る可能性があります。 5.2.1.1 Windows(R)サービス機能を利用したネーミングサービスの起動 ネーミングサービスをWindows(R)サービスに登録して起動する方法について、説明します。ネーミングサービスを以下の OS上で起動する場合、この方法を使用してください。 - 86 - ・ Windows(R) 2000 ・ Windows(R) XP ・ Windows Server(R) 2003 ・ Windows Vista(R) ・ Windows(R) 7 ・ Windows Server(R) 2008 ・ Windows Server(R) 2008 R2 ネーミングサービスをWindows(R)のサービスに登録することで、パソコンの起動と共に、ネーミングサービスを自動で起 動し、バックグラウンドで動作させることができます。上記のOS上でネーミングサービスを起動する場合、ネーミングサービスを Windows(R)のサービスに登録することを推奨します。 Windows(R)サービスへの登録方法 Windows(R)サービスへの登録は、symjddefnsコマンドを使用します。登録されるサービス名は、Symfoware JDBC Naming Serviceです。登録手順は、以下のとおりです。 参照 symjddefnsコマンドの詳細については、“コマンドリファレンス”を参照してください。 1. コマンドプロンプトを起動します。 注意 Windows Server(R) 2008またはWindows Server(R) 2008 R2において、symjddefnsコマンドは、“管理者: コマンド プロンプト”から実行する必要があります。[コマンドプロンプト]を右クリックして表示されるメニューから[管理者とし て実行]を選択し、“管理者:コマンドプロンプト”を起動してください。 2. symjddefnsコマンドを実行して、Symfoware JDBC Naming ServiceをWindows(R)サービスに登録します。 以下の画面と同じ[ユーザー アカウント制御]ダイアログが表示された場合は、[続行]ボタンをクリックし、処理を継 続してください。 - 87 - 【記述例】 JDKをC:\APW\JBK3\JDKにインストールしていて、ネーミングサービスのポート番号を26600にする場合 symjddefns -add -jdk C:\APW\JBK3\JDK -port 26600 Windows(R)サービスの起動方法 Symfoware JDBC Naming Serviceは、パソコン起動時に自動的に起動します。 手動で起動する場合、以下の手順で行ってください。 1. [管理ツール]で[サービス]を起動します。 2. Symfoware JDBC Naming Serviceを選択し、[サービスの開始]ボタンをクリックします。 Windows(R)サービスの停止方法 Symfoware JDBC Naming Serviceは、パソコンのシャットダウン時に自動的に停止します。手動で停止する場合、以下の 手順で行ってください 1. [管理ツール]で[サービス]を起動します。 2. Symfoware JDBC Naming Serviceを選択し、[サービスの停止]ボタンをクリックします。 サービスの削除方法について Symfoware Server クライアント機能をアンインストールすると、Symfoware JDBC Naming Serviceも削除されます。 Symfoware JDBC Naming Serviceを手動で削除したい場合、以下の手順で行ってください。 1. コマンドプロンプトを起動します。 2. symjddefnsコマンドを実行して、Symfoware JDBC Naming Serviceを削除します。 【記述例】 symjddefns -del Windowsファイアウォール機能について Windowsファイアウォール機能を有効にする場合、以下の手順でWebサーバのポート番号を有効にしてください。 Windows(R) XPまたはWindows Server(R) 2003の場合 以下のいずれかのサービスパックを適用してください。 - Microsoft(R) Windows(R) XP Service Pack 2 - Microsoft(R) Windows Server(R) 2003 Service Pack1 1. [スタート]メニューの[コントロールパネル]で[Windowsファイアウォール]をクリックします。 2. [例外]タブの[ポートの追加]ボタンをクリックします。 3. [ポートの追加]画面で、以下の項目を設定します。 - [名前]テキストボックスにSymfoware JDBC Naming Serviceを指定します。 - [ポート番号]テキストボックスに、ネーミングサービスで使用しているポート番号を指定します。ネーミングサー ビスのポート番号の初期値は、26600です。 - [TCP]ラジオボタンを選択します。 4. [ポートの追加]画面の[OK]をクリックします。 5. [例外]タブの[プログラムおよびサービス]リストボックスで、3.で指定した内容が有効になっていることを確認します。 6. [Windowsファイアウォール]画面の[OK]をクリックします。 Windows Vista(R)の場合 - 88 - 1. [スタート]メニューの[コントロールパネル]をクリックします。 2. [Windowsファイアウォール]アイコンをダブルクリックします。 3. [設定の変更]をクリックします。 4. [例外]タブの[ポートの追加]ボタンをクリックします。 5. [ポートの追加]画面で、以下の項目を設定します。 - [名前]テキストボックスにSymfoware JDBC Naming Serviceを指定します。 - [ポート番号]テキストボックスに、ネーミングサービスで使用しているポート番号を指定します。ネーミングサー ビスのポート番号の初期値は、26600です。 - [TCP]ラジオボタンを選択します。 6. [ポートの追加]画面の[OK]をクリックします。 7. [例外]タブの[プログラムまたはポート]リストボックスで、5.で指定した内容が有効になっていることを確認します。 8. [Windowsファイアウォールの設定]画面の[OK]をクリックします。 Windows(R) 7の場合 1. [スタート]メニューの[コントロールパネル]をクリックします。 2. [システムとセキュリティ]をクリックし、[Windowsファイアウォール]をクリックします。 3. 左側のウィンドウの[詳細設定]をクリックします。 4. [セキュリティが強化された Windows ファイアウォール]画面で、左側のウィンドウの[受信の規則]をクリックします。 5. 右側のウィンドウの[新しい規則]をクリックします。 6. [新規の受信の規則ウィザード]画面の[ポート]を選択し、[次へ]をクリックします。 7. [TCP]および[特定のローカルポート]を選択し、ネーミングサービスで使用しているポート番号を指定した後、[次 へ]をクリックします。ネーミングサービスのポート番号の初期値は、26600です。 8. [接続を許可する]を選択し、[次へ]をクリックします。 9. この規則を適用するプロファイルを選択し、[次へ]をクリックします。 10. [名前]テキストボックスにSymfoware JDBC Naming Serviceを指定し、[完了]をクリックします。 11. [セキュリティが強化された Windows ファイアウォール]画面の中央のウィンドウの[受信の規則]で、追加した規則 が有効になっていることを確認します。 Windows Server(R) 2008の場合 1. [スタート]メニューの[コントロールパネル]をクリックします。 2. [セキュリティ]をクリックし、[Windowsファイアウォール]をクリックします。 3. [設定の変更]をクリックします。 4. [例外]タブの[ポートの追加]ボタンをクリックします。 5. [ポートの追加]画面で、以下の項目を設定します。 - [名前]テキストボックスにSymfoware JDBC Naming Serviceを指定します。 - [ポート番号]テキストボックスに、ネーミングサービスで使用しているポート番号を指定します。ネーミングサー ビスのポート番号の初期値は、26600です。 - [TCP]ラジオボタンを選択します。 6. [ポートの追加]画面の[OK]をクリックします。 7. [例外]タブの[プログラムまたはポート]リストボックスで、5.で指定した内容が有効になっていることを確認します。 8. [Windowsファイアウォールの設定]画面の[OK]をクリックします。 - 89 - Windows Server(R) 2008 R2の場合 1. [スタート]メニューの[コントロールパネル]をクリックします。 2. [システムとセキュリティ]をクリックし、[Windowsファイアウォール]をクリックします。 3. 左側のウィンドウの[詳細設定]をクリックします。 4. [セキュリティが強化された Windows ファイアウォール]画面で、左側のウィンドウの[受信の規則]をクリックします。 5. 右側のウィンドウの[新しい規則]をクリックします。 6. [新規の受信の規則ウィザード]画面の[ポート]を選択し、[次へ]をクリックします。 7. [TCP]および[特定のローカルポート]を選択し、ネーミングサービスで使用しているポート番号を指定した後、[次 へ]をクリックします。ネーミングサービスのポート番号の初期値は、26600です。 8. [接続を許可する]を選択し、[次へ]をクリックします。 9. この規則を適用するプロファイルを選択し、[次へ]をクリックします。 10. [名前]テキストボックスにSymfoware JDBC Naming Serviceを指定し、[完了]をクリックします。 11. [セキュリティが強化された Windows ファイアウォール]画面の中央のウィンドウの[受信の規則]で、追加した規則 が有効になっていることを確認します。 5.2.1.2 Javaコマンドを使用したネーミングサービスの起動 起動方法 JDBCドライバをインストールしたマシンで以下のjavaコマンドを実行し、ネーミングサービスを起動します。 【記述形式】 java com.fujitsu.symfoware.jdbc2.naming.SYMNameService [<port_no>] <port_no> - ネーミングサービスの使用するポート番号を指定します。 - 省略した場合、26600になります。 - ポート番号は、1024~32767の範囲で、未使用のポート番号を指定してください。 - ポート番号は、以下の範囲で、未使用の値を指定してください。 Windows(R) 2000、Windows(R) XPまたはWindows Server(R) 2003の場合:5001~49151 Windows Vista(R)、Windows(R) 7、Windows Server(R) 2008またはWindows Server(R) 2008 R2の場合:1024 ~49151 【記述例】 ポート番号が26600の場合 java com.fujitsu.symfoware.jdbc2.naming.SYMNameService 26600 注意 Solaris/Linuxの場合 - SolarisまたはLinuxでネーミングサービスを起動する場合には、環境変数(CLASSPATH)の設定が必要となりま す。 環境変数の設定方法については、“Solaris(TM)の場合”または“Linuxの場合”を参照してください。 - ネーミングサービスをBシェルで起動した場合、ネーミングサービス起動後にexitコマンドでログアウトしてくださ い。 - システム管理者権限(root権限)を持つユーザがjavaコマンドを実行してください。 - 90 - ネーミングサービスの起動について ネーミングサービスは、アプリケーションを実行している間サービスとして運用を続ける必要があります。 そのため、SolarisマシンまたはLinuxマシンではコマンドの最後に“&”を付けて、マシンの起動と同時にバックグラウンド で実行するように設定することを推奨します。 ネーミングサービスの停止について ネーミングサービスの停止方法は、起動方法によって異なります。 コマンドプロンプトやコンソールから直接入力して起動させた場合 Ctrlキー + Cを押してください。 Solaris/Linuxの場合 &を付けて、バックグラウンドで起動した場合 ネーミングサービスを起動したコンソールが残っている場合 fgコマンドを実行し、バックグラウンドで動いているジョブをフォアグランドに戻します。 その後、Ctrlキー + Cで停止してください。 記述例を以下に示します。 fg 1 ネーミングサービスを起動したコンソールが残っていない場合 killコマンドで、ネーミングサービスのプロセスを終了させてください。 記述例を以下に示します。 kill -9 プロセスID 以下のコマンドを実行することで、ネーミングサービスのプロセスIDを調べることができます。 ps -ef | grep fujitsu.symfoware. ネーミングサービスの使用時のエラーについて ネーミングサービスが停止した状態でネーミングサービスを使用すると、以下のエラーメッセージが出力されます。アプリ ケーション実行時に以下のエラーメッセージが出力された場合、ネーミングサービスの状態を確認してください。 ・ ネーミングサービスが起動しているか ・ ネーミングサービスのポート番号が正しいか javax.naming.CommunicationException:SYMNameServer isn't being started. Linuxの場合 起動中のJDBCネーミングサービスが使用しているポート番号を、以下の手順で確認してください。 各コマンドは、システム管理者権限(root権限)を持つユーザが実行してください。 1. 以下のコマンドを実行し、ネーミングサービスのプロセスIDを取得します。 ps -ef | grep fujitsu.symfoware. - 91 - 2. 以下のコマンドを実行し、ネーミングサービスの状態を表示します。 netstat -a -p | grep (ネーミングサービスのプロセスID) 3. 表示される“Local Address”の数字がポート番号ですので確認してください。 Windowsファイアウォール機能について Windowsファイアウォール機能を有効にする場合、以下の手順でWebサーバのポート番号を有効にしてください。 Windows(R) XPまたはWindows Server(R) 2003の場合 以下のいずれかのサービスパックを適用してください。 - Microsoft(R) Windows(R) XP Service Pack 2 - Microsoft(R) Windows Server(R) 2003 Service Pack1以降 1. [スタート]メニューの[コントロールパネル]で[Windowsファイアウォール]をクリックします。 2. [例外]タブの[ポートの追加]ボタンをクリックします。 3. [ポートの追加]画面で、以下の項目を設定します。 - [名前]テキストボックスにSymfoware JDBC Naming Serviceを指定します。 - [ポート番号]テキストボックスに、ネーミングサービスで使用しているポート番号を指定します。ネーミング サービスのポート番号の初期値は、26600です。 - [TCP]ラジオボタンを選択します。 4. [ポートの追加]画面の[OK]をクリックします。 5. [例外]タブの[プログラムおよびサービス]リストボックスで、3.で指定した内容が有効になっていることを確認しま す。 6. [Windowsファイアウォール]画面の[OK]をクリックします。 Windows Vista(R)の場合 1. [スタート]メニューの[コントロールパネル]をクリックします。 2. [Windowsファイアウォール]アイコンをダブルクリックします。 3. [設定の変更]をクリックします。 4. [例外]タブの[ポートの追加]ボタンをクリックします。 5. [ポートの追加]画面で、以下の項目を設定します。 - [名前]テキストボックスにSymfoware JDBC Naming Serviceを指定します。 - [ポート番号]テキストボックスに、ネーミングサービスで使用しているポート番号を指定します。ネーミング サービスのポート番号の初期値は、26600です。 - [TCP]ラジオボタンを選択します。 6. [ポートの追加]画面の[OK]をクリックします。 7. [例外]タブの[プログラムまたはポート]リストボックスで、5.で指定した内容が有効になっていることを確認しま す。 8. [Windowsファイアウォールの設定]画面の[OK]をクリックします。 Windows(R) 7の場合 1. [スタート]メニューの[コントロールパネル]をクリックします。 2. [システムとセキュリティ]をクリックし、[Windowsファイアウォール]をクリックします。 3. 左側のウィンドウの[詳細設定]をクリックします。 - 92 - 4. [セキュリティが強化された Windows ファイアウォール]画面で、左側のウィンドウの[受信の規則]をクリックしま す。 5. 右側のウィンドウの[新しい規則]をクリックします。 6. [新規の受信の規則ウィザード]画面の[ポート]を選択し、[次へ]をクリックします。 7. [TCP]および[特定のローカルポート]を選択し、ネーミングサービスで使用しているポート番号を指定した後、 [次へ]をクリックします。ネーミングサービスのポート番号の初期値は、26600です。 8. [接続を許可する]を選択し、[次へ]をクリックします。 9. この規則を適用するプロファイルを選択し、[次へ]をクリックします。 10. [名前]テキストボックスにSymfoware JDBC Naming Serviceを指定し、[完了]をクリックします。 11. [セキュリティが強化された Windows ファイアウォール]画面の中央のウィンドウの[受信の規則]で、追加した規 則が有効になっていることを確認します。 Windows Server(R)2008の場合 1. [スタート]メニューの[コントロールパネル]をクリックします。 2. [セキュリティ]をクリックし、[Windowsファイアウォール]をクリックします。 3. [設定の変更]をクリックします。 4. [例外]タブの[ポートの追加]ボタンをクリックします。 5. [ポートの追加]画面で、以下の項目を設定します。 - [名前]テキストボックスにSymfoware JDBC Naming Serviceを指定します。 - [ポート番号]テキストボックスに、ネーミングサービスで使用しているポート番号を指定します。ネーミング サービスのポート番号の初期値は、26600です。 - [TCP]ラジオボタンを選択します。 6. [ポートの追加]画面の[OK]をクリックします。 7. [例外]タブの[プログラムまたはポート]リストボックスで、5.で指定した内容が有効になっていることを確認しま す。 8. [Windowsファイアウォールの設定]画面の[OK]をクリックします。 Windows Server(R) 2008 R2の場合 1. [スタート]メニューの[コントロールパネル]をクリックします。 2. [システムとセキュリティ]をクリックし、[Windowsファイアウォール]をクリックします。 3. 左側のウィンドウの[詳細設定]をクリックします。 4. [セキュリティが強化された Windows ファイアウォール]画面で、左側のウィンドウの[受信の規則]をクリックしま す。 5. 右側のウィンドウの[新しい規則]をクリックします。 6. [新規の受信の規則ウィザード]画面の[ポート]を選択し、[次へ]をクリックします。 7. [TCP]および[特定のローカルポート]を選択し、ネーミングサービスで使用しているポート番号を指定した後、 [次へ]をクリックします。ネーミングサービスのポート番号の初期値は、26600です。 8. [接続を許可する]を選択し、[次へ]をクリックします。 9. この規則を適用するプロファイルを選択し、[次へ]をクリックします。 10. [名前]テキストボックスにSymfoware JDBC Naming Serviceを指定し、[完了]をクリックします。 11. [セキュリティが強化された Windows ファイアウォール]画面の中央のウィンドウの[受信の規則]で、追加した規 則が有効になっていることを確認します。 - 93 - 5.2.2 JDBCデータソース登録ツールの起動 JDBCデータソース登録ツールは、ネーミングサービスにJDBCデータソースを登録します。 JDBCデータソース登録ツールを使用するには、事前にネーミングサービスを起動しておく必要があります。 起動方法 ネーミングサービスが起動されているマシンで以下のjavaコマンドを実行し、JDBCデータソース登録ツールを起動しま す。 【記述形式】 java com.fujitsu.symfoware.jdbc2.tool.FJJdbcTool [<host>] <port_no> <host> - ネーミングサービスを運用しているホスト名またはIPアドレスを指定します。 - 別のマシン上で動作しているネーミングサービスに対して操作を行う場合に指定します。 - 省略した場合はlocalhostとなります。 <port_no> - ネーミングサービスのポート番号を指定します。 - ネーミングサービスの起動時に指定したポート番号を指定してください。 【記述例】 ポート番号が26600の場合 java com.fujitsu.symfoware.jdbc2.tool.FJJdbcTool 26600 注意事項 データソース登録ツールの起動について - JDBCデータソース登録ツールは、同時に2つ以上起動しないでください。 処理のタイミングにより、ネーミングサービスで管理している情報に矛盾が発生し、JDBCデータソースの登録情 報が壊れる可能性があります。 - JDBCデータソース登録ツールを起動する場合、環境変数CLASSPATHには、ネーミングサービスの起動時に指 定したのと同じバージョンのJDBCドライバモジュールを指定してください。 - 解像度によりGUI上の文字が表示しきれない場合があります。その場合、フォントサイズや解像度を調整してくだ さい。 - JDBC2.X対応ドライバを利用する場合は、<port_no>を省略することができます。省略した場合は10326となりま す。 Solarisの場合 Solaris(TM)でのデータソース登録ツールの起動について Solaris上でデータソース登録ツールを起動させるには、OSに標準で組み込まれているXサーバ上の共通デスクトップ (CDE)環境またはWindows(R)上で動作するPC Xサーバが必要です。 PC Xサーバ製品としては、FUJITSU PC-X 1.3以降を推奨します。 Linuxの場合 Linuxでのデータソース登録ツールの起動について Linux上でデータソース登録ツールを起動させるには、OSに標準で組み込まれているXサーバ上のGNOME、KDE 環境が必要です。 環境によっては、データソース登録ツール起動時に以下のようなメッセージが表示されます。しかし、データソース登 録の動作には影響がありません。 - 94 - Font specified in font.properties not found [-wadalab-mincho-medium-r-normal--*-%d-*-*-c-*-jisx0201.1976-0] 参照 環境変数の設定方法については、“5.3.2 Javaアプリケーションの環境設定”を参照してください。 5.2.3 JDBCデータソース登録ツール ここでは、JDBCデータソース登録ツールについて説明します。 5.2.3.1 データソース一覧画面 この画面では、データソースの新規登録、設定変更および削除を行います。 図5.1 データソース一覧画面 データソース一覧 すでに登録されているデータソースの一覧を表示します。 データソース名をダブルクリックすると、選択されているデータソースの情報設定画面を開きます。 データソースが未登録の場合、何も表示されません。 [追加]ボタン データソースの登録に必要な情報の設定画面を開きます。 - 95 - [削除]ボタン データソース一覧で選択されているデータソースを削除します。 [構成]ボタン データソース一覧で選択されているデータソースの情報設定画面を開きます。 [閉じる]ボタン JDBCデータソース登録ツールを終了します。 [環境設定]ボタン JDBCデータソース登録ツールのヘルプを表示するための、実行環境を設定します。 [ヘルプ]ボタン JDBCデータソース登録ツールのヘルプを表示します。 操作方法 [環境設定]ボタンを選択すると、以下のダイアログが表示されます。 図5.2 ヘルプの実行環境設定ダイアログ ・ [...]を選択すると、ファイル選択ダイアログが開きます。実行環境をファイル選択ダイアログから選択すると、選択した 実行環境のパスが“Webブラウザ”に表示されます。 ・ [OK]を選択すると、指定したパスが保存されます。 ・ [キャンセル]を選択すると、パスを保存しないで、環境設定ダイアログを開く前の画面に戻ります。 データソース一覧から、特定のデータソースを選択して[削除]ボタンを選択すると、確認ダイアログが表示されます。 図5.3 データソースの削除確認ダイアログ ・ [はい]を選択すると、指定されたデータソースを削除します。 ・ [いいえ]を選択すると、何もしないでデータソース一覧画面に戻ります。 - 96 - ・ アプリケーションの運用開始後は、ネーミングサービスを再起動するまで、データソースを削除することはできませ ん。アプリケーションの運用開始後にデータソースを削除しようとすると、以下のダイアログが表示されます。 図5.4 アプリケーション運用開始によるエラー発生通知ダイアログ [了解]ボタンを選択して、JDBCデータソース登録ツールを終了してください。 5.2.3.2 データソースの情報設定画面 この画面では、データソースの登録および更新を行うための情報を設定します。 図5.5 データソースの情報設定画面 データソース名 アプリケーションから使用される名前を指定します。 省略できません。 - 97 - データソース名には、以下の文字が指定できます。 ・ 各国語文字 ・ 英数字 ・ “!”、“#”、“$”、“%”、“&”、“(”、“)”、“=”、“-”、“^”、“~”、“|”、“@”、“[”、“{”、“:”、“*”、“}”、“]”、“;”、“+”、“<”、 “,”、“>”、“.”、“?”、“/”、“_” 注意 データソース名には、空白を指定することはできません。 また、以下の記号を指定することはできません。 ・ \(円記号) ・ '(一重引用符) ・ "(二重引用符) 記号が文字列中に含まれている場合も無効です。 プロトコル データベースへの接続形態を、以下の2つから選択します。 ・ ローカル ・ リモート(RDB2_TCP連携) デフォルトは“ローカル”です。 ホスト名 接続するサーバの18バイト以内のホスト名またはIPアドレスを指定します。 ホスト名は、“プロトコル”で“リモート(RDB2_TCP連携)”を選択した時に指定可能です。 ポート番号 RDB2_TCP連携で使用するポート番号を指定します。 ポート番号は、“プロトコル”で“リモート(RDB2_TCP連携)”を選択した時に指定可能です。 データ資源名 データベースに接続するためのデータ資源名(データベース名)を指定します。省略できません。 ユーザー名 データベースに接続する際のユーザIDを指定します。 省略した場合、DataSourceインタフェースのgetConnectionメソッドの引数に、必ず指定してください。ただし、ローカルの Symfoware/RDB と 接 続 す る 場 合 、 ま た は Windows(R) 2000 以 外 を 利 用 し 、 リ モ ー ト ア ク セ ス で 接 続 先 ホ ス ト 名 に“localhost”、またはループバックアドレスが指定された場合は、ユーザIDの指定は不要です。 パスワード データベースに接続する際の、ユーザIDに対するパスワードを指定します。 省略した場合、DataSourceインタフェースのgetConnectionメソッドの引数に、必ず指定してください。ただし、ローカルの Symfoware/RDB と 接 続 す る 場 合 、 ま た は Windows(R) 2000 以 外 を 利 用 し 、 リ モ ー ト ア ク セ ス で 接 続 先 ホ ス ト 名 に“localhost”、またはループバックアドレスが指定された場合は、パスワードの指定は不要です。 - 98 - データソースの説明 このデータソースについての説明を入力します。 DBサーバOS リモートアクセス(RDB2_TCP連携)時に、接続するデータベースサーバの種類を選択します。 “Solaris/Linux/Windows”を選択してください。“OS IV”は、グローバルサーバおよびPRIMEFORCEに接続する場合に 選択します。 DBサーバOSは、“プロトコル”の“リモート(RDB2_TCP連携)”を選択した時に指定可能です。 [OK]ボタン 設定した内容を有効にして、このデータソースを登録/更新します。 [キャンセル]ボタン 設定した内容を無効にして、この画面を終了します。 [オプション]ボタン このデータソースのオプション情報設定画面を開きます。 ・ JDBCデータソース登録ツールとDataSourceインタフェースのgetConnectionメソッドの両方で、ユーザIDとパスワード を指定した場合、getConnectionメソッドに指定した値が有効となります。 ・ アプリケーションの運用開始後は、ネーミングサービスを再起動するまで、アプリケーションで使用されたデータソー スを更新することはできません。アプリケーションの運用開始後にデータソースを更新しようとすると、“図5.4 アプリ ケーション運用開始によるエラー発生通知ダイアログ”が表示されます。[了解]を選択してJDBCデータソース登録 ツールを終了してください。 ・ データソースの情報設定画面が表示されている間は、[閉じる]ボタンを選択することはできません。また、右上の[×] をクリックした場合、次のダイアログが表示されます。 図5.6 JDBCデータソース登録ツールのインフォメーションダイアログ [了解]ボタンを選択すると、データソースの情報設定画面に戻ります。JDBCデータソース登録ツールを終了する場 合、データソース一覧画面に戻ってから、[閉じる]ボタンまたは[×]ボタンを選択してください。 5.2.3.3 データソースのオプション情報設定画面 この画面は、データソースの登録および更新の際に指定可能なオプションの設定画面です。 - 99 - 図5.7 データソースのオプション情報設定画面 デフォルトスキーマ名 アプリケーション内で使用する、SQL文に対するデフォルトスキーマ名を指定します。 最大コネクション数 データソースごとに、同時に接続可能なコネクション数の上限を指定します。 1~2147483647の範囲で指定します。 デフォルトは256です。 最大プールコネクション数 再利用可能なコネクション数の上限を指定します。 0~2147483647の範囲で指定します。 デフォルトは 256です。 このオプションに 0を指定した場合、コネクションは再利用されずに切断されます。 1以上を指定した場合、Connectionインタフェースのcloseメソッドを実行してもデータベースとの接続は切断されず、コネ クションは再利用可能な状態になります。ただし、指定値を超えるコネクションは切断されます。 また、“最大コネクション数”を超える値は指定できません。 ステートメントキャッシュ数 ステートメントキャッシュ機能でキャッシュする、文の上限を指定します。 - 100 - 0~32000の範囲で指定します。 デフォルトは32です。 このオプションに 0を指定した場合、ステートメントキャッシュ機能は無効になります。 キャッシュする文の数の見積りは、以下となります。 キャッシュする文の数 = prepareStatementメソッドまたは prepareCallメソッドで指定するSQL文の数(注) 注) 同じSQL文でも以下の場合は別のSQL文として計算してください。 ・ 大文字と小文字の違いがある場合 ・ 結果セットのタイプが異なる場合 ・ 結果セットの並行処理のタイプが異なる場合 ステートメント自動クローズ ステートメントキャッシュ機能の利用時に、PreparedStatementおよびCallableStatementのクローズをJDBCドライバが自動 的に行うかどうかを指定します。 自動的に行う場合には、[ステートメント自動クローズ]チェックボックスをチェックします。デフォルトでは、自動クローズは 行いません。 このオプションは、ステートメントキャッシュ数に1~32000が指定された場合に指定可能です。 実行した文の数が、「ステートメントキャッシュ数」で設定されたキャッシュ数に達した場合、以降実行される文はキャッシュ しませんが、自動クローズの対象にもなりません。 メッセージに使用する言語 JDBCドライバから返却されるエラーメッセージを出力する際の言語を選択します。 その他パラメタ その他パラメタには、ctuneparamオプションおよびクライアント用の動作環境ファイルを指定することができます。 ctuneparamオプションについては“5.2.3.4 ctuneparamオプションについて”を参照してください。 クライアント用の動作環境ファイルについては“5.2.3.5 クライアント用の動作環境ファイルの指定について”を参照してく ださい。 [OK]ボタン 設定した内容を有効にして、データソースの情報設定画面に戻ります。 [キャンセル]ボタン 設定した内容を無効にして、データソースの情報設定画面に戻ります。 データソースのオプション情報設定画面が表示されている間は、[閉じる]ボタンを選択することはできません。また、右上の [×]をクリックした場合、設定画面を終了するように求める“図5.6 JDBCデータソース登録ツールのインフォメーションダイ アログ”が表示されます。ダイアログの[了解]ボタンをクリックすると、データソースのオプション情報設定画面に戻ります。 5.2.3.4 ctuneparamオプションについて ctuneparamオプションには、Symfoware Serverのクライアント用の動作環境ファイルに相当する指定をすることができま す。なお、ctuneparamオプションで設定できるパラメタ名の先頭文字“CLI_”を削除したパラメタが、Symfoware Serverの クライアント用の動作環境ファイルのパラメタと一致しています。 データソースにctuneparamオプションで指定したパラメタはコネクション接続時に読み込まれます。 - 101 - 動作環境パラメタの指定の優先順位 動作環境の設定項目の中には、システム用の動作環境ファイル、サーバ用の動作環境ファイル、ctuneparamオプション およびクライアント用の動作環境ファイルで重複して指定できるパラメタがあります。重複して指定した場合の優先順位 は、以下のとおりです。 1. サーバ用の動作環境ファイル 2. ctuneparamオプション 3. クライアント用の動作環境ファイル 4. システム用の動作環境ファイル 【記述形式】 ctuneparam='<param>' <param>...ctuneparamオプションで指定するパラメタ 【記述例】 CLI_MAX_SQLとCLI_WAIT_TIMEを指定した場合 ctuneparam='CLI_MAX_SQL=(255);CLI_WAIT_TIME=(30)' 注意 ctuneparamオプションに複数のパラメタを指定する場合、値を“;”(セミコロン)で区切って設定します。 【パラメタ】 JDBCドライバを利用するアプリケーションから指定可能なパラメタは以下となります。 分類 通信 作業領 域など パラメタ 概要 CLI_BUFFER_SIZE 通信に使用するバッファサイズ CLI_SERVER_ENV_FILE 使用するサーバ用の動作環境ファ イル CLI_TRAN_SPEC SQLエラー発生時のトランザクショ ン CLI_TRAN_TIME_LIMIT 1つのトランザクションの最大使用 可能時間 CLI_WAIT_TIME 通信時の待ち時間 CLI_MAX_SQL 同時に操作できるオブジェクトの数 CLI_OPL_BUFFER_SIZE SQL文の実行手順を格納しておく バッファのサイズ CLI_RESULT_BUFFER 一括FETCHを行う場合のバッファ の数とサイズ CLI_SORT_MEM_SIZE 作業用ソート領域として使うメモリサ イズ CLI_WORK_ALLOC_SPAC ESIZE 作業用ソート領域および作業用 テーブルとして使うファイルサイズ CLI_WORK_MEM_SIZE 作業用テーブルとして使うメモリの サイズ CLI_WORK_PATH 作業用テーブルおよび作業用ソー ト領域のパス - 102 - 分類 パラメタ データ 処理 CLI_CAL_ERROR 代入処理でオーバフローが起きた 場合の処理 CLI_CHARACTER_TRANS LATE 文字コードの変換をクライアントで 行うか否か CLI_DEFAULT_INDEX_SI ZE 格納構造定義を簡略化したイン デックスを定義する場合のインデッ クスのデータ格納域の初期量、拡 張量、ページ長など CLI_DEFAULT_OBJECT_T ABLE_SIZE 格納構造定義を簡略化した表を定 義する場合のOBJECT構造の表の データ格納域の初期量、拡張量、 ページ長など CLI_DEFAULT_TABLE_SI ZE 格納構造定義を簡略化した表を定 義する場合の表のデータ格納域の 初期量、拡張量、ページ長など CLI_DSI_EXPAND_POINT DSIの容量拡張を起動するか否か CLI_INCLUSION_DSI アプリケーションで使用するDSIを 限定する CLI_TEMPORARY_INDEX _SIZE 一時表にインデックスを定義する場 合のインデックスのデータ格納域 の初期量、拡張量など CLI_TEMPORARY_TABLE _SIZE 一時表を定義する場合の表のデー タ格納域の初期量、拡張量など アクセス プラン CLI_ACCESS_PLAN アプリケーション単位でアクセスプ ランを取得するか否かおよびSQL 文に対するアドバイスを出力するか 否か 性能情 報 CLI_IGNORE_INDEX インデックスを使用しないアクセス プランを選択するか否か CLI_JOIN_RULE ジョインする方法 CLI_JOIN_ORDER 結合表と他の表のジョイン順 CLI_SCAN_KEY_ARITHM ETIC_RANGE 四則演算の検索範囲について、イ ンデックスの範囲検索、または、ク ラスタキー検索を行うか否か CLI_SCAN_KEY_CAST 探索条件のCASTオペランドに指 定した列でインデックスの範囲検 索、または、クラスタキー検索を行 うか否か CLI_SORT_HASHAREA_SI ZE ソート処理がレコードをハッシング して格納するための領域サイズ CLI_SQL_TRACE アプリケーション単位でSQL性能情 報を取得するか否か CLI_SS_RATE 述語ごとの検索範囲の選択率の値 CLI_TID_SORT インデックス検索と表データ取得の アクセスモデルでTIDソートを利用 するか否か CLI_TID_UNION TIDユニオンマージのアクセスモデ ルを有効にするか否か 表・イン デックス 概要 - 103 - 分類 パラメタ 概要 CLI_USQL_LOCK UPDATE文:探索またはDELETE 文:探索の更新標的レコードを位置 づける部分の占有モード CLI_DSO_LOCK 使用するDSOの占有の単位、占有 モード CLI_ISOLATION_WAIT 占有待ちの方式 CLI_R_LOCK 占有の単位を行とする デバッグ CLI_ROUTINE_SNAP ストアドプロシジャのルーチンのト レースを出力するか否か リカバリ CLI_RCV_MODE アプリケーションのリカバリ水準を 指定する 予約語 とSQL 機能 CLI_SQL_LEVEL アプリケーションの予約語とSQL機 能のレベルを設定する 並列ク エリ CLI_MAX_PARALLEL データベースを並列に検索する場 合の多重度 CLI_PARALLEL_SCAN アプリケーション単位またはコネク ション単位にデータベースを並列 に検索するか否か CLI_ARC_FULL アーカイブログ満杯時にエラー復 帰するか否か 排他 その他 CLI_ACCESS_PLAN アプリケーション単位でアクセスプランを取得するかどうかを指定します。 指定形式 CLI_ACCESS_PLAN = ({ON | OFF},ファイル名[,出力レベル][,SQLアドバイザ出力レベル]) 省略時 CLI_ACCESS_PLAN = (OFF) パラメタの意味 ON: アクセスプラン取得機能を利用する場合に指定します。 OFF: アクセスプラン取得機能を利用しない場合に指定します。 ファイル名: 出力先のサーバ側のファイル名を、絶対パスで指定します。指定されたファイルがすでに存在する場合は、情 報を追加して出力します。 出力レベル: 出力レベルには1または2を指定します。 1を指定すると、アクセスプランのセクション情報のみを出力し、2を指定すると、セクション内の各エレメント詳 細情報も出力します。 省略した場合は、2が指定されたものとみなします。 SQLアドバイザ出力レベル: SQLアドバイザ出力レベルには、“ADVICE”または“NOADVICE”を指定します。 - 104 - “ADVICE”を指定すると、SQL文に対するアドバイスを出力します。“NOADVICE”を指定すると、SQL文に対 するアドバイスを出力しません。省略した場合は、“NOADVICE”が指定されたものとみなします。 CLI_ARC_FULL アーカイブログファイルが満杯状態になったとき、エラー復帰するか否かを指定します。 指定形式 CLI_ARC_FULL = ({RETURN | WAIT}) 省略時 省略した場合は、システム用の動作環境ファイルにおけるARC_FULLの指定に従います。 パラメタの意味 RETURN: エラーとしてアプリケーションに復帰します。 WAIT: 空きのアーカイブログファイルが作成されるまで待ちます。 注意 - “WAIT”を指定した場合、空きのアーカイブログファイルが作成されるまでアプリケーションは無応答状態となりま すので注意してください。 また、本実行パラメタの指定が、互いに異なる複数のアプリケーションが同時に同じDSIを扱うような運用はしない でください。例えば、以下の事象が発生する場合があります。 トランザクションAは、CLI_ARC_FULL=RETURNを設定し、アーカイブログ満杯の状態であるとします。トランザ クションBは、CLI_ARC_FULL=WAITを設定し、アーカイブログ満杯の状態で資源を占有しているとします。この とき、トランザクションBは、空きのアーカイブログファイルが作成されるまで待ちます。同じ資源にアクセスしてい るトランザクションAは、トランザクションBの終了を待つため、CLI_ARC_FULL=RETURNを設定しているにもか かわらず、無応答状態になります。 この場合は、rdblkinfコマンドのlオプションやrdblogコマンドのVオプションかつaオプションで排他やアーカイブロ グの状況を確認できます。また、アーカイブログに関する以下のシステムメッセージが表示されます。これらの情 報をもとに、バックアップ可能なアーカイブログファイルをバックアップするか、または新規にアーカイブログファイ ルを追加して対処してください。 rdb: WARNING: qdg13336w:転送可能なアーカイブログ域が不足しています rdb: ERROR: qdg03132u:アーカイブログファイルが満杯です - 以下のいずれかの処理中にシステムロググループまたはユーザロググループのアーカイブログファイルが満杯状 態になった場合の振る舞いについては、本実行パラメタの指定に関わらずシステム用の動作環境ファイルに指定した ARC_FULLパラメタに従います。 - SQL文の実行で自動容量拡張が動作する。 - SQL文中に順序を直接指定して番号を採番する。 - 表定義のDEFAULT句に順序を指定して、自動的に取得した値を表に挿入する。 CLI_BUFFER_SIZE 通信に利用するバッファサイズを指定します。 単位はキロバイトです。 指定形式 CLI_BUFFER_SIZE = ([初期量][,拡張量]) - 105 - パラメタの意味 初期量: バッファの初期量を1~10240で指定します。 省略した場合、32になります。 拡張量: 拡張量を1~10240で指定します。 省略した場合、32になります。 CLI_CAL_ERROR 代入処理でオーバフローが発生した場合の処理を指定します。 指定形式 CLI_CAL_ERROR = ({REJECT | NULL}) 省略時 CLI_CAL_ERROR = (REJECT) パラメタの意味 REJECT: 例外エラーにします。 NULL: 演算結果をNULLにします。 CLI_CHARACTER_TRANSLATE データベースシステムの文字コード系が、アプリケーションで使用している文字コード系と異なる場合、コード変換を クライアントで行うか、サーバで行うかを指定します。 指定形式 CLI_CHARACTER_TRANSLATE = ({CLIENT | SERVER}) 省略時 CLI_CHARACTER_TRANSLATE = (SERVER) パラメタの意味 CLIENT: クライアントでコード変換を行う場合に指定します。 SERVER: サーバでコード変換を行う場合に指定します。 注意 サーバの負荷を少しでも減らしたい場合は、クライアントで行うよう指定します。 CLI_DEFAULT_INDEX_SIZE 格納構造定義を簡略化したインデックスを定義する場合、インデックスのベース部とインデックス部の割り付け量、ペー ジ長などを指定します。 指定形式 CLI_DEFAULT_INDEX_SIZE=( ベース部ページ長, インデックス部ページ長, ベース部初期量, - 106 - インデックス部初期量 [,拡張量,拡張契機]) 省略時 システム用の動作環境ファイルの、DEFAULT_INDEX_SIZEの指定値 パラメタの意味 ベース部ページ長: ベース部のページ長を1、2、4、8、16、32の中から指定します。 インデックス部ページ長: インデックス部のページ長を1、2、4、8、16、32の中から指定します。 ベース部初期量: ベース部の初期量を2~2097150の範囲で指定します。 単位はキロバイトです。 インデックス部初期量: インデックス部の初期量を2~2097150の範囲で指定します。 単位はキロバイトです。 拡張量: インデックスのベース部とインデックス部の拡張量を1~2097150の範囲で指定します。 単位はキロバイトです。 省略した場合、10240になります。 インデックス部の拡張量は、ベース部の5分の1の値となります。 拡張契機: ベース部とインデックス部の拡張を行うタイミングとして、DSIの空き容量を0~2097150の範囲で指定します。 インデックスのDSIの空き容量がここで指定した値になると、ベース部とインデックス部の拡張が行われます。 単位はキロバイトです。 省略した場合、0になります。 CLI_DEFAULT_OBJECT_TABLE_SIZE 格納構造定義を簡略化した表を定義する場合、OBJECT構造の表の、データ格納域の割り付け量、ページ長などを 指定します。 指定形式 CLI_DEFAULT_OBJECT_TABLE_SIZE = ( ページ長, 初期量 [,拡張量,拡張契機]) 省略時 システム用の動作環境ファイルの、DEFAULT_OBJECT_TABLE_SIZEの指定値 パラメタの意味 ページ長: データ格納域のページ長を指定します。 必ず32を指定します。 初期量: データ格納域の初期量を2~2097150の範囲で指定します。 - 107 - 単位はキロバイトです。 拡張量: データ格納域の拡張量を1~2097150の範囲で指定します。 単位はキロバイトです。 省略した場合、32768になります。 拡張契機: データ格納域の拡張を行うタイミングとして、表のDSIの空き容量を0~2097150の範囲で指定します。 表のDSIの空き容量がここで指定した値になると、データ格納域の拡張が行われます。 単位はキロバイトです。 省略した場合、0になります。 CLI_DEFAULT_TABLE_SIZE 格納構造定義を簡略化した表を定義する場合、表のデータ格納域の割り付け量、ページ長などを指定します。 指定形式 CLI_DEFAULT_TABLE_SIZE = ( ページ長, 初期量 [,拡張量,拡張契機]) 省略時 システム用の動作環境ファイルの、DEFAULT_TABLE_SIZEの指定値 パラメタの意味 ページ長: データ格納域のページ長を1、2、4、8、16、32の中から指定します。 初期量: データ格納域の初期量を2~2097150の範囲で指定します。 単位はキロバイトです。 拡張量: データ格納域の拡張量を1~2097150の範囲で指定します。 単位はキロバイトです。 省略した場合、10240になります。 拡張契機: データ格納域の拡張を行うタイミングとして、表のDSIの空き容量を0~2097150の範囲で指定します。 表のDSIの空き容量がここで指定した値になると、データ格納域の拡張が行われます。 単位はキロバイトです。 省略した場合、0になります。 CLI_DSI_EXPAND_POINT データ操作で、DSIに指定された拡張契機(rdbalmdsiコマンドまたはDSI定義文で定義します)を無視するかどうかを 指定します。 指定形式 CLI_DSI_EXPAND_POINT=({ON | OFF}) 省略時 CLI_DSI_EXPAND_POINT=(ON) - 108 - パラメタの意味 ON: DSIに定義された拡張契機は有効になります。 データ操作で、DSIの空きページ容量が拡張契機に達した時点で、領域を拡張します。 OFF: DSIに定義された拡張契機は無効になります。 データ操作で、DSIの空きページ容量が拡張契機に達しても、領域を拡張しません。この場合、DSIの空き領 域が枯渇した時点で、領域を拡張します。 CLI_DSO_LOCK 使用するDSOおよびその占有の単位、占有モードを指定します。 CLI_DSO_LOCKが指定された場合、ConnectionインタフェースのsetTransactionIsolationメソッドは指定できません。 ま た 、 シ ス テ ム 用 の 動 作 環 境 フ ァ イ ル の R_LOCK お よ び ctuneparam オ プ シ ョ ン の CLI_R_LOCK の 値 に よ り 、 CLI_DSO_LOCKを指定できない場合があります。以下にCLI_DSO_LOCKとR_LOCKおよびCLI_R_LOCKの関係 を示します。 ctunepara システム用 CLI_DSO_LO mオプション の動作環境 CKの指定 ファイルの の CLI_R_LOC R_LOCK K NO YES 省略 占有単位 NO 指定可 CLI_DSO_LO CKの指定によ る YES 指定可 CLI_DSO_LO CKの指定によ る NO 指定不可 行単位で占有 (注) YES 指定不可 行単位で占有 (注) NO 指定可 CLI_DSO_LO CKの指定によ る YES 指定不可 行単位で占有 (注) 注) CLI_DSO_LOCKを指定した場合、データベースへの接続時にエラーとなります。 指定形式 CLI_DSO_LOCK = (DSO名[/[P][占有モード]][,DSO名[/[P][占有モード]]・・・]) パラメタの意味 DSO名: 使用するDSO名を以下の形式で指定します。 データベース名.DSO名 P: DSOの占有単位をページにします。 省略した場合、占有の単位はDSIになります。 - 109 - 占有モード: 占有のモードとして以下のどちらかを指定します。省略した場合、EXになります。 EX: 更新モードの排他を行います。 SH: 参照モードの排他を行います。 CLI_IGNORE_INDEX データベースを検索する時に、インデックスを使用せずにデータベースにアクセスするか否かを指定します。データ ウェアハウジングにおいて大量のデータを検索および集計する場合には、インデックスだけではデータが絞りきれず、 インデックスを使う分だけ無駄なオーバヘッドが発生することがあります。このような場合は、当パラメタにYESを指定 することにより、表の全件検索または並列スキャンのアクセスモデルを採用します。 指定形式 CLI_IGNORE_INDEX = ({YES | NO}) 省略時 CLI_IGNORE_INDEX = (NO) パラメタの意味 YES: インデックスを使用しないアクセスモデルを選択する。 NO: インデックスが使用できる時は、インデックスを使用したアクセスモデルを選択する。 CLI_INCLUSION_DSI DSIを限定したい表のDSI名を指定します。 限定されたDSIを含む表に対しては、そのDSIだけがデータ操作の範囲となります。また、このパラメタの指定により、 探索条件の記述が省略ができます。なお、DSIを限定していない表に対しては、データ操作をすることができます。 指定形式 CLI_INCLUSION_DSI = ( データベース名.DSI名 [,データベース名.DSI名・・・]) パラメタの意味 データベース名.DSI名: 限定したい表のDSI名を指定します。 CLI_ISOLATION_WAIT あるトランザクションで資源にアクセスしようとしたとき、別のトランザクションがその資源を占有していた場合に、資源 の占有が解除されるまで待つかどうかを指定します。 指定形式 CLI_ISOLATION_WAIT = ({WAIT | REJECT}) 省略時 CLI_ISOLATION_WAIT = (WAIT) パラメタの意味 WAIT: 資源の占有が解除されるまで待ちます。 - 110 - REJECT: エラーとして復帰します。 CLI_JOIN_RULE ジョインする方法を指定します。 指定形式 CLI_JOIN_RULE = ({AUTO | MERGE | FETCH}) 省略時 CLI_JOIN_RULE = (AUTO) パラメタの意味 AUTO: Symfoware/RDBが自動的に選択する。 MERGE: マージジョインのアクセスモデルを優先する。 FETCH: フェッチジョインのアクセスモデルを優先する。 CLI_JOIN_ORDER 結合表と他の表をジョインする場合のジョイン順を指定します。 指定形式 CLI_JOIN_ORDER = ({AUTO | INSIDE | OUTSIDE}) 省略時 CLI_JOIN_ORDER = (INSIDE) パラメタの意味 AUTO: Symfoware/RDBが自動的に選択する。 INSIDE: 結合表から先にジョインする。 OUTSIDE: 結合表の中に指定した表と結合表の外に指定した表から先にジョインする。 CLI_MAX_PARALLEL SQL文でデータベースを並列に検索する場合の多重度です。 SQL文でデータベースを並列に検索できるのは、単一行SELECT文またはカーソル宣言で並列指定を指定した場合 です。 表のDSIの数が、指定した多重度よりも少ない場合は、DSIの数を多重度として並列検索を行います。 指定形式 CLI_MAX_PARALLEL = (多重度) 省略時 省略した場合は、システム用の動作環境ファイルにおけるMAX_PARALLELの指定に従って並列検索(並列クエ リ)を行います。 パラメタの意味 多重度: 2~100の範囲で指定します。 - 111 - CLI_MAX_SQL 同一Connectionオブジェクト内で同時に作成できる、Statementオブジェクト、PreparedStatementオブジェクト、 CallableStatementオブジェクトの数を指定します。 指定形式 CLI_MAX_SQL = (オブジェクトの数) 省略時 CLI_MAX_SQL = (1024) パラメタの意味 オブジェクトの数: 2~32000の範囲で指定します。 CLI_OPL_BUFFER_SIZE Statementインタフェース、PreparedStatementインタフェース、CallableStatementインタフェースを使用して、同一SQL 文を複数回実行するときに、最初の実行で作成した処理手順を使用することによって処理効率の向上を図っていま す。 この領域は、サーバ側で獲得されます。 指定形式 CLI_OPL_BUFFER_SIZE = (バッファサイズ) 省略時 CLI_OPL_BUFFER_SIZE = (8192) パラメタの意味 バッファサイズ: SQLの処理手順を格納するバッファのサイズを1~10240で指定します。 単位はキロバイトです。 CLI_PARALLEL_SCAN アプリケーション単位またはコネクション単位に、データベースを並列に検索する(並列クエリ)か否かを指定します。 指定形式 CLI_PARALLEL_SCAN = ({YES | NO}) 省略時 CLI_PARALLEL_SCAN = (NO) パラメタの意味 YES: データベースを並列に検索します。この場合、そのアプリケーションの単一行SELECT文およびOPEN文を並 列検索で実行できます。 ただし、以下のいずれかの条件を満たす場合、並列検索は実行されず従来のアクセス手順でデータベース にアクセスします。 - 表がDSI分割されていない、または1つのDSIに対するアクセスの場合 - クラスタキーを利用したデータベースアクセスが可能な場合 - 探索条件にROW_IDを指定した検索の場合 - インデックスを利用したデータベースアクセスが可能な場合 NO: データベースを並列に検索しません。 - 112 - CLI_RCV_MODE ドライバのリカバリ水準を指定します。 指定形式 CLI_RCV_MODE = ({RCV | NRCV}) 省略時 CLI_RCV_MODE = (RCV) パラメタの意味 RCV: リカバリ機能を利用します。 この場合、リカバリを適用しないデータベースをアクセスすることはできますが、ログは取得されません。 NRCV: リカバリ機能を利用しません。 この場合、リカバリを適用するデータベースを更新することはできません。 CLI_R_LOCK 占有の単位を行にするかどうかを指定します。 CLI_R_LOCKにYESが指定された場合、以下の指定はできません。 - サーバ用の動作環境ファイルのDSO_LOCK - ctuneparamオプションのCLI_DSO_LOCK 指定形式 CLI_R_LOCK = ({YES | NO}) 省略時 システム用の動作環境ファイルの、R_LOCKの指定値 パラメタの意味 YES: 占有の単位を行にします。 NO: 占有の単位は、CLI_DSO_LOCKの指定に従います。 このパラメタを指定し、かつDSO_LOCKが指定されていない場合は、Symfoware Serverによって自動的に占 有の単位が選択されます。 注意 - 動作環境ファイルのR_LOCKがNOで、ConnectionインタフェースのsetTransactionIsolationメソッドを省略、または ConnectionインタフェースのsetTransactionIsolationメソッドでTRANSACTION_REPEATABLE_READを指定し た場合、独立性水準はSERIALIZABLEとなります。 - 動作環境ファイルのR_LOCKがYESで、ConnectionインタフェースのsetTransactionIsolationメソッドを省略、または ConnectionインタフェースのsetTransactionIsolationメソッドでTRANSACTION_SERIALIZABLEを指定した場 合、独立性水準はREPEATABLE READとなります。 CLI_ROUTINE_SNAP ROUTINE_SNAP機能を利用するかどうかを指定します。 - 113 - 指定形式 CLI_ROUTINE_SNAP = ({ON | OFF},ファイル名[,出力レベル]) 省略時 CLI_ROUTINE_SNAP = (OFF) パラメタの意味 ON: ROUTINE_SNAP機能を利用する場合に指定します。 OFF: ROUTINE_SNAP機能を利用しない場合に指定します。 ファイル名: SQL手続き文の実行情報の出力先のサーバ側のファイル名を、絶対パスで指定します。 指定されたファイルがすでに存在する場合、情報を追加して出力します。 出力レベル: 出力する情報のレベルとして、1または2を指定します。 省略した場合、2になります。 CLI_RESULT_BUFFER JDBCドライバは、データを取り出すときの性能を良くするため、複数の行を一度に取り出し、JDBCドライバ内部に格 納することができます。 この行を格納するバッファの数とサイズを指定します。 単位はキロバイトです。 また、1つのカーソルが1つのバッファを使用するので、複数のバッファを用意すれば、複数カーソルの操作の性能を 良くすることができます。 バッファを使用しない場合、個数に0を指定します。 この領域は、クライアント側とサーバ側で獲得されます。 バッファサイズを大きくするほど性能は良くなりますが、メモリが圧迫され、他のアプリケーションの実行に支障が発生 する場合があります。 バッファサイズを大きくする場合、メモリの空き容量に注意してください。 指定形式 CLI_RESULT_BUFFER = (個数,サイズ) 個数 使用するバッファの個数を0~255で指定します。 省略した場合、2になります。 サイズ 使用するバッファのサイズを1~10240で指定します。 単位はキロバイトです。 省略した場合、32になります。 CLI_SCAN_KEY_ARITHMETIC_RANGE 四則演算の検索範囲について、インデックス範囲検索、または、クラスタキーの検索を行うか否かを指定します。 指定形式 CLI_SCAN_KEY_ARITHMETIC_RANGE = ({YES | NO}) - 114 - 省略時 CLI_SCAN_KEY_ARITHMETIC_RANGE = (YES) パラメタの意味 YES: 四則演算の検索値について、インデックス範囲検索、または、クラスタキーの検索を行います。 NO: 四則演算の検索値について、インデックス範囲検索、または、クラスタキーの検索を行いません。 CLI_SCAN_KEY_CAST 探索条件のCASTオペランドに指定した列でインデックスの範囲検索、または、クラスタキー検索を行うか否かを指定 します。 指定形式 CLI_SCAN_KEY_CAST = ({YES | NO}) 省略時 CLI_SCAN_KEY_CAST = (YES) パラメタの意味 YES: 探索条件のCASTオペランドに指定した列でインデックスの範囲検索、または、クラスタキー検索を行います。 NO: 探索条件に指定したインデックスキーまたは、クラスタキーで範囲検索を行います。 CLI_SERVER_ENV_FILE 使用するサーバ用の動作環境ファイル名を指定します。 コネクションごとにサーバの実行環境を変更する場合に指定します。 指定形式 CLI_SERVER_ENV_FILE = (SQLサーバ名,ファイル名) パラメタの意味 SQLサーバ名: 接続するデータ資源名を記述します。 ファイル名: サーバ用の動作環境ファイル名を、絶対パスで指定します。 CLI_SORT_HASHAREA_SIZE ソート処理がレコードをハッシングして格納するための領域のサイズです。 単位はキロバイトです。 指定形式 CLI_SORT_HASHAREA_SIZE = (メモリサイズ) 省略時 省略した場合は、メモリ上のすべてのレコードをハッシングして格納します。 パラメタの意味 メモリサイズ: 2112~2097150の範囲で指定します。 - 115 - CLI_SORT_MEM_SIZE ソート処理のために作業用ソート領域としてサーバ側で使用するメモリの大きさを指定します。 省略した場合、システム用の動作環境ファイルにおけるSORT_MEM_SIZEの指定に従います。 この領域は、RDBプロセスのローカルメモリにセション単位に獲得されます。 指定形式 CLI_SORT_MEM_SIZE = (メモリサイズ) パラメタの意味 メモリサイズ: サーバ側で使用するメモリの大きさを64~2097150の範囲で指定します。 単位はキロバイトです。 CLI_SQL_LEVEL 予約語とSQL機能のレベルを設定します。 予約語とSQL機能のレベルを設定することで、キーワードの範囲と利用可能なSQLの機能を変更できます。 SQLの機能とそれを利用可能なレベルとの関係を以下に示します。 表に記載のない機能は、CLI_SQL_LEVELに関係なく利用可能です。 表5.1 CLI_SQL_LEVELと利用可能なSQLの機能一覧 CLI_SQL_LEVEL SQL2007 SQLの機能 XMLQUERY関数 述語 XMLEXISTS述語 ROWNUM SQL2000以上 ファンクションルーチン ロール プロシジャ例外事象 条件宣言 ハンドラ宣言 SIGNAL文 RESIGNAL文 SQL96以上 トリガ 行識別子 並列指定 SQL95以上 プロシジャルーチン SQL92以上 定数 日時定数 時間隔定数 データ型 日時型 時間隔型 BLOB型 順序定義 一時表定義 数値関数 POSITION EXTRACT CHAR_LENGTH - 116 - CLI_SQL_LEVEL SQLの機能 CHARACTER_LENGTH OCTET_LENGTH データ列値関数 SUBSTRING UPPER LOWER TRIM 日時値関数 CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CAST指定 NULLIF CASE式 COALESCE CASE 結合表 カーソルのSCROLL指定 ポイント SQL2007の関数名と同名のファンクションルーチンを定義している場合、関数とファンクションルーチンの動作の優先 順位は以下になります。 ファンクションルーチン名 へのスキーマ名修飾の 有無 CLI_SQL_LEVEL SQL2007 SQL2000 スキーマ名修飾有 ファンクションルーチン ファンクションルーチン スキーマ名修飾無 関数 ファンクションルーチン SQL文にSQL2007の関数名と同名のファンクションルーチンを指定している場合、関数が優先して動作することで、 ファンクションルーチンの結果と異なる結果になる場合があります。 ファンクションルーチンの動作を優先する場合は、CLI_SQL_LEVELにSQL2000を指定するか、ファンクションルー チン名をスキーマ名修飾してください。 指定形式 CLI_SQL_LEVEL = ({SQL88 | SQL92 | SQL95 | SQL96 | SQL2000 | SQL2007}) 省略時 CLI_SQL_LEVEL = (SQL2007) パラメタの意味 SQL88: 予約語とSQL機能のレベルをSQL88とします。 SQL92: 予約語とSQL機能のレベルをSQL92とします。 SQL95: 予約語とSQL機能のレベルをSQL95とします。 - 117 - SQL96: 予約語とSQL機能のレベルをSQL96とします。 SQL2000: 予約語とSQL機能のレベルをSQL2000とします。 SQL2007: 予約語とSQL機能のレベルをSQL2007とします。 CLI_SQL_TRACE アプリケーション単位でSQL性能情報を取得するかどうかを指定します。 指定形式 CLI_SQL_TRACE = ({ON | OFF},性能情報ファイル名[,出力レベル]) 省略時 CLI_SQL_TRACE = (OFF) パラメタの意味 ON: SQL性能情報取得機能を利用する場合に指定します。 OFF: SQL性能情報取得機能を利用しない場合に指定します。 性能情報ファイル名: 出力先のサーバ側のファイル名を、絶対パスで指定します。指定されたファイルがすでに存在する場合は、情 報を追加して出力します。 複数のアプリケーションが動作する場合は、個別のトレース情報を出力しません。 アプリケーションがマルチスレッド環境で動作する場合は、出力ファイル名の後にプロセスIDやセションIDなど の情報を自動的に付加して、個別のトレース情報を出力します。 出力レベル: 出力レベルには1または2を指定します。1を指定すると、DSOごとに集計された性能情報を出力します。2を指 定すると、DSI単位の情報までも出力します。 省略した場合は、2が指定されたものとみなします。 CLI_SS_RATE BETWEEN述語、比較述語、LIKE述語およびCONTAINS関数でインデックスを検索する時、インデックスの検索範 囲の割合を0以上1以下の小数で指定します。値は、小数第6位まで指定できます。 指定形式 CLI_SS_RATE = ([選択率1][,[選択率2][,[選択率3][,[選択率4][,[選択率5]]]]]) パラメタの意味 選択率1: BETWEEN述語を指定した場合のインデックスの検索範囲。 省略値は、0.2 選択率2: 比較述語“>”、“>=”、と“<”、“<=”でインデックスの検索開始位置および検索終了位置の両方が指定されて いる場合のインデックスの検索範囲。 省略値は、0.25 - 118 - 選択率3: 比較述語“>”、“>=”、“<”、“<=”でインデックスの検索開始位置または検索終了のみが指定されている場合 のインデックスの検索範囲。 省略値は、0.5 選択率4: LIKE述語を指定した場合のインデックスの検索範囲。 省略値は、0.4 選択率5: CONTAINS関数を指定した場合のインデックスの検索範囲。 省略値は、0.0001 CLI_TEMPORARY_INDEX_SIZE 一時表にインデックスを定義する場合に、インデックスのベース部とインデックス部の割付け量を指定します。単位は キロバイトです。 指定形式 CLI_TEMPORARY_INDEX_SIZE = (ベース部初期量,インデックス部初期量[,拡張量,拡張契機]) 省略時 この実行パラメタを省略した場合は、システム用の動作環境ファイルにおけるTEMPORARY_INDEX_SIZEの指 定に従います。 パラメタの意味 ベース部初期量: ベース部の初期量を64~2097150の範囲で指定します。 インデックス部初期量: インデックス部の初期量を64~2097150の範囲で指定します。 拡張量: インデックスのベース部の拡張量を32~2097150の範囲で指定します。インデックス部の拡張量は、ベース部の 5分の1の値となります。 拡張契機: ベース部およびインデックス部の拡張を行うタイミングとして、インデックスの空き容量を0~2097150の範囲で 指定します。つまり、インデックスの空き容量がここで指定した値になると、インデックスのベース部およびイン デックス部の拡張が行われます。 CLI_TEMPORARY_TABLE_SIZE 一時表を定義する場合に、表のデータ格納域の割付け量を指定します。 単位はキロバイトです。 指定形式 CLI_TEMPORARY_TABLE_SIZE = (初期量[,拡張量,拡張契機]) 省略時 この実行パラメタを省略した場合は、システム用の動作環境ファイルにおけるTEMPORARY_TABLE_SIZEの指 定に従います。 パラメタの意味 初期量: データ格納域の初期量を64~2097150の範囲で指定します。 - 119 - 拡張量: データ格納域の拡張量を32~2097150の範囲で指定します。 拡張契機: データ格納域の拡張を行うタイミングとして、表の空き容量を0~2097150の範囲で指定します。 つまり、表の空き容量がここで指定した値になると、表のデータ格納域の拡張が行われます。 CLI_TID_SORT インデックス検索と表データ取得のアクセスモデルにおいて、TIDソートを利用するか否かを指定します。 指定形式 CLI_TID_SORT = ({YES | NO}) 省略時 CLI_TID_SORT = (YES) パラメタの意味 YES: TIDソートを利用する。 NO: TIDソートを利用しない。 CLI_TID_UNION TIDユニオンマージのアクセスモデルを有効にするか否かを指定します。 指定形式 CLI_TID_UNION = ({YES | NO}) 省略時 CLI_TID_UNION = (YES) パラメタの意味 YES: TIDユニオンマージのアクセスモデルを有効にする。TIDユニオンマージが効果的と判断した場合に選択す る。 NO: TIDユニオンマージのアクセスモデルを有効にしない。 CLI_TRAN_SPEC SQL文が実行中にエラーとなった場合のトランザクションの対処方法を指定します。 指定形式 CLI_TRAN_SPEC = ({NONE | TRANSACTION_ROLLBACK}) 省略時 CLI_TRAN_SPEC = (NONE) パラメタの意味 NONE: 各プラットフォームのトランザクションの仕様に従います。 TRANSACTION_ROLLBACK: SQL文の実行がエラーとなった場合、トランザクションをロールバックします。 - 120 - CLI_TRAN_TIME_LIMIT 1つのトランザクションで使用可能な時間を指定します。単位は秒です。0を指定すると無制限になります。指定時間 を超過した場合には、トランザクションをロールバックして、接続中のコネクションを切断します。 指定形式 CLI_TRAN_TIME_LIMIT = (最大トランザクション実行時間) 省略時 CLI_TRAN_TIME_LIMIT = (0) パラメタの意味 最大トランザクション実行時間: 最大トランザクション実行を0~32767で指定します。 CLI_USQL_LOCK UPDATE文:探索およびDELETE文:探索において、更新レコードを検索するアクセスモデルの表の占有モードを指 定します。 指定形式 CLI_USQL_LOCK = ({SH | EX}) 省略時 CLI_USQL_LOCK = (SH) パラメタの意味 SH: 更新標的レコードを検索するアクセスモデルで共用モードで表を占有する。 EX: 更新標的レコードを検索するアクセスモデルで非共用モードで表を占有する。 CLI_WAIT_TIME サーバからのデータ受信の待ち時間を指定します。 単位は秒です。 このパラメタで指定された時間内に、サーバからのデータが受信できなかった場合、実行中のSQL文はエラーとなり、 コネクションは切断されます。 0を指定した場合、データが受信できるまで待ちます。 指定形式 CLI_WAIT_TIME = (待ち時間) 省略時 CLI_WAIT_TIME = (0) パラメタの意味 待ち時間: 待ち時間を0~32767で指定します。 注意 Solaris 9上でサーバからのデータ受信の待ち時間を監視したい場合は、接続先情報にリモートアクセス(RDB2_TCP 連携)を指定してください。 - 121 - CLI_WORK_ALLOC_SPACESIZE 作業用ソート領域および作業用テーブルとしてサーバ側で使用するファイルサイズの初期量、増分量、最大量、保 持指定を指定します。単位はキロバイトです。 指定形式 CLI_WORK_ALLOC_SPACESIZE = ([初期量][,[増分量][,[最大量][,[保持指定]]]]) 省略時 CLI_WORK_ALLOC_SPACESIZE = (10000,50000,,HOLD) パラメタの意味 初期量: 作業用ソート領域および作業用テーブルとして外部ファイルを作成する場合の初期量を5000~50000の範囲 で指定します。 省略した場合は10000が指定されたとみなします。 増分量: 作業用ソート領域および作業用テーブルとして作成した外部ファイルを拡張する場合の増分量を1000~100000 の範囲で指定します。 省略した場合は、50000が指定されたとみなします。 最大量: 作業用ソート領域および作業用テーブルとして作成する外部ファイルの最大量を5000~2000000の範囲で指 定します。 省略した場合は、WORK_PATHで指定したパス名のディスク容量となります。 保持指定: 以下の中から1つを選択します。省略した場合は、HOLDが指定されたものとみなします。 - FREE:作業用ソート領域および作業用テーブルとして作成した外部ファイルを初期量まで解放します。 - HOLD:作業用ソート領域および作業用テーブルとして作成した外部ファイルを保持します。 CLI_WORK_MEM_SIZE 作業用テーブルとしてサーバ側で使用するメモリのサイズです。 単位はキロバイトです。 指定形式 CLI_WORK_MEM_SIZE = (メモリサイズ) 省略時 省略した場合は、システム用の動作環境ファイルにおけるWORK_MEM_SIZEの指定に従います。この領域は、 RDBプロセスのローカルメモリにセション単位に獲得されます。 パラメタの意味 メモリサイズ: 64~2097150の範囲で指定します。 CLI_WORK_PATH サーバ側で使用する作業用ソート領域および作業用テーブルとして、サーバ側での獲得先ディレクトリを指定しま す。 省略した場合、システム用の動作環境ファイルにおけるWORK_PATHの指定に従います。 指定形式 CLI_WORK_PATH = (ワークパス名[,ワークパス名]・・・) - 122 - パラメタの意味 ワークパス名: サーバ側で使用する作業用ソート領域および作業用テーブルとして、サーバ側での獲得先ディレクトリを指定 します。 5.2.3.5 クライアント用の動作環境ファイルの指定について クライアント用の動作環境ファイルに、アプリケーションの動作環境を指定します。 参照 クライアント用の動作環境ファイルの作成については“アプリケーション開発ガイド(共通編)”の“クライアント用の動作環 境ファイルの作成”を参照してください。 クライアント用の動作環境ファイルの指定について JDBCドライバを利用したときのクライアント用の動作環境ファイルは、JDBCドライバのオプションとして以下の記述形式 で指定します。 記述形式 sqlrtenv =クライアント用の動作環境ファイル名 パラメタの意味 クライアント用の動作環境ファイル名: クライアント用の動作環境ファイル名は、絶対パスで指定します。 設定例 sqlrtenv = /opt/FJSVsymcl/etc/clientenv/fssqlenvj sqlrtenvの指定の省略時 sqlrtenvの指定を省略した場合、以下のパスが指定されたとみなします。 クライアントインストール先¥etc¥clientenv¥fssqlenvj /opt/FJSVsymcl/etc/clientenv/fssqlenvj /opt/FJSVsymcl/etc/clientenv/fssqlenvj 動作環境パラメタの指定の優先順位 動作環境の設定項目の中には、システム用の動作環境ファイル、サーバ用の動作環境ファイル、ctuneparamオプション およびクライアント用の動作環境ファイルで重複して指定できるパラメタがあります。重複して指定した場合の優先順位 は、以下のとおりです。 1. サーバ用の動作環境ファイル 2. ctuneparamオプション 3. クライアント用の動作環境ファイル 4. システム用の動作環境ファイル - 123 - 参照 JDBCドライバを利用する場合のクライアント用の動作環境ファイルに指定可能なパラメタは“アプリケーション開発ガイド (共通偏)”の“クライアント用の動作環境ファイル”を参照してください。 5.2.4 symjddefdsコマンドによるJDBCデータソースの登録 symjddefdsコマンドを使用することで、GUIを表示しないで、JDBCデータソースを登録することができます。 symjddefdsコマンドでは、JDBCデータソース定義ファイルの内容を参照して、JDBCデータソースを登録します。 symjddefdsコマンドを使用した、JDBCデータソース登録の概要について説明します。 参照 symjddefdsコマンドの詳細については、“コマンドリファレンス”を参照してください。 5.2.4.1 JDBCデータソース定義ファイルとは JDBCデータソース定義ファイルとは、symjddefdsコマンドを使用してJDBCデータソースを定義する際に使用する、任意 のファイルです。接続先情報や、オプションを記入します。 例 jdbc:symford://myhost:26551/COMPANY;user=USER1;password=PASS1 (1) (2) (1) 接続先情報 (2) オプション 接続先情報の指定方法は、“5.2.4.2 接続先情報の設定”を参照してください。 オプションの指定方法は、“5.2.4.3 オプションの設定”を参照してください。 5.2.4.2 接続先情報の設定 JDBCデータソース定義ファイルで、JDBCデータソースの接続先を特定します。 指定方法は、データベースへの接続方法によって異なります。 記述形式 ローカルアクセスの場合 jdbc:symfold:///[<db_sys>.]<db_env>[;<options>] リモートアクセス(RDB2_TCP連携)の場合 jdbc:symford://<host>:<port_no>/<db_env>[;<options>] - 124 - 引数 <host> 接続するサーバの18バイト以内のホスト名またはIPアドレスを指定します。 省略することはできません。 <port_no> RDB2_TCP連携で使用するポート番号を指定します。 ポート番号については、システム管理者に確認してください。 省略することはできません。 <db_sys> RDBシステム名を指定します。 このパラメタは、Symfoware/RDBにRDBシステム名を付けて運用する場合にだけ指定します。 RDBシステム名については、システム管理者に確認してください。 省略した場合は、システム名なしになります。 <db_env> データ資源名を指定します。 データ資源名については、システム管理者に確認してください。 省略することはできません。 <options> JDBCドライバのオプションを以下の形式で指定します。 記述形式 オプション名 = 指定する値 指定可能なオプションについては、“5.2.4.3 オプションの設定”を参照してください。 オプションは以下のような形式で複数指定することができます。 例 user=UID;password=PWD 記述例 ローカルアクセスの場合 jdbc:symfold:///COMPANY リモートアクセス(RDB2_TCP連携)で、オプションにuser、passwordを指定する場合 jdbc:symford://myhost:26551/COMPANY;user=UID;password=PWD 注意 1つのJDBCデータソース定義ファイルに、複数の接続先情報は指定できません。接続先情報の違うJDBCデータソー スを作成する場合は、JDBCデータソース定義ファイルを複数作成してください。 5.2.4.3 オプションの設定 JDBCドライバで指定可能なオプションは、以下のとおりです。 ・ autoclosestatement - 125 - ・ ctuneparam ・ default_isolation ・ default_readonly ・ javaconverter ・ lang ・ lowercasename ・ maxconnections ・ maxpooledconnections ・ password ・ schema ・ statementcache ・ user ・ sqlrtenv autoclosestatement ステートメントキャッシュ機能の利用時に、PreparedStatementオブジェクトおよびCallableStatementオブジェクトのクローズを JDBCドライバが自動的に行うかどうかを指定します。 指定形式 autoclosestatement={YES|NO} 省略時 autoclosestatement=NO パラメタの意味 YES:ステートメントキャッシュ機能利用時に、PreparedStatementオブジェクトやCallableStatementオブジェクトを自動 でクローズします。 NO :自動クローズは行いません。 注意 このオプションは、ステートメントキャッシュ数に1~32000が指定された場合に指定可能です。 実行した文の数が、オプションstatementcacheで設定されたキャッシュ数に達した場合、以降実行される文はキャッシュし ませんが、自動クローズの対象にもなりません。 ctuneparam ctuneparamオプションには、Symfoware Serverのクライアント用の動作環境ファイルに相当する指定をすることができま す。詳細は、“5.2.3.4 ctuneparamオプションについて”を参照してください。 指定形式 ctuneparam=パラメタ名 パラメタの意味 ctuneparamオプションで指定するパラメタ - 126 - 記述例 CLI_MAX_SQLとCLI_WAIT_TIMEを指定した場合 ctuneparam='CLI_MAX_SQL=(255);CLI_WAIT_TIME=(30)' 注意 ctuneparamオプションに複数のパラメタを指定する場合、値を“;”(セミコロン)で区切って設定します。 default_isolation 独立性水準の初期値を指定します。 指定形式 default_isolation={READ_UNCOMMITTED | READ_COMMITTED | REPEATABLE_READ | SERIALIZABLE} 省略時 default_isolation=SERIALIZABLE パラメタの意味 READ_UNCOMMITTED: 独立性水準の初期値をREAD UNCOMMITTEDとします。 READ_COMMITTED: 独立性水準の初期値をREAD COMMITTEDとします。 REPEATABLE_READ: 独立性水準の初期値をREPEATABLE READとします。 SERIALIZABLE: 独立性水準の初期値をSERIALIZABLEとします。 注意 ・ システム用の動作環境ファイルのR_LOCKがNO、またはctuneparamオプションのCLI_R_LOCKがNOの場合、 default_isolationにREPEATABLE_READを指定しても、独立性水準はSERIALIZABLEとなります。 ・ システム用の動作環境ファイルのR_LOCKがYES、またはctuneparamオプションのCLI_R_LOCKがYESの場合、 default_isolationにSERIALIZABLEを指定しても、独立性水準は REPEATABLE READとなります。 ・ サ ー バ 用 の 動 作 環 境 フ ァ イ ル の DSO_LOCK ま た は ctuneparam オ プ シ ョ ン の CLI_DSO_LOCK を 指 定 し て 、 default_isolationを指定した場合は、サーバ接続時にエラーが発生します。 default_readonly トランザクションアクセスモードの初期値を指定します。 指定形式 default_readonly={false | true} 省略時 default_readonly=false パラメタの意味 false: トランザクションアクセスモードの初期値をREAD WRITEとします。 - 127 - true: トランザクションアクセスモードの初期値をREAD ONLYとします。 注意 サ ー バ 用 の 動 作 環 境 フ ァ イ ル の DSO_LOCK ま た は ctuneparam オ プ シ ョ ン の CLI_DSO_LOCK を 指 定 し て 、 default_readonlyを指定した場合は、サーバ接続時にエラーが発生します。 javaconverter JDBCドライバがコード変換時に使用する、Javaのエンコーディングを指定します。 指定形式 javaconverter=エンコーディング名 省略時 クライアント用の動作環境ファイルのJAVA_CONVERTERパラメタの指定に従います。 パラメタの意味 JDBCドライバがコード変換時に使用する、Javaのエンコーディングを指定します。 JavaVMでサポートされているエンコーディング名を指定してください。 アプリケーション実行環境のロケールがCで、ASCIIコード範囲外の文字データを利用する場合、javaconverterオプ ションで、対象データのエンコーディングを指定してください。 lang JDBCドライバで返却するエラーメッセージの言語を指定します。 指定形式 lang={ JA | EN } 省略時 日本語のOS環境で本オプションが省略された場合、JAが指定されたとみなします。 その他のOS環境で本オプションが省略された場合、ENが指定されたとみなします。 パラメタの意味 JDBCドライバで返却するエラーメッセージの言語を指定します。 JAが指定された場合、日本語のエラーメッセージを出力します。 ENが指定された場合、英語のエラーメッセージを出力します。 lowercasename 列名に全角小文字を使用していて、ResultSet.getXXXメソッドを使用する場合に、指定した列名を正しく認識させるため に指定します。 指定形式 lowercasename={ YES | NO } 省略時 クライアント用の動作環境ファイルのLOWERCASE_NAMEパラメタの指定に従います。 パラメタの意味 YES:Symfoware/RDBの表定義で、列名に全角小文字を使用している場合に指定します。 NO:Symfoware/RDBの表定義で、列名に全角小文字を使用していない場合に指定します。 - 128 - maxconnections データソースごとに、同時に接続可能なコネクション数の上限を指定します。 指定形式 maxconnections=最大コネクション数 省略時 maxconnections=256 パラメタの意味 データソースごとに、同時に接続可能なコネクション数の上限を、1~2147483647の範囲で指定します。 注意 maxconnectionsオプションは、DataSourceインタフェースを利用した接続で、利用可能です。 maxpooledconnections データソースごとに、再利用可能なコネクション数の上限を指定します。 指定形式 maxpooledconnections=最大プールコネクション数 省略時 maxpooledconnections=256 パラメタの意味 データソースごとに、再利用可能なコネクション数の上限を、0~2147483647の範囲で指定します。 0を指定した場合、コネクションは再利用されずに切断されます。 1以上を指定した場合、Connectionインタフェースのcloseメソッドを実行しても、データベースとの接続は切断されませ ん。コネクションは再利用可能な状態になります。 ただし、maxpooledconnectionsオプションの指定値を超えるコネクションは、切断されます。 注意 maxconnectionsオプションに指定された値よりも大きい値は指定できません。 maxpooledconnectionsオプションは、DataSourceインタフェースを利用した接続で、利用可能です。 password データベースに接続するためのパスワードを指定します。 省略した場合、getConnectionメソッドの引数に、必ず指定してください。ただし、ローカルのSymfoware/RDBと接続する 場合、またはWindows(R) 2000以外を利用し、リモートアクセスで接続先ホスト名に“localhost”、またはループバックアド レスが指定された場合は、パスワードの指定は不要です。 指定形式 password=パスワード schema アプリケーション内で使用する、SQL文に対するデフォルトスキーマ名を指定します。 指定形式 schema=スキーマ名 - 129 - 省略時 デフォルトスキーマ名なし statementcache ステートメントキャッシュ機能でキャッシュする、文の上限を指定します。 指定形式 statementcache=キャッシュ数 省略時 statementcache=32 パラメタの意味 ステートメントキャッシュ機能でキャッシュするSQL文の上限を、0~32000の範囲で指定します。 0を指定した場合、ステートメントキャッシュ機能は無効になり、SQL文はキャッシュされません。 キャッシュする文の数の見積りは、以下となります。 キャッシュする文の数 = prepareStatementメソッドまたは、 prepareCallメソッドで指定するSQL文の数 注意 同じSQL文でも以下の場合は別のSQL文として計算してください。 ・ 大文字と小文字の違いがある場合 ・ 結果セットのタイプが異なる場合 ・ 結果セットの並行処理のタイプが異なる場合 user データベースに接続するためのユーザIDを指定します。 省略した場合、getConnectionメソッドの引数に、必ず指定してください。ただし、ローカルのSymfoware/RDBと接続する 場合、またはWindows(R) 2000以外を利用し、リモートアクセスで接続先ホスト名に“localhost”、またはループバックアド レスが指定された場合は、ユーザIDの指定は不要です。 指定形式 user=ユーザID sqlrtenv クライアント用の動作環境ファイルを指定します。 指定形式 sqlrtenv =クライアント用の動作環境ファイル名 省略時 以下のパスが指定されたとみなします。 クライアントインストール先¥etc¥clientenv¥fssqlenvj /opt/FJSVsymcl/etc/clientenv/fssqlenvj /opt/FJSVsymcl/etc/clientenv/fssqlenvj - 130 - パラメタの意味 クライアント用の動作環境ファイル名: クライアント用の動作環境ファイル名は、絶対パスで指定します。 5.3 アプリケーションの実行 利用形態に合わせた環境設定およびアプリケーションの起動方法について説明します。 5.3.1 Interstage Application Serverを使用する場合の環境設定 Interstage Application Serverを使用する場合の環境設定について、プラットフォームごとに説明します。 JDBC ドライバは3種類用意されています。 JDBC2.X対応ドライバモジュールは、fjsymjdbc2.jar となります。 JDBC3.X対応ドライバモジュールは、fjsymjdbc3.jar となります。 JDBC4.X対応ドライバモジュールは、fjsymjdbc4.jar となります。 以下の文中で<JDBCドライバモジュール>で示される部分には、使用するJDKの環境に合わせて適切なJDBCドライバを 設定してください。 JDBCドライバとJDKとの組合せについては、“1.4 JDKとの組合せ”を参照してください。 Windows(R)の場合 Interstage Application Serverでは、Interstage Application Serverのシステム全体の設定と、ワークユニット単位の設定の、 2種類の設定方法が選択できます。 ここでは、ワークユニット単位での設定を例に説明します。 参照 詳細は“Interstage 管理コンソールヘルプ”を参照してください。 クラスパスの設定 Interstage 管理コンソールの[システム]の[環境設定]にある[J2EEプロパティ]のクラスパスに、以下の設定をしてくださ い。 【記述形式】 <install-dir>\JDBC\fjjdbc\lib\<JDBCドライバモジュール> <install-dir>: Symfoware Server クライアント機能インストール先ディレクトリ <JDBCドライバモジュール>: 使用するJDKの環境に合ったJDBCドライバモジュール パスの設定 Interstage 管理コンソールの[システム]の[ワークユニット]にある[ワークユニット名]のなかの[環境設定タブ画面]にある [ワークユニット設定]のパスに、以下の設定をしてください。 【記述形式】 <install-dir>\JDBC\fjjdbc\bin <win-system>\ESQL\BIN <install-dir>: Symfoware Server クライアント機能インストール先ディレクトリ - 131 - <win-system>: Windows(R)システムディレクトリ 設定例 JDBC2.X対応ドライバを利用する場合: クラスパス C:\SFWCLNT\JDBC\fjjdbc\lib\fjsymjdbc2.jar パス C:\SFWCLNT\JDBC\fjjdbc\bin C:\WINNT\ESQL\BIN JDBC3.X対応ドライバを利用する場合: クラスパス C:¥SFWCLNT¥JDBC¥fjjdbc¥lib¥fjsymjdbc3.jar パス C:¥SFWCLNT¥JDBC¥fjjdbc\bin C:\WINNT\ESQL\BIN JDBC4.X対応ドライバを利用する場合: クラスパス C:\SFWCLNT\JDBC\fjjdbc\lib\fjsymjdbc4.jar パス C:\SFWCLNT\JDBC\fjjdbc\bin C:\WINNT\ESQL\BIN 環境変数CLASSPATHの設定 symjddefdsコマンドを使用する場合、環境変数CLASSPATHに以下を設定してください。 注意 環境設定は、インストール時に自動で行われます。 通常、以下を設定する必要はなく、JDBC4.X対応ドライバを利用する場合の環境変数が設定されます。 ただし、アップグレードインストール時に9.x以前の環境で使用していたアプリケーションをそのまま使用する場合は、 JDBC2.X対応ドライバを利用する場合の環境変数を設定する必要があります。 【記述形式】 <install-dir>\JDBC\fjjdbc\lib\<JDBCドライバモジュール> <install-dir>: Symfoware Server クライアント機能インストール先ディレクトリ <JDBCドライバモジュール>: 使用するJDKの環境に合ったJDBCドライバモジュール 設定例 JDBC2.X対応ドライバを利用する場合: set CLASSPATH=C:\SFWCLNT\JDBC\fjjdbc\lib\fjsymjdbc2.jar;%CLASSPATH% JDBC3.X対応ドライバを利用する場合: set CLASSPATH=C:¥SFWCLNT¥JDBC¥fjjdbc¥lib¥fjsymjdbc3.jar;%CLASSPATH% - 132 - JDBC4.X対応ドライバを利用する場合: set CLASSPATH=C:\SFWCLNT\JDBC\fjjdbc\lib\fjsymjdbc4.jar;%CLASSPATH% 環境変数PATHの設定 Interstage JMXサービス起動前に、環境変数PATHに以下を設定してください。 注意 環境設定は、インストール時に自動で行われます。 通常、以下を設定する必要はありません。 【記述形式】 <install-dir>\JDBC\fjjdbc\bin <win-system>\ESQL\BIN <install-dir>: Symfoware Server クライアント機能インストール先ディレクトリ <win-system>: Windows(R)システムディレクトリ symjddefdsコマンドを使用する場合、環境変数PATHに、JDKの設定が必要です。 使用するJDBCドライバに対応したJDKの設定を行ってください。 JDBCドライバとJDKとの組合せについては、“1.4 JDKとの組合せ”を参照してください。 富士通製のJDKを例に説明します。 注意 環境設定は、インストール時に自動で行われます。 通常、以下を設定する必要はありません。 【記述形式】 <install-dir>\JDBC\fjjdbc\bin <Interstage-install-dir>\JDK14\bin <install-dir>: Symfoware Server クライアント機能インストール先ディレクトリ <Interstage-install-dir>: Interstage Application Serverインストール先ディレクトリ 設定例 set PATH=C:\SFWCLNT\JDBC\fjjdbc\bin;%PATH% set PATH=C:\WINNT\ESQL\BIN;%PATH% set PATH=C:\Interstage\JDK14\bin;%PATH% Solaris(TM)の場合 Interstage Application Serverを使用する場合の環境設定について説明します。 - 133 - 参照 詳細は“Interstage 管理コンソールヘルプ”を参照してください。 クラスパスの設定 Interstage 管理コンソールの[システム]の[環境設定]にある[J2EEプロパティ]のクラスパスに、以下の設定をしてくださ い。 【記述形式】 <install-dir>/FJSVsymjd/fjjdbc/lib/<JDBCドライバモジュール> <install-dir>: JDBCドライバインストール先ディレクトリ <JDBCドライバモジュール>: 使用するJDKの環境に合ったJDBCドライバモジュール ライブラリパスの設定 Interstage 管理コンソールの[システム]の[ワークユニット]にある[ワークユニット名]のなかの[環境設定タブ画面]の[ワー クユニット設定]のライブラリパスに、以下の設定をしてください。 【記述形式】 <install-dir>/FJSVsymjd/fjjdbc/bin <RDB-install-dir>/FSUNrdb2b/lib <install-dir>: JDBCドライバインストール先ディレクトリ <RDB-install-dir>: FSUNrdb2bインストール先ディレクトリ 設定例 JDBC2.X対応ドライバを利用する場合: クラスパス /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc2.jar ライブラリパス /opt/FJSVsymjd/fjjdbc/bin /opt/FSUNrdb2b/lib JDBC3.X対応ドライバを利用する場合: クラスパス /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc3.jar ライブラリパス /opt/FJSVsymjd/fjjdbc/bin /opt/FSUNrdb2b/lib JDBC4.X対応ドライバを利用する場合: クラスパス /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc4.jar ライブラリパス /opt/FJSVsymjd/fjjdbc/bin /opt/FSUNrdb2b/lib - 134 - 環境変数LD_LIBRARY_PATHの設定 Interstage JMXサービス起動前に、環境変数LD_LIBRARY_PATHに以下を設定してください。 【記述形式】 LD_LIBRARY_PATH=<install-dir>/FJSVsymjd/fjjdbc/bin LD_LIBRARY_PATH=<RDB-install-dir>/FSUNrdb2b/lib <install-dir>: JDBCドライバインストール先ディレクトリ <RDB-install-dir>: FSUNrdb2bインストール先ディレクトリ 設定例 % setenv LD_LIBRARY_PATH /opt/FJSVsymjd/fjjdbc/bin:${LD_LIBRARY_PATH} % setenv LD_LIBRARY_PATH /opt/FSUNrdb2b/lib:${LD_LIBRARY_PATH} 環境変数CLASSPATHの設定 symjddefdsコマンドを使用する場合、環境変数CLASSPATHに以下を設定してください。 【記述形式】 CLASSPATH=<install-dir>/FJSVsymjd/fjjdbc/lib/<JDBCドライバモジュール> <install-dir>: JDBCドライバインストール先ディレクトリ <JDBCドライバモジュール>: 使用するJDKの環境に合ったJDBCドライバモジュール 設定例 JDBC2.X対応ドライバを利用する場合: % setenv CLASSPATH /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc2.jar:${CLASSPATH} JDBC3.X対応ドライバを利用する場合: % setenv CLASSPATH /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc3.jar:${CLASSPATH} JDBC4.X対応ドライバを利用する場合: % setenv CLASSPATH /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc4.jar:${CLASSPATH} PATHの設定 symjddefdsコマンドを使用する場合、JDKの設定が必要です。 富士通製のJDKを例に説明します。 【記述形式】 <install-dir>/FJSVsymjd/fjjdbc/bin <JDK-install-dir>/FJSVawjbk/jdk14/bin <install-dir>: JDBCドライバインストール先ディレクトリ <JDK-install-dir>: FJSVawjbkパッケージインストール先ディレクトリ 設定例 % setenv PATH /opt/FJSVawjbk/jdk14/bin:${PATH} % setenv PATH /opt/FJSVsymjd/fjjdbc/bin:${PATH} - 135 - Linuxの場合 Interstage Application Serverを使用する場合の環境設定について説明します。 参照 詳細は“Interstage 管理コンソールヘルプ”を参照してください。 クラスパスの設定 Interstage 管理コンソールの[システム]の[環境設定]にある[J2EEプロパティ]のクラスパスに、以下の設定をしてくださ い。 【記述形式】 <install-dir>/FJSVsymjd/fjjdbc/lib/<JDBCドライバモジュール> <install-dir>: JDBCドライバインストール先ディレクトリ <JDBCドライバモジュール>: 使用するJDKの環境に合ったJDBCドライバモジュール ライブラリパスの設定 Interstage 管理コンソールの[システム]の[ワークユニット]にある[ワークユニット名]のなかの[環境設定タブ画面]の[ワー クユニット設定]のライブラリパスに、以下の設定をしてください。 【記述形式】 <install-dir>/FJSVsymjd/fjjdbc/bin <RDB-install-dir>/FJSVrdb2b/lib <install-dir>: JDBCドライバインストール先ディレクトリを指定します。 <RDB-install-dir>: FJSVrdb2bインストール先ディレクトリを指定します。 設定例 JDBC2.X対応ドライバを利用する場合: クラスパス /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc2.jar ライブラリパス /opt/FJSVsymjd/fjjdbc/bin /opt/FJSVrdb2b/lib JDBC3.X対応ドライバを利用する場合: クラスパス /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc3.jar ライブラリパス /opt/FJSVsymjd/fjjdbc/bin /opt/FJSVrdb2b/lib JDBC4.X対応ドライバを利用する場合: クラスパス /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc4.jar - 136 - ライブラリパス /opt/FJSVsymjd/fjjdbc/bin /opt/FJSVrdb2b/lib 環境変数LD_LIBRARY_PATHの設定 Interstage JMXサービス起動前に、環境変数LD_LIBRARY_PATHに以下を設定してください。 【記述形式】 LD_LIBRARY_PATH=<install-dir>/FJSVsymjd/fjjdbc/bin LD_LIBRARY_PATH=<RDB-install-dir>/FJSVrdb2b/lib <install-dir>: JDBCドライバインストール先ディレクトリ <RDB-install-dir>: FJSVrdb2bインストール先ディレクトリ 設定例 TCシェルの場合 % setenv LD_LIBRARY_PATH /opt/FJSVsymjd/fjjdbc/bin:${LD_LIBRARY_PATH} % setenv LD_LIBRARY_PATH /opt/FJSVrdb2b/lib:${LD_LIBRARY_PATH} bashの場合 $ LD_LIBRARY_PATH=/opt/FJSVsymjd/fjjdbc/bin:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH $ LD_LIBRARY_PATH=/opt/FJSVrdb2b/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH 環境変数CLASSPATHの設定 symjddefdsコマンドを使用する場合、環境変数CLASSPATHに以下を設定してください。 【記述形式】 CLASSPATH=<install-dir>/FJSVsymjd/fjjdbc/lib/<JDBCドライバモジュール> <install-dir>: JDBCドライバインストール先ディレクトリ <JDBCドライバモジュール>: 使用するJDKの環境に合ったJDBCドライバモジュール 設定例 TCシェルの場合 JDBC2.X対応ドライバを利用する場合: % setenv CLASSPATH /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc2.jar:${CLASSPATH} JDBC3.X対応ドライバを利用する場合: % setenv CLASSPATH /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc3.jar:${CLASSPATH} JDBC4.X対応ドライバを利用する場合: % setenv CLASSPATH /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc4.jar:${CLASSPATH} bashの場合 JDBC2.X対応ドライバを利用する場合: $ CLASSPATH=/opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc2.jar:$CLASSPATH;export CLASSPATH - 137 - JDBC3.X対応ドライバを利用する場合: $ CLASSPATH=/opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc3.jar:$CLASSPATH;export CLASSPATH JDBC4.X対応ドライバを利用する場合: $ CLASSPATH=/opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc4.jar:$CLASSPATH;export CLASSPATH PATHの設定 symjddefdsコマンドを使用する場合、JDKの設定が必要です。 富士通製のJDKを例に説明します。 【記述形式】 <install-dir>/FJSVsymjd/fjjdbc/bin <JDK-install-dir>/FJSVawjbk/jdk14/bin <install-dir>: JDBCドライバインストール先ディレクトリ <JDK-install-dir>: FJSVawjbkパッケージインストール先ディレクトリ 設定例 TCシェルの場合 % setenv PATH /opt/FJSVawjbk/jdk14/bin:${PATH} % setenv PATH /opt/FJSVsymjd/fjjdbc/bin:${PATH} bashの場合 $ PATH=/opt/FJSVawjbk/jdk14/bin:$PATH; export PATH $ PATH=/opt/FJSVsymjd/fjjdbc/bin:$PATH; export PATH 5.3.2 Javaアプリケーションの環境設定 Javaアプリケーションの環境設定について、プラットフォームごとに説明します。 JDBCドライバは3種類用意されています。 JDBC2.X対応ドライバモジュールは、fjsymjdbc2.jar となります。 JDBC3.X対応ドライバモジュールは、fjsymjdbc3.jar となります。 JDBC4.X対応ドライバモジュールは、fjsymjdbc4.jar となります。 以下の文中で<JDBCドライバモジュール>で示される部分には、使用するJDKの環境に合わせて適切なJDBCドライバを 設定してください。 JDBCドライバとJDKとの組合せについては、“1.4 JDKとの組合せ”を参照してください。 Windows(R)の場合 JDBCドライバの実行環境に以下の環境設定を行う必要があります。 注意 環境設定は、インストール時に自動で行われます。 通常、以下を設定する必要はなく、JDBC4.X対応ドライバを利用する場合の環境変数が設定されます。 ただし、アップグレードインストール時に9.x以前の環境で使用していたアプリケーションをそのまま使用する場合は、JDBC2.X 対応ドライバを利用する場合の環境変数を設定する必要があります。 - 138 - CLASSPATHの設定 【記述形式】 CLASSPATH=<install-dir>\JDBC\fjjdbc\lib\<JDBCドライバモジュール> <install-dir>: Symfoware Server クライアント機能インストール先ディレクトリ <JDBCドライバモジュール>: 使用するJDKの環境に合ったJDBCドライバモジュール PATHの設定 【記述形式】 PATH=<install-dir>\JDBC\fjjdbc\bin <install-dir>: Symfoware Server クライアント機能インストール先ディレクトリ symjddefdsコマンドを使用する場合、環境変数PATHに、JDKの設定が必要です。 富士通製のJDKを例に説明します。 【記述形式】 <Interstage-install-dir>\JDK14\bin <Interstage-install-dir>: Interstage Application Serverインストール先ディレクトリ 設定例 JDBC2.X対応ドライバを利用する場合: set CLASSPATH=C:\SFWCLNT\JDBC\fjjdbc\lib\fjsymjdbc2.jar;%CLASSPATH% set PATH=C:\SFWCLNT\JDBC\fjjdbc\bin;%PATH% set PATH=C:\Interstage\JDK14\bin;%PATH% JDBC3.X対応ドライバを利用する場合: set CLASSPATH=C:¥SFWCLNT¥JDBC¥fjjdbc¥lib¥fjsymjdbc3.jar;%CLASSPATH% set PATH=C:¥SFWCLNT¥JDBC¥fjjdbc¥bin;%PATH% set PATH=C:¥Interstage¥JDK14¥bin;%PATH% JDBC4.X対応ドライバを利用する場合: set CLASSPATH=C:\SFWCLNT\JDBC\fjjdbc\lib\fjsymjdbc4.jar;%CLASSPATH% set PATH=C:\SFWCLNT\JDBC\fjjdbc\bin;%PATH% set PATH=C:\Interstage\JDK16\bin;%PATH% Solaris(TM)の場合 JDBCドライバの実行環境に以下の環境設定を行う必要があります。 CLASSPATHの設定 【記述形式】 CLASSPATH=<install-dir>/FJSVsymjd/fjjdbc/lib/<JDBCドライバモジュール> <install-dir>: JDBCドライバインストール先ディレクトリ <JDBCドライバモジュール>: 使用するJDKの環境に合ったJDBCドライバモジュール - 139 - LD_LIBRARY_PATHの設定 【記述形式】 LD_LIBRARY_PATH=<install-dir>/FJSVsymjd/fjjdbc/bin LD_LIBRARY_PATH=<RDB-install-dir>/FSUNrdb2b/lib <install-dir>: JDBCドライバインストール先ディレクトリ <RDB-install-dir>: FSUNrdb2bインストール先ディレクトリ PATHの設定 symjddefdsコマンドを使用する場合、JDKの設定が必要です。 富士通製のJDKを例に説明します。 【記述形式】 <install-dir>/FJSVsymjd/fjjdbc/bin <JDK-install-dir>/FJSVawjbk/jdk14/bin <install-dir>: JDBCドライバインストール先ディレクトリ <JDK-install-dir>: FJSVawjbkパッケージインストール先ディレクトリ 設定例 Cシェルの場合 JDBC2.X対応ドライバを利用する場合: % % % % % setenv setenv setenv setenv setenv CLASSPATH /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc2.jar:${CLASSPATH} LD_LIBRARY_PATH /opt/FJSVsymjd/fjjdbc/bin:${LD_LIBRARY_PATH} LD_LIBRARY_PATH /opt/FSUNrdb2b/lib:${LD_LIBRARY_PATH} PATH /opt/FJSVawjbk/jdk14/bin:${PATH} PATH /opt/FJSVsymjd/fjjdbc/bin:${PATH} JDBC3.X対応ドライバを利用する場合: % % % % % setenv setenv setenv setenv setenv CLASSPATH /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc3.jar:${CLASSPATH} LD_LIBRARY_PATH /opt/FJSVsymjd/fjjdbc/bin:${LD_LIBRARY_PATH} LD_LIBRARY_PATH /opt/FSUNrdb2b/lib:${LD_LIBRARY_PATH} PATH /opt/FJSVawjbk/jdk14/bin:${PATH} PATH /opt/FJSVsymjd/fjjdbc/bin:${PATH} JDBC4.X対応ドライバを利用する場合: % % % % % setenv setenv setenv setenv setenv CLASSPATH /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc4.jar:${CLASSPATH} LD_LIBRARY_PATH /opt/FJSVsymjd/fjjdbc/bin:${LD_LIBRARY_PATH} LD_LIBRARY_PATH /opt/FSUNrdb2b/lib:${LD_LIBRARY_PATH} PATH /opt/FJSVawjbk/jdk16/bin:${PATH} PATH /opt/FJSVsymjd/fjjdbc/bin:${PATH} bash、Bシェル、Kシェルの場合 JDBC2.X対応ドライバを利用する場合: $ $ $ $ $ CLASSPATH=/opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc2.jar:$CLASSPATH; export CLASSPATH LD_LIBRARY_PATH=/opt/FJSVsymjd/fjjdbc/bin:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH LD_LIBRARY_PATH=/opt/FSUNrdb2b/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH PATH=/opt/FJSVawjbk/jdk14/bin:${PATH}; export PATH PATH=/opt/FJSVsymjd/fjjdbc/bin:${PATH}; export PATH - 140 - JDBC3.X対応ドライバを利用する場合: $ $ $ $ $ CLASSPATH=/opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc3.jar:$CLASSPATH; export CLASSPATH LD_LIBRARY_PATH=/opt/FJSVsymjd/fjjdbc/bin:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH LD_LIBRARY_PATH=/opt/FSUNrdb2b/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH PATH=/opt/FJSVawjbk/jdk14/bin:${PATH}; export PATH PATH=/opt/FJSVsymjd/fjjdbc/bin:${PATH}; export PATH JDBC4.X対応ドライバを利用する場合: $ $ $ $ $ CLASSPATH=/opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc4.jar:$CLASSPATH; export CLASSPATH LD_LIBRARY_PATH=/opt/FJSVsymjd/fjjdbc/bin:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH LD_LIBRARY_PATH=/opt/FSUNrdb2b/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH PATH=/opt/FJSVawjbk/jdk16/bin:${PATH}; export PATH PATH=/opt/FJSVsymjd/fjjdbc/bin:${PATH}; export PATH Linuxの場合 JDBCドライバの実行環境に以下の環境設定が必要です。 CLASSPATHの設定 【記述形式】 CLASSPATH=<install-dir>/FJSVsymjd/fjjdbc/lib/<JDBCドライバモジュール> <install-dir>: JDBCドライバインストール先ディレクトリ <JDBCドライバモジュール>: 使用するJDKの環境に合ったJDBCドライバモジュール LD_LIBRARY_PATHの設定 【記述形式】 LD_LIBRARY_PATH=<install-dir>/FJSVsymjd/fjjdbc/bin LD_LIBRARY_PATH=<RDB-install-dir>/FJSVrdb2b/lib <install-dir>: JDBCドライバインストール先ディレクトリを指定します。 <RDB-install-dir>: FJSVrdb2bインストール先ディレクトリを指定します。 PATHの設定 symjddefdsコマンドを使用する場合、JDKの設定が必要です。 富士通製のJDKを例に説明します。 【記述形式】 <install-dir>/FJSVsymjd/fjjdbc/bin <JDK-install-dir>/FJSVawjbk/jdk14/bin <install-dir>: JDBCドライバインストール先ディレクトリ <JDK-install-dir>: FJSVawjbkパッケージインストール先ディレクトリ - 141 - 設定例 TCシェルの場合 JDBC2.X対応ドライバを利用する場合: % % % % % setenv setenv setenv setenv setenv CLASSPATH /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc2.jar:${CLASSPATH} LD_LIBRARY_PATH /opt/FJSVsymjd/fjjdbc/bin:${LD_LIBRARY_PATH} LD_LIBRARY_PATH /opt/FSUNrdb2b/lib:${LD_LIBRARY_PATH} PATH /opt/FJSVawjbk/jdk14/bin:${PATH} PATH /opt/FJSVsymjd/fjjdbc/bin:${PATH} JDBC3.X対応ドライバを利用する場合: % % % % % setenv setenv setenv setenv setenv CLASSPATH /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc3.jar:${CLASSPATH} LD_LIBRARY_PATH /opt/FJSVsymjd/fjjdbc/bin:${LD_LIBRARY_PATH} LD_LIBRARY_PATH /opt/FSUNrdb2b/lib:${LD_LIBRARY_PATH} PATH /opt/FJSVawjbk/jdk14/bin:${PATH} PATH /opt/FJSVsymjd/fjjdbc/bin:${PATH} JDBC4.X対応ドライバを利用する場合: % % % % % setenv setenv setenv setenv setenv CLASSPATH /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc4.jar:${CLASSPATH} LD_LIBRARY_PATH /opt/FJSVsymjd/fjjdbc/bin:${LD_LIBRARY_PATH} LD_LIBRARY_PATH /opt/FSUNrdb2b/lib:${LD_LIBRARY_PATH} PATH /opt/FJSVawjbk/jdk16/bin:${PATH} PATH /opt/FJSVsymjd/fjjdbc/bin:${PATH} bashの場合 JDBC2.X対応ドライバを利用する場合: $ $ $ $ $ CLASSPATH=/opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc2.jar:$CLASSPATH; export CLASSPATH LD_LIBRARY_PATH=/opt/FJSVsymjd/fjjdbc/bin:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH LD_LIBRARY_PATH=/opt/FSUNrdb2b/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH PATH=/opt/FJSVawjbk/jdk14/bin:${PATH}; export PATH PATH=/opt/FJSVsymjd/fjjdbc/bin:${PATH}; export PATH JDBC3.X対応ドライバを利用する場合: $ $ $ $ $ CLASSPATH=/opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc3.jar:$CLASSPATH; export CLASSPATH LD_LIBRARY_PATH=/opt/FJSVsymjd/fjjdbc/bin:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH LD_LIBRARY_PATH=/opt/FSUNrdb2b/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH PATH=/opt/FJSVawjbk/jdk14/bin:${PATH}; export PATH PATH=/opt/FJSVsymjd/fjjdbc/bin:${PATH}; export PATH JDBC4.X対応ドライバを利用する場合: $ $ $ $ $ CLASSPATH=/opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc4.jar:$CLASSPATH; export CLASSPATH LD_LIBRARY_PATH=/opt/FJSVsymjd/fjjdbc/bin:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH LD_LIBRARY_PATH=/opt/FSUNrdb2b/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH PATH=/opt/FJSVawjbk/jdk16/bin:${PATH}; export PATH PATH=/opt/FJSVsymjd/fjjdbc/bin:${PATH}; export PATH 5.3.3 symjdコマンド使用時の設定 symjdコマンドを使用する場合の環境設定について、プラットフォームごとに説明します。 JDBCドライバは3種類用意されています。 JDBC2.X対応ドライバモジュールは、fjsymjdbc2.jar となります。 JDBC3.X対応ドライバモジュールは、fjsymjdbc3.jar となります。 JDBC4.X対応ドライバモジュールは、fjsymjdbc4.jar となります。 - 142 - 以下の文中で<JDBCドライバモジュール>で示される部分には、使用するJDKの環境に合わせて適切なJDBCドライバを 設定してください。 JDBCドライバとJDKとの組合せについては、“1.4 JDKとの組合せ”を参照してください。 Windows(R)の場合 JDBCドライバの実行環境に以下の環境設定を行う必要があります。 注意 環境設定は、インストール時に自動で行われます。 通常、以下を設定する必要はなく、JDBC4.X対応ドライバを利用する場合の環境変数が設定されます。 ただし、アップグレードインストール時に9.x以前の環境で使用していたアプリケーションをそのまま使用する場合は、JDBC2.X 対応ドライバを利用する場合の環境変数を設定する必要があります。 CLASSPATHの設定 【記述内容】 CLASSPATH=<install-dir>\JDBC\fjjdbc\lib\/<JDBCドライバモジュール> <install-dir>: Symfoware Server クライアント機能インストール先ディレクトリ <JDBCドライバモジュール>: 使用するJDKの環境に合ったJDBCドライバモジュール PATHの設定 【記述内容】 PATH=<install-dir>\JDBC\fjjdbc\bin <install-dir>: Symfoware Server クライアント機能インストール先ディレクトリ 設定例 JDBC2.X対応ドライバを利用する場合: set CLASSPATH=C:\SFWCLNT\JDBC\fjjdbc\lib\fjsymjdbc2.jar;%CLASSPATH% set PATH=C:\SFWCLNT\JDBC\fjjdbc\bin;%PATH% JDBC3.X対応ドライバを利用する場合: set CLASSPATH=C:¥SFWCLNT¥JDBC¥fjjdbc¥lib¥fjsymjdbc3. jar;%CLASSPATH% set PATH=C:\SFWCLNT\JDBC\fjjdbc\bin;%PATH% JDBC4.X対応ドライバを利用する場合: set CLASSPATH=C:\SFWCLNT\JDBC\fjjdbc\lib\fjsymjdbc4.jar;%CLASSPATH% set PATH=C:\SFWCLNT\JDBC\fjjdbc\bin;%PATH% Solaris(TM)またはLinuxの場合 JDBCドライバの実行環境に以下の環境設定を行う必要があります。 CLASSPATHの設定 【記述内容】 CLASSPATH=<install-dir>/FJSVsymjd/fjjdbc/lib/<JDBCドライバモジュール> - 143 - <install-dir>: JDBCドライバインストール先ディレクトリ <JDBCドライバモジュール>: 使用するJDKの環境に合ったJDBCドライバモジュール PATHの設定 【記述内容】 PATH=<install-dir>/FJSVsymjd/fjjdbc/bin <install-dir>: JDBCドライバインストール先ディレクトリ 設定例 Cシェルの場合 JDBC2.X対応ドライバを利用する場合: % setenv CLASSPATH /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc2.jar:${CLASSPATH} % setenv PATH /opt/FJSVsymjd/fjjdbc/bin:${PATH} JDBC3.X対応ドライバを利用する場合: % setenv CLASSPATH /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc3.jar:${CLASSPATH} % setenv PATH /opt/FJSVsymjd/fjjdbc/bin:${PATH} JDBC4.X対応ドライバを利用する場合: % setenv CLASSPATH /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc4.jar:${CLASSPATH} % setenv PATH /opt/FJSVsymjd/fjjdbc/bin:${PATH} bash、Bシェル、Kシェルの場合 JDBC2.X対応ドライバを利用する場合: $ CLASSPATH=/opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc2.jar:$CLASSPATH; export CLASSPATH $ PATH=/opt/FJSVsymjd/fjjdbc/bin:$PATH; export PATH JDBC3.X対応ドライバを利用する場合: $ CLASSPATH=/opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc3.jar:$CLASSPATH; export CLASSPATH $ PATH=/opt/FJSVsymjd/fjjdbc/bin:$PATH; export PATH JDBC4.X対応ドライバを利用する場合: $ CLASSPATH=/opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc4.jar:$CLASSPATH; export CLASSPATH $ PATH=/opt/FJSVsymjd/fjjdbc/bin:$PATH; export PATH TCシェルの場合 JDBC2.X対応ドライバを利用する場合: % setenv CLASSPATH /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc2.jar:${CLASSPATH} % setenv PATH /opt/FJSVsymjd/fjjdbc/bin:${PATH} JDBC3.X対応ドライバを利用する場合: % setenv CLASSPATH /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc3.jar:${CLASSPATH} % setenv PATH /opt/FJSVsymjd/fjjdbc/bin:${PATH} - 144 - JDBC4.X対応ドライバを利用する場合: % setenv CLASSPATH /opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc4.jar:${CLASSPATH} % setenv PATH /opt/FJSVsymjd/fjjdbc/bin:${PATH} bashの場合 JDBC2.X対応ドライバを利用する場合: $ CLASSPATH=/opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc2.jar:$CLASSPATH; export CLASSPATH $ PATH=/opt/FJSVsymjd/fjjdbc/bin:$PATH; export PATH JDBC3.X対応ドライバを利用する場合: $ CLASSPATH=/opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc3.jar:$CLASSPATH; export CLASSPATH $ PATH=/opt/FJSVsymjd/fjjdbc/bin:$PATH; export PATH JDBC4.X対応ドライバを利用する場合: $ CLASSPATH=/opt/FJSVsymjd/fjjdbc/lib/fjsymjdbc4.jar:$CLASSPATH; export CLASSPATH $ PATH=/opt/FJSVsymjd/fjjdbc/bin:$PATH; export PATH 5.3.4 実行方法 JDBCドライバを利用するアプリケーションの実行方法について説明します。 Interstage Application Serverを使用する場合 Interstage 管理コンソールを使用して、ワークユニットを起動してください。 参照 詳細は、“Interstage 管理コンソールヘルプ”を参照してください。 Javaアプリケ-ションの実行方法 javaというコマンドを使用して実行形式ファイルを実行します。 javaコマンドの実行形式を以下に示します。 java クラス名 例 “A.2 データを参照する”で記載しているサンプルアプリケーションを実行する場合には、以下となります。 java MyDatabaseAccess 参照 javaコマンドの詳細については、Sunのドキュメントを参照してください。 5.4 アプリケーションのデバッグ JDBCドライバを利用するアプリケーションのテスト時または運用時に異常が発生した場合のデバッグ方法について説明 します。 - 145 - 5.4.1 エラーメッセージによる対処 出力されたエラーメッセージを元に対処方法を確認します。 エラーメッセージの出力場所 JDBCドライバを使用するアプリケーションの形態により出力先が異なります。以下に形態ごとの出力先を説明します。 アプリケーションの形態 出力場所 Interstage Application Serverを使用したアプリケー ション アプリケーションでエラーの取得/出力を行い、出力 した先を参照してください。 ワークユニットがメッセージを出力している可能性が ありますので、以下を参照してください。 ・ ワークユニットのログファイル ・ イベントログ(Windowsの場合)またはシステムロ グ(Solaris/Linuxの場合) アプリケーションでエラーの取得/出力を行い、出力 した先を参照してください。 Javaアプリケーション エラーメッセージの取得方法 データベース関連のエラーメッセージは、アプリケーションのcatchブロックにSQLExceptionを記述し、SQLExceptionクラ スの各メソッドを使用して取得してください。記述例については“3.17 エラー情報の取得”を参照してください。 種類 メソッド名 備考 SQLSTATE値 getSQLState Symfoware ServerまたはJDBC ドライバが設定 エラーメッセージ getMessage Symfoware ServerまたはJDBC ドライバが設定 エラーコード getErrorCode Symfoware ServerまたはJDBC ドライバが設定 データベース関連以外のエラーメッセージは、アプリケーションのcatchブロックにExceptionを記述し、Exceptionクラスの getMessageメソッドを使用して取得してください。記述例については“3.17 エラー情報の取得”を参照してください。 エラーメッセージの対処方法 エラーメッセージの種類により以下のドキュメントを参照してください。 SQLExceptionの場合 エラーメッセージの種類 参照場所 データベース関連のメッセージ (JYPxxxx) ・ メッセージ集 データベース関連のメッセージ (SQLSTATE値がS1000の場合) ・ “付録E メッセージリファレンス” Exceptionの場合 エラーメッセージの種類 Javaが出力するメッセージ 参照場所 ・ Sunのドキュメント ・ “付録C 異常時の対処” - 146 - エラーメッセージの種類 EJBが出力するメッセージ (EJBxxxx) 参照場所 ・ Interstage Application Server J2EE ユー ザーズガイド ・ Interstage Application Server メッセージ集 Servletが出力するメッセージ ・ Interstage Application Server J2EE ユー ザーズガイド 5.4.2 JDBCスナップによる対処 JDBCスナップには、アプリケーション実行時に使用されたJDBC APIごとに、レスポンス性能と入出力データの情報が出 力されます。 レスポンス性能の情報から、API単位で性能コストを算出し、アプリケーションとSymfoware/RDBでの所要時間を分析す ることができます。 また入出力データの情報から、動作異常の原因がどこにあるかを分析することができます。 5.4.2.1 JDBCスナップの採取方法 JDBCスナップの採取は、以下の手順で実行します。 1. 任意のファイルを用意する。 2. 1.で用意したファイル内に実行パラメタ“JDBC_SNAP”を指定する。 3. アプリケーション実行時に、1.で用意したファイル名を指定する。 記述形式 JDBCスナップを出力するには、任意のファイルを用意し、ファイル内に実行パラメタ“JDBC_SNAP”を記述します。 JDBC_SNAP=(出力モード[,スナップファイル名][,出力レベル]) イコール以降を囲むカッコ“()”は、省略可能です。 実行パラメタの右カッコ“)”以降の記述は、コメントとみなします。 例 実行パラメタにコメントを記述した記述例 JDBC_SNAP=(ON,/tmp/symfo.snp,1) JDBCスナップ 行頭にセミコロン“;”のある行は、コメントとみなします。 キーワード、等号“=”、カッコ“()”、コンマ“,”およびセミコロン“;”の前後には、空白またはタブを記述することができます。 複数記述した場合には、最後に指定された記述が有効になります。 JDBC_SNAP=(ON,/tmp/symfo.snp,1) JDBC_SNAP=(OFF) ←こちらの記述が有効になります コンマ“,”の前後で改行することができます。ただしその場合、カッコ“()”を省略することはできません。 JDBC_SNAP=(ON,↓ /tmp/symfo.snp,1) ↓ ↓:改行 - 147 - 値の並びで途中の値を省略する場合には、コンマだけを記述します。 JDBC_SNAP=(ON,,1) ←スナップファイル名を省略した例 最後に指定した値の後ろのコンマ“,”は省略することができます。 JDBC_SNAP=(ON) ←出力モード以降を省略した例 アプリケーション実行時の指定形式 アプリケーション実行時に、JDBCドライバの環境変数SYMJDBCENVに、実行パラメタを指定したファイル名を絶対パス で指定します。 java -DSYMJDBCENV=/tmp/symjdbc.env パラメタの意味 パラメタの詳細について、以下に示します。 表5.2 パラメタの詳細 パラメタ名 範囲 出力モード ON (必須) OFF 省略値 OFF 詳細 ON :トレース機能を利用する場合に 指定します。 OFF:トレース機能を利用しない場合 に指定します。 ファイル名 任意 (省略可能) symfojdbc_プロセスID_ コネクション番号.snp 出力するトレースファイルのファイル名 を指定します。 出力ファイルはプロセス/コネクション ごとに作成されます。同時に複数のプ ロセス/コネクションを使用するアプリ ケーションの場合には複数の出力ファ イルが作成されます。 ファイル名にはパスと拡張子名を指定 でき、プロセスIDとコネクションを識別 する数値(コネクション番号)が自動的 にファイル名の後に付加されます。パ スが省略された場合は実行するアプリ ケーションのカレントディレクトリに出力 します。 例)指定したファイル名:symjdbc.log 実際のファイル 名:symjdbc_2435_2.log 出力レベル 1~2 (省略可能) 2 出力する情報のレベルとして1または2 を指定します。省略した場合は、2が 指定されたとみなします。出力レベル の指定と出力情報の対応について は、“出力情報”を参照してください。 出力情報 出力レベル1:性能分析用 実行されたJDBC API名とそのAPIの開始時刻、終了時刻および開始から終了までの経過時間が出力されます。 - 148 - 出力レベル2:動作結果確認用 出力レベル1の情報に加えて、実行されたJDBC APIの入出力データが出力されます。 表5.3 出力レベルと出力情報 情報 出力レベル:1 出力レベル:2 開始時刻 ○ ○ API名 ○ ○ スレッド名 ○ ○ 環境情報およびオプショ ン情報 - ○ コネクションを識別する数 値(コネクション番号) ○ ○ 文を識別する数値(文番 号) ○ ○ SQL文 ○(注) ○ 入力データ - ○ 出力データ - ○ エラー情報 ○ ○ 終了時刻(経過時間) ○ ○ ○:出力あり -:出力なし 注)PreparedStatementインタフェースまたはCallableStatementインタフェース使用時に出力されます。 出力情報詳細 出力情報の詳細を以下に示します。 表5.4 出力情報と出力形式 出力情報 出力形式 開始時刻 JDBC-API START YYYY/MM/DD HH:MM:SS.sss API名 API-NAME : インタフェース名API名 スレッド名 API-THREAD : スレッド名 コネクションを識別する 数値(コネクション番号) API-CONNECTION :数値 文を識別する数値(文番 号) API-STATEMENT : 数値 環境情報およびオプショ ン情報 url type=(symford/symfold) host=(ホスト名) port=(ポート番号) database=(データベース名) schema=(デフォルトスキーマ名) maxconnections=(最大コネクション数) lang=(言語) ctuneparam=(オプション文字列) codeselect=(OS/UTF-8) - 149 - 出力情報 出力形式 javaconverter=(コンバータ名) など SQL文 SQL文は文番号の後ろまたは入力データ域に出力されま す。 ・ 文番号の後ろに出力される場合 例)API-STATEMENT : 3 (SELECT * FROM GENERAL.EMPLOYEE) ・ 入力データ域に出力される場合 出力レベル1の場合の例)1: SELECT * FROM GENERAL.EMPLOYEE 出力レベル2の場合の例)“入力データが文字またはバイナリ の場合”を参照してください 入力データ API-INPUT-VARIABLE 入力データ ・ 入力データが文字またはバイナリの場合 例)1: ...パラメタ番号 0000: 5B CC 58 EB 90 1A ...(1) 富士通 ...(2) (1):UNICODEの値をバイナリで出力 (2):OSのコードで文字列を出力 ・ 入力データが数値の場合 例)1: 100 出力データ API-OUTPUT-VARIABLE 出力データ 出力形式は入力データと同様です。 エラー情報 出力データ域に出力されます。 終了時刻(経過時間) JDBC-API END YYYY/MM/DD HH:MM:SS.sss (HH:MM:SS.sss) ()内は経過時間 5.4.2.2 JDBCスナップの分析方法 出力されたJDBCスナップの分析方法について説明します。 JDBCスナップには、以下の形式で情報が出力されます。 ここでは出力レベル2を例に説明します。 出力例 JDBC-API START 2007/04/17 09:25:55.693 API-NAME : getConnection API-THREAD : main API-INPUT-VARIABLE url type=symfold host= port=26551 database=COMPANY schema=GENERAL ...開始時刻 ...API名 ...環境情報およびオプション情報 - 150 - maxconnections=2147483647 lang=JA ctuneparam= : API-OUTPUT-VARIABLE 1: 2 JDBC-API END 2007/04/17 09:25:55.833 (00:00:00.140) ...終了時刻(経過時間) JDBC-API START 2007/04/17 09:25:55.833 API-NAME : Connection.prepareStatement API-THREAD : main API-CONNECTION : 2 ...コネクション番号 API-INPUT-VARIABLE ...入力データ 1: 0000: 00 55 00 50 00 44 00 41 00 54 00 45 00 20 00 45 UPDATE E 0010: 00 4D 00 50 00 4C 00 4F 00 59 00 45 00 45 00 20 MPLOYEE 0020: 00 53 00 45 00 54 00 20 00 4E 00 41 00 4D 00 45 SET NAME 0030: 00 3D 00 3F =? API-OUTPUT-VARIABLE ...出力データ 1: 3 JDBC-API END 2007/04/17 09:25:55.993 (00:00:00.160) JDBC-API START 2007/04/17 09:25:55.993 API-NAME : PreparedStatement.executeUpdate API-THREAD : main API-CONNECTION : 2 API-STATEMENT : 3 (UPDATE EMPLOYEE SET NAME=?) ...文番号(SQL文) API-INPUT-VARIABLE API-OUTPUT-VARIABLE SQLState : S1000 ...エラー情報 SQLCode : 1044 SQLMessage: 必要な入力パラメタが指定されていません JDBC-API END 2007/04/17 09:25:56.043 (00:00:00.050) APIごとの所要時間の算出方法 JDBCスナップの情報を利用して、JDBCドライバのAPIごとに、所要時間を算出することができます。 [計算式] APIごとの所要時間=API_ENDの終了時刻の後ろに出力された、経過時間 アプリケーションの所要時間とSymfoware/RDBの所要時間の算出方法 アプリケーションの所要時間とSymfoware/RDBの所要時間は、以下の方法で算出することができます。 1. アプリケーション全体の所要時間を算出するロジックを、アプリケーション内に記述します。 2. 実行パラメタ“JDBC_SNAP”の出力レベルに1を指定して、アプリケーションを実行します。このとき算出された、ア プリケーション全体の所要時間を、aとします。 3. 2.で出力されたJDBCスナップの情報から、APIごとの経過時間の合計を算出します。算出された合計時間を、bと します。 4. 実行パラメタ“JDBC_SNAP”を指定しないでアプリケーションを実行します。この時のアプリケーション全体の所要 時間をcとします。 [計算式] アプリケーションの所要時間 =a-b Symfoware/RDBの所要時間 =c-アプリケーションの所要時間 - 151 - 5.5 アプリケーションのチューニング JDBCドライバを利用するアプリケーションのチューニングに関する情報を説明します。 チューニング方法 データソースオプション情報設定画面で、以下の項目についてチューニングすることができます。 ・ 最大コネクション数 ・ 最大プールコネクション数 ・ メッセージに使用する言語 設定内容 各項目の設定内容については、“5.2.3.3 データソースのオプション情報設定画面”を参照してください。 - 152 - 付録A Java言語のサンプルプログラム JDBCアプリケーションのサンプルについて説明します。 A.1 サンプル実行前の準備 サンプルを実行する前に、以下の作業が必要です。 A.1.1 データベースの作成 以下の定義文を使い、データベースを作成します。 なお、データベーススペースの作成場所は、実行環境に合わせて修正してください。 参照 データベースの作成については、“RDB運用ガイド(データベース定義編)”を参照してください。 データベース定義文 CREATE DATABASE COMPANY; CREATE DBSPACE MYDBSP_1 ALLOCATE FILE /jdbc/COMPANY.dbs ATTRIBUTE SPACE (20M); CREATE SCHEMA GENERAL; CREATE TABLE GENERAL.EMPLOYEE (ID INT NOT NULL, NAME CHARACTER(20), PRIMARY KEY(ID)); CREATE TABLE GENERAL.BLOBTBL( A_INT INT NOT NULL, A_BLOB BLOB(100K), PRIMARY KEY(A_INT)) ON MYDBSP_1; CREATE DSO DSO01 FROM GENERAL.EMPLOYEE TYPE RANDOM (PAGESIZE1(4),PAGESIZE2(4)); CREATE DSI DSI01 DSO DSO01 ALLOCATE PRIME ON MYDBSP_1 SIZE 200K,OVERFLOW ON MYDBSP_1 SIZE 80K; CREATE INDEX GENERAL.EMPLOYEE.TB1IDX KEY(ID) ON MYDBSP_1; CREATE INDEX GENERAL.BLOBTBL.TB2IDX KEY(A_INT) ON MYDBSP_1; GRANT ALL PRIVILEGES ON GENERAL.EMPLOYEE TO PUBLIC; GRANT ALL PRIVILEGES ON GENERAL.BLOBTBL TO PUBLIC; - 153 - GRANT ALL PRIVILEGES ON SCHEMA GENERAL TO PUBLIC; GRANT ALL PRIVILEGES ON DBSPACE MYDBSP_1 TO PUBLIC; プロシジャ定義文 EXEC SQL CREATE PROCEDURE GENERAL.PROC01 (IN IWORK1 INT, INOUT IOWORK1 CHARACTER(20), OUT OWORK1 INT) BEGIN DECLARE SWORK1 INT; DECLARE SWORK2 CHAR(20); INSERT INTO GENERAL.EMPLOYEE VALUES(IWORK1,IOWORK1); SELECT ID,NAME INTO SWORK1,SWORK2 FROM GENERAL.EMPLOYEE WHERE ID=IWORK1; SET OWORK1 = SWORK1; SET IOWORK1 = SWORK2; END END-EXEC; プロシジャに対するGRANT文 GRANT ALL PRIVILEGES ON PROCEDURE GENERAL.PROC01 TO PUBLIC; A.1.2 初期データの追加 rdbsloaderコマンドを使用して、作成したデータベースに初期データを追加します。 TABLE01.datを作成し、rdbsloaderコマンドを実行してください。 rdbsloaderコマンドで、TABLE01.datの格納場所を指定します。 ファイルの格納場所は、実行環境に合わせて修正してください。 参照 rdbsloaderコマンドの詳細は、“コマンドリファレンス”を参照してください。 初期データの追加例 REM ファイルの格納場所 REM 実行環境に合わせて修正してください rdbsloader -mi -i COMPANY.DSI01 -t /jdbc/TABLE01.dat TABLE01.dat 1,"dog" 2,"cat" 3,"lion" A.1.3 JDBCデータソース登録ツールの設定 JDBCデータソース登録ツールから、JDBCデータソースを登録します。 JDBCデータソースの登録をします。“5.2 ネーミングサービスとJDBCデータソース登録ツール”を参照し、JDBCデータ ソースを登録してください。登録内容は、以下のとおりです。 - 154 - JDBCデータソースの情報 データソース名 ds1 データ資源名 COMPANY 注意 以下の項目は、実行環境に合わせて必要な値を設定してください。 - プロトコル - ホスト名 - ポート番号 - ユーザ名 - パスワード A.2 データを参照する データベースのデータを参照するプログラム例について説明します。 以下のサンプルアプリケーションでは、ネーミングサービスを起動しているホスト名に、“myhost”を指定しています。サン プルアプリケーションを実行する環境に合わせて、ホスト名の値を修正してください。 データを参照するプログラム例 // 以下のパッケージをインポートします。 import java.util.*; import java.sql.*; import javax.sql.*; import javax.naming.*; // クラスを定義します。 public class MyDatabaseAccess { public static void main(String args[]) { try { // JNDI環境を指定します。 Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY,"com.fujitsu.symfoware.jdbc2.jndisp.SYMContextFactory"); env.put(Context.PROVIDER_URL,"SYM://myhost:26600"); InitialContext ctx = new InitialContext(env); // JDBCデータソースを取得します。 DataSource ds = (DataSource)ctx.lookup("jdbc/ds1"); // データベースと接続します。 Connection con = ds.getConnection(); // 自動コミットモードの無効化 con.setAutoCommit(false); // Statementのオブジェクトを生成します。 Statement stmt = con.createStatement(); // SQL文を実行し、ResultSetの // オブジェクトを生成します。 ResultSet rs = - 155 - stmt.executeQuery("SELECT ID,NAME FROM GENERAL.EMPLOYEE"); int iID = 0; String sName = null; while(rs.next()) { // ResultSetの列に対応する // データを取得します。 iID = rs.getInt(1); sName = rs.getString(2); // 取得した情報を表示します。 System.out.println("ID = " + iID); System.out.println("NAME = " + sName); } // ResultSetのオブジェクトをクローズします。 rs.close(); // Statementのオブジェクトをクローズします。 stmt.close(); // Connectionのオブジェクトをクローズします。 con.close(); } // SQLExceptionが発生した場合の処理を記述します。 catch (SQLException e) { // エラー情報を出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); System.out.println("SQLSTATE : " + e.getSQLState()); System.out.println("ERROR CODE : " + e.getErrorCode()); e.printStackTrace(); } // その他のExceptionが発生した場合の処理を記述します。 catch (Exception e) { // スタックトレースを出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); e.printStackTrace(); } } } A.3 データを更新する データベースのデータを更新するプログラム例について説明します。 以下のサンプルアプリケーションでは、ネーミングサービスを起動しているホスト名に、“myhost”を指定しています。サン プルアプリケーションを実行する環境に合わせて、ホスト名の値を修正してください。 データを更新するプログラム例 // 以下のパッケージをインポートします。 import java.util.*; import java.sql.*; import javax.sql.*; import javax.naming.*; // クラスを定義します。 - 156 - public class MyDatabaseUpdate { public static void main(String args[]) { try { // JNDI環境を指定します。 Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY,"com.fujitsu.symfoware.jdbc2.jndisp.SYMContextFactory"); env.put(Context.PROVIDER_URL,"SYM://myhost:26600"); InitialContext ctx = new InitialContext(env); // JDBCデータソースを取得します。 DataSource ds = (DataSource)ctx.lookup("jdbc/ds1"); // データベースと接続します。 Connection con = ds.getConnection(); // 自動コミットモードの無効化 con.setAutoCommit(false); // Statementのオブジェクトを生成します。 Statement stmt = con.createStatement(); // IDが1の行に対して、UPDATE文を実行します。 // NAMEを'gorilla'に変更します。 stmt.executeUpdate("UPDATE GENERAL.EMPLOYEE SET NAME= 'gorilla' WHERE ID=1"); // Statementのオブジェクトをクローズします。 stmt.close(); // トランザクションをコミットします。 con.commit(); // Connectionのオブジェクトをクローズします。 con.close(); } // SQLExceptionが発生した場合の処理を記述します。 catch (SQLException e) { // エラー情報を出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); System.out.println("SQLSTATE : " + e.getSQLState()); System.out.println("ERROR CODE : " + e.getErrorCode()); e.printStackTrace(); } // その他のExceptionが発生した場合の処理を記述します。 catch (Exception e) { // スタックトレースを出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); e.printStackTrace(); } } } - 157 - A.4 パラメタを指定してデータを参照する SQL文のパラメタを指定してデータベースのデータを参照するプログラム例について説明します。 以下のサンプルアプリケーションでは、ネーミングサービスを起動しているホスト名に、“myhost”を指定しています。サン プルアプリケーションを実行する環境に合わせて、ホスト名の値を修正してください。 パラメタを指定してデータを参照するプログラム例 // 以下のパッケージをインポートします。 import java.util.*; import java.sql.*; import javax.sql.*; import javax.naming.*; // クラスを定義します。 public class MyPreparedSelect { public static void main(String args[]) { try { // JNDI環境を指定します。 Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY,"com.fujitsu.symfoware.jdbc2.jndisp.SYMContextFactory"); env.put(Context.PROVIDER_URL,"SYM://myhost:26600"); InitialContext ctx = new InitialContext(env); // JDBCデータソースを取得します。 DataSource ds = (DataSource)ctx.lookup("jdbc/ds1"); // データベースと接続します。 Connection con = ds.getConnection(); // 自動コミットモードの無効化 con.setAutoCommit(false); // PreparedStatementの // オブジェクトを生成します。 // IDが 3のデータを参照します。 PreparedStatement pstmt = con.prepareStatement( "SELECT ID,NAME FROM GENERAL.EMPLOYEE WHERE ID=?"); // パラメタに値を設定します。 pstmt.setInt(1, 3); // SQL文を実行し、ResultSetの // オブジェクトを生成します。 ResultSet rs = pstmt.executeQuery(); int iID = 0; String sName = null; while (rs.next()) { // データを取得します。 iID = rs.getInt(1); sName = rs.getString(2); // 取得した情報を表示します。 System.out.println("ID = " + iID); System.out.println("NAME = " + sName); } - 158 - // ResultSetのオブジェクトをクローズします。 rs.close(); // PreparedStatementの // オブジェクトをクローズします。 pstmt.close(); // Connectionのオブジェクトをクローズします。 con.close(); } // SQLExceptionが発生した場合の処理を記述します。 catch (SQLException e) { // エラー情報を出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); System.out.println("SQLSTATE : " + e.getSQLState()); System.out.println("ERROR CODE : " + e.getErrorCode()); e.printStackTrace(); } // その他のExceptionが発生した場合の処理を記述します。 catch (Exception e) { // スタックトレースを出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); e.printStackTrace(); } } } A.5 パラメタを指定してデータを追加する SQL文のパラメタを指定してデータベースにデータを追加するプログラム例について説明します。 以下のサンプルアプリケーションでは、ネーミングサービスを起動しているホスト名に、“myhost”を指定しています。サン プルアプリケーションを実行する環境に合わせて、ホスト名の値を修正してください。 パラメタを指定してデータを追加するプログラム例 // 以下のパッケージをインポートします。 import java.util.*; import java.sql.*; import javax.sql.*; import javax.naming.*; // クラスを定義します。 public class MyPreparedInsert { public static void main(String args[]) { try { // JNDI環境を指定します。 Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY,"com.fujitsu.symfoware.jdbc2.jndisp.SYMContextFactory"); env.put(Context.PROVIDER_URL,"SYM://myhost:26600"); InitialContext ctx = new InitialContext(env); // JDBCデータソースを取得します。 DataSource ds = (DataSource)ctx.lookup("jdbc/ds1"); // データベースと接続します。 - 159 - Connection con = ds.getConnection(); // 自動コミットモードの無効化 con.setAutoCommit(false); // PreparedStatementのオブジェクトを生成します。 PreparedStatement pstmt = con.prepareStatement( "INSERT INTO GENERAL.EMPLOYEE(ID,NAME) VALUES(?,?)"); // パラメタに値を設定します。 pstmt.setInt(1,4); pstmt.setString(2, "monkey"); // データベースにデータを追加します。 pstmt.executeUpdate(); // PreparedStatementのオブジェクトをクローズします。 pstmt.close(); // トランザクションをコミットします。 con.commit(); // Connectionのオブジェクトをクローズします。 con.close(); } // SQLExceptionが発生した場合の処理を記述します。 catch (SQLException e) { // エラー情報を出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); System.out.println("SQLSTATE : " + e.getSQLState()); System.out.println("ERROR CODE : " + e.getErrorCode()); e.printStackTrace(); } // その他のExceptionが発生した場合の処理を記述します。 catch (Exception e) { // スタックトレースを出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); e.printStackTrace(); } } } A.6 スクロールカーソルを使用する スクロールカーソルを使用したプログラム例について説明します。 以下のサンプルアプリケーションでは、ネーミングサービスを起動しているホスト名に、“myhost”を指定しています。サン プルアプリケーションを実行する環境に合わせて、ホスト名の値を修正してください。 スクロールカーソルを使用したプログラム例 // 以下のパッケージをインポートします。 import java.util.*; import java.sql.*; import javax.sql.*; import javax.naming.*; // クラスを定義します。 public class MyScrollAccess - 160 - { public static void main(String args[]) { try { // JNDI環境を指定します。 Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY,"com.fujitsu.symfoware.jdbc2.jndisp.SYMContextFactory"); env.put(Context.PROVIDER_URL,"SYM://myhost:26600"); InitialContext ctx = new InitialContext(env); // JDBCデータソースを取得します。 DataSource ds = (DataSource)ctx.lookup("jdbc/ds1"); // データベースと接続します。 Connection con = ds.getConnection(); // 自動コミットモードの無効化 con.setAutoCommit(false); // スクロール可能なResultSetオブジェクトを生成するよう指定し、 // Statementのオブジェクトを生成します。 Statement stmt = con.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE, java.sql.ResultSet.CONCUR_READ_ONLY); // SQL文を実行し、ResultSetの // オブジェクトを生成します。 ResultSet rs = stmt.executeQuery("SELECT ID,NAME FROM GENERAL.EMPLOYEE"); int iID = 0; String sName = null; int iCursor = 0; // カーソルを3行目に移動する。 if(rs.absolute(3)) { // 結果セットに3行目のデータがあった場合、データを取得します。 iID = rs.getInt(1); sName = rs.getString(2); // 取得した情報を表示します。 System.out.println("ID = " + iID); System.out.println("NAME = " + sName); // カーソルの位置が何行目にあるかを印字する。 iCursor = rs.getRow(); System.out.println("カーソル位置 = " + iCursor); } // ResultSetのオブジェクトをクローズします。 rs.close(); // Statementのオブジェクトをクローズします。 stmt.close(); // Connectionのオブジェクトをクローズします。 con.close(); } // SQLExceptionが発生した場合の処理を記述します。 - 161 - catch (SQLException e) { // エラー情報を出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); System.out.println("SQLSTATE : " + e.getSQLState()); System.out.println("ERROR CODE : " + e.getErrorCode()); e.printStackTrace(); } // その他のExceptionが発生した場合の処理を記述します。 catch (Exception e) { // スタックトレースを出力します。 e.printStackTrace(); System.out.println("ERROR MESSAGE : " + e.getMessage()); } } } A.7 ストアドプロシジャを使用する ストアドプロシジャを使用したプログラム例について説明します。 以下のサンプルアプリケーションでは、ネーミングサービスを起動しているホスト名に、“myhost”を指定しています。サン プルアプリケーションを実行する環境に合わせて、ホスト名の値を修正してください。 ストアドプロシジャを使用したプログラム例 // 以下のパッケージをインポートします。 import java.util.*; import java.sql.*; import javax.sql.*; import javax.naming.*; // クラスを定義します。 public class MyPreparedCall { public static void main(String args[]) { try { // JNDI環境を指定します。 Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY,"com.fujitsu.symfoware.jdbc2.jndisp.SYMContextFactory"); env.put(Context.PROVIDER_URL,"SYM://myhost:26600"); InitialContext ctx = new InitialContext(env); // JDBCデータソースを取得します。 DataSource ds = (DataSource)ctx.lookup("jdbc/ds1"); // データベースと接続します。 Connection con = ds.getConnection(); // 自動コミットモードの無効化 con.setAutoCommit(false); // CallableStatementのオブジェクトを生成します。 CallableStatement cstmt = con.prepareCall("{CALL GENERAL.PROC01[?,?,?]}"); // パラメタに値を設定します。 - 162 - cstmt.setInt(1,7); cstmt.setString(2, "bird"); // JDBC型を設定します。 cstmt.registerOutParameter(2,java.sql.Types.CHAR); cstmt.registerOutParameter(3,java.sql.Types.INTEGER); // データベースにデータを追加します。 cstmt.executeUpdate(); int iID = 0; String sName = null; // 出力パラメタからデータを取得します。 sName = cstmt.getString(2); iID = cstmt.getInt(3); // 取得した情報を表示します。 System.out.println("ID = " + iID); System.out.println("NAME = " + sName); // CallableStatementのオブジェクトをクローズします。 cstmt.close(); // トランザクションをコミットします。 con.commit(); // Connectionのオブジェクトをクローズします。 con.close(); } // SQLExceptionが発生した場合の処理を記述します。 catch (SQLException e) { // エラー情報を出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); System.out.println("SQLSTATE : " + e.getSQLState()); System.out.println("ERROR CODE : " + e.getErrorCode()); e.printStackTrace(); } // その他のExceptionが発生した場合の処理を記述します。 catch (Exception e) { // スタックトレースを出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); e.printStackTrace(); } } } A.8 BLOB型の列に対する操作を行う BLOB型の列に対する操作を行うプログラム例について説明します。 以下のサンプルアプリケーションでは、ネーミングサービスを起動しているホスト名に、“myhost”を指定しています。サン プルアプリケーションを実行する環境に合わせて、ホスト名の値を修正してください。 また、“OrgData.txt”というファイルのデータをデータベースに追加しています。サンプルアプリケーション実行時に、サン プルアプリケーションのclassファイルと同じフォルダ内に“OrgData.txt”を格納してください。“OrgData.txt”の内容につい ては、以下を参照してください。 - 163 - サンプルデータ“OrgData.txt”の内容 TESTDATA BLOB型の列に対する操作を行うプログラム例 import import import import import java.util.*; java.sql.*; javax.sql.*; java.io.*; javax.naming.*; public class MyBlobAccess { public static void main(String args[]) { try { // JNDI環境を指定します。 Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY,"com.fujitsu.symfoware.jdbc2.jndisp.SYMContextFactory"); env.put(Context.PROVIDER_URL,"SYM://myhost:26600"); InitialContext ctx = new InitialContext(env); // JDBCデータソースを取得します。 DataSource ds = (DataSource)ctx.lookup("jdbc/ds1"); // データベースと接続します。 Connection con = ds.getConnection(); // 自動コミットモードの無効化 con.setAutoCommit(false); // データ削除 Statement stmt = con.createStatement(); stmt.executeUpdate("DELETE FROM GENERAL.BLOBTBL"); stmt.close(); // INSERT文を準備 PreparedStatement pstmt = con.prepareStatement("INSERT INTO GENERAL.BLOBTBL VALUES(1, ?)"); // BLOBデータを設定 FileInputStream oFIS = new FileInputStream("OrgData.txt"); pstmt.setBinaryStream(1, oFIS, oFIS.available()); // INSERT文を実行 pstmt.executeUpdate(); pstmt.close(); oFIS.close(); con.commit(); // ResultSetインタフェースのオブジェクトを生成 Statement stmt2 = con.createStatement(); ResultSet rs = stmt2.executeQuery("SELECT A_BLOB FROM GENERAL.BLOBTBL"); // データベースのデータを参照 while (rs.next()) { - 164 - InputStream oIS = rs.getBinaryStream(1); // 出力先ファイルを指定 FileOutputStream oFOS = new FileOutputStream("AftData.txt"); //ストリームからデータをbyte配列で一括に読み込み byte[] bTmp = new byte[oIS.available()]; oIS.read(bTmp); // 出力先ファイルにデータを印字 oFOS.write(bTmp); oFOS.close(); oIS.close(); } // 解放処理 rs.close(); stmt2.close(); // ResultSetインタフェースのオブジェクトを生成 Statement stmt3 = con.createStatement(); ResultSet rs2 = stmt3.executeQuery("SELECT A_BLOB FROM GENERAL.BLOBTBL"); // データベースのデータを参照 while (rs2.next()) { InputStream oIS = rs2.getBinaryStream(1); // 出力先ファイルを指定 FileOutputStream oFOS = new FileOutputStream("AftData2.txt"); //ストリームからデータを1バイトずつ-1が返却されるまで読込み int iBData=0; while ((iBData=oIS.read()) != -1) { // 出力先ファイルにデータを1バイトずつ印字 oFOS.write(iBData); } oFOS.close(); oIS.close(); } // 解放処理 rs2.close(); stmt3.close(); con.commit(); con.close(); } // SQLExceptionが発生した場合の処理を記述します。 catch (SQLException e) { // エラー情報を出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); System.out.println("SQLSTATE : " + e.getSQLState()); System.out.println("ERROR CODE : " + e.getErrorCode()); - 165 - e.printStackTrace(); } // その他のExceptionが発生した場合の処理を記述します。 catch (Exception e) { // スタックトレースを出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); e.printStackTrace(); } } } A.9 トランザクションを手動で制御する 自動コミットモードを無効にして、トランザクションを手動でコミットおよびロールバックするプログラム例について説明しま す。自動コミットモードを無効化することで、データベースへ更新結果を反映するタイミングを、アプリケーション内で制御 することができます。 このサンプルアプリケーションでは、IDが1の列に対して、NAMEの情報をwhaleに更新しています。更新処理終了後、 commitメソッドを使用して、データベースに更新処理を反映しています。 更新処理の反映後、更新結果確認のため、データを参照しています。 更新処理や参照処理の途中でエラーが発生した場合、rollbackメソッドを使用して、トランザクションをロールバックしてい ます。 以下のサンプルアプリケーションでは、myhostというホストで起動しているJDBCネーミングサービスから、ds1というJDBC データソースの情報を取得しています。ホスト名やデータソース名については、アプリケーションの実行環境に合わせて 修正してください。 トランザクションを手動で制御するプログラム例 // 以下のパッケージをインポートします。 import java.util.*; import java.sql.*; import javax.sql.*; import javax.naming.*; // クラスを定義します。 public class MyTransactionHandling { public static void main(String args[]) { DataSource ds = null; Connection con = null; Statement stmt1 = null; Statement stmt2 = null; ResultSet rs = null; int iID = 0; String sName = null; try { // JNDI環境を指定します。 Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY,"com.fujitsu.symfoware.jdbc2.jndisp.SYMContextFactory"); env.put(Context.PROVIDER_URL,"SYM://myhost:26600"); InitialContext ctx = new InitialContext(env); - 166 - // JDBCデータソースを取得します。 ds = (DataSource)ctx.lookup("jdbc/ds1"); // データベースと接続します。 con = ds.getConnection(); // 自動コミットモードの無効化 con.setAutoCommit(false); // Statementのオブジェクトを生成します。 stmt1 = con.createStatement(); // IDが1の行に対して、UPDATE文を実行します。 // NAMEを'whale'に変更します。 stmt1.executeUpdate("UPDATE GENERAL.EMPLOYEE SET NAME= 'whale' WHERE ID=1"); // Statementのオブジェクトをクローズします。 stmt1.close(); // トランザクションをコミットし、更新を反映します。 con.commit(); // Statementのオブジェクトを生成します。 stmt2 = con.createStatement(); // SQL文を実行し、ResultSetの // オブジェクトを生成します。 rs = stmt2.executeQuery("SELECT ID,NAME FROM GENERAL.EMPLOYEE"); while(rs.next()) { // ResultSetの列に対応する // データを取得します。 iID = rs.getInt(1); sName = rs.getString(2); // 取得した情報を表示します。 System.out.println("ID = " + iID); System.out.println("NAME = " + sName); } // ResultSetのオブジェクトをクローズします。 rs.close(); // Statementのオブジェクトをクローズします。 stmt2.close(); // トランザクションをコミットします。 con.commit(); } // SQLExceptionが発生した場合の処理を記述します。 catch (SQLException e) { // エラー情報を出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); System.out.println("SQLSTATE : " + e.getSQLState()); System.out.println("ERROR CODE : " + e.getErrorCode()); e.printStackTrace(); try { - 167 - if (con != null) { // トランザクションをロールバックします。 con.rollback(); } } // Exceptionが発生した場合の処理を記述します。 catch (Exception ex) { // スタックトレースを出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); e.printStackTrace(); } } // その他のExceptionが発生した場合の処理を記述します。 catch (Exception e) { // スタックトレースを出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); e.printStackTrace(); try { if (con != null) { // トランザクションをロールバックします。 con.rollback(); } } // Exceptionが発生した場合の処理を記述します。 catch (Exception ex) { // スタックトレースを出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); e.printStackTrace(); } } finally { try { if (con != null) { // Connectionのオブジェクトをクローズします。 con.close(); } } // Exceptionが発生した場合の処理を記述します。 catch (Exception ex) { // スタックトレースを出力します。 System.out.println("ERROR MESSAGE : " + ex.getMessage()); ex.printStackTrace(); } } } } A.10 独立性水準を設定する 独立性水準の設定を行うプログラム例について説明します。 - 168 - 独立性水準の設定は、setTransactionIsolationメソッドで行います。 独立性水準を設定することで、表の排他制御を行うことができます。 このサンプルアプリケーションでは、独立性水準をREAD_UNCOMMITTEDに設定しています。独立性水準を READ_UNCOMMITTEDに設定することで、データの参照処理を実行しても、他の更新処理による排他待ちが発生しま せん。 以下のサンプルアプリケーションでは、myhostというホストで起動しているJDBCネーミングサービスから、ds1というJDBC データソースの情報を取得しています。ホスト名やデータソース名については、アプリケーションの実行環境に合わせて 修正してください。 独立性水準を設定するプログラム例 // 以下のパッケージをインポートします。 import java.util.*; import java.sql.*; import javax.sql.*; import javax.naming.*; // クラスを定義します。 public class MyTransactionIsolation { public static void main(String args[]) { DataSource ds = null; Connection con = null; Statement stmt = null; ResultSet rs = null; int iID = 0; String sName = null; try { // JNDI環境を指定します。 Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY,"com.fujitsu.symfoware.jdbc2.jndisp.SYMContextFactory"); env.put(Context.PROVIDER_URL,"SYM://myhost:26600"); InitialContext ctx = new InitialContext(env); // JDBCデータソースを取得します。 ds = (DataSource)ctx.lookup("jdbc/ds1"); // データベースと接続します。 con = ds.getConnection(); // 独立性水準をREAD_UNCOMMITTEDに設定します。 con.setTransactionIsolation(java.sql.Connection.TRANSACTION_READ_UNCOMMITTED); // Statementのオブジェクトを生成します。 stmt = con.createStatement(); // SQL文を実行し、ResultSetの // オブジェクトを生成します。 rs = stmt.executeQuery("SELECT ID,NAME FROM GENERAL.EMPLOYEE"); while(rs.next()) { // ResultSetの列に対応する // データを取得します。 iID = rs.getInt(1); sName = rs.getString(2); - 169 - // 取得した情報を表示します。 System.out.println("ID = " + iID); System.out.println("NAME = " + sName); } // ResultSetのオブジェクトをクローズします。 rs.close(); // Statementのオブジェクトをクローズします。 stmt.close(); } // SQLExceptionが発生した場合の処理を記述します。 catch (SQLException e) { // エラー情報を出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); System.out.println("SQLSTATE : " + e.getSQLState()); System.out.println("ERROR CODE : " + e.getErrorCode()); e.printStackTrace(); } // その他のExceptionが発生した場合の処理を記述します。 catch (Exception e) { // スタックトレースを出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); e.printStackTrace(); } finally { try { // Connectionのオブジェクトをクローズします。 con.close(); } // Exceptionが発生した場合の処理を記述します。 catch (Exception ex) { // スタックトレースを出力します。 System.out.println("ERROR MESSAGE : " + ex.getMessage()); ex.printStackTrace(); } } } } A.11 Connection Manager連携 参照 Connection Managerと連携した場合のサンプルアプリケーションについては、“Connection Manager ユーザーズガイド” を参照してください。 - 170 - A.12 Interstage Application Serverを使用したアプリケーション Interstage Studioを使用することで、Interstage Application Serverを使用したアプリケーションを容易に作成することがで きます。Interstage Application Serverを使用したアプリケーション実行までの主な作業は、以下のとおりです。 1. アプリケーションの開発 Interstage Studioを使用して、アプリケーションを開発します。アプリケーションを作成後、Interstage Application Server のワークユニットに配備するため、warファイルを作成します。 参照 詳細は、“Interstage Studio 解説書”を参照してください。 Interstage Studioでは、作成したアプリケーションのデバッグ機能も提供しています。 アプリケーションで、データベース接続を行う部分のソースに対して、デバッグを実行する場合、Symfoware/RDB に接続する場合の設定が必要です。 参照 Symfoware/RDBに接続する場合の設定の詳細は、“Interstage Application Server J2EE ユーザーズガイド”を参照 してください。 2. アプリケーションの配備 作成したアプリケーションを、ワークユニットに配備します。 参照 アプリケーションの配備の詳細は、“Interstage 管理コンソール ヘルプ”を参照してください。 3. Symfowareにアクセスする環境設定 アプリケーションの実行前に、Symfoware/RDBに接続する場合の設定が必要です。 - 171 - 参照 Symfoware/RDBに接続する場合の設定の詳細は、“Interstage Application Server J2EE ユーザーズガイド”を参照 してください。 4. アプリケーションの実行 参照 アプリケーション実行の詳細は、“Interstage Application Server スタートガイド”を参照してください。 A.13 行識別子(SQL ROWID)データを利用してデータを操作する SQL文のパラメタに行識別子を指定してデータを操作するプログラム例について説明します。 以下のサンプルアプリケーションでは、ネーミングサービスを起動しているホスト名に、“myhost”を指定しています。サン プルアプリケーションを実行する環境に合わせて、ホスト名の値を修正してください。 行識別子を指定してデータを更新するプログラム例 // 以下のパッケージをインポートします。 import java.util.*; import java.sql.*; import javax.sql.*; import javax.naming.*; // クラスを定義します。 public class MyRowIdSelect { public static void main(String args[]) { try { // JNDI環境を指定します。 Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.fujitsu.symfoware.jdbc2.jndisp.SYMContextFactory"); env.put(Context.PROVIDER_URL,"SYM://myhost:26600"); InitialContext ctx = new InitialContext(env); // JDBCデータソースを取得します。 DataSource ds = (DataSource)ctx.lookup("jdbc/ds1"); // データベースと接続します。 Connection con = ds.getConnection(); // 自動コミットモードの無効化 con.setAutoCommit(false); // Statementのオブジェクトを生成します。 Statement stmt = con.createStatement(); // SQL文を実行し、ResultSetの // オブジェクトを生成します。 // IDが 3のデータを参照します。 ResultSet rs = stmt.executeQuery("SELECT NAME,ROW_ID FROM GENERAL.EMPLOYEE WHERE ID=3"); String sName = null; RowId rowid = null; - 172 - while(rs.next()) { // ResultSetの列に対応する // データを取得します。 sName = rs.getString(1); // 行識別子データを取得します。 rowid = rs.getRowId(2); // 取得した情報を表示します。 System.out.println("NAME = " + sName); } // PreparedStatementの // オブジェクトを生成します。 // 取得した行識別子の行(IDが 3の行)に対して、UPDATE文を実行します。 // NAMEを'Tiger'に変更します。 PreparedStatement pstmt = con.prepareStatement( "UPDATE GENERAL.EMPLOYEE SET NAME= 'Tiger' WHERE ROW_ID=?"); // パラメタに値を設定します。 pstmt.setRowId(1, rowid); // データベースのデータを更新します。 pstmt.executeUpdate(); // ResultSetのオブジェクトをクローズします。 rs.close(); // PreparedStatementの // オブジェクトをクローズします。 pstmt.close(); // Statementのオブジェクトをクローズします。 stmt.close(); //トランザクションのコミット con.commit(); // Connectionのオブジェクトをクローズします。 con.close(); } // SQLExceptionが発生した場合の処理を記述します。 catch (SQLException e) { // エラー情報を出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); System.out.println("SQLSTATE : " + e.getSQLState()); System.out.println("ERROR CODE : " + e.getErrorCode()); e.printStackTrace(); } // その他のExceptionが発生した場合の処理を記述します。 catch (Exception e) { // スタックトレースを出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); e.printStackTrace(); } } } - 173 - A.14 ResultSetの保持機能を利用したResultSetの操作を行う ResultSetの保持機能を利用したResultSetの操作を行うプログラム例について説明します。 以下のサンプルアプリケーションでは、ネーミングサービスを起動しているホスト名に、“myhost”を指定しています。サン プルアプリケーションを実行する環境に合わせて、ホスト名の値を修正してください。 ResultSetの保持機能を利用してResultSetの操作を行うプログラム例 //以下のパッケージをインポートします。 import java.util.*; import java.sql.*; import javax.sql.*; import javax.naming.*; // クラスを定義します。 public class MyHoldCursorUpdate { public static void main(String args[]) { try { // JNDI環境を指定します。 Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.fujitsu.symfoware.jdbc2.jndisp.SYMContextFactory"); env.put(Context.PROVIDER_URL,"SYM://myhost:26600"); InitialContext ctx = new InitialContext(env); // JDBCデータソースを取得します。 DataSource ds = (DataSource)ctx.lookup("jdbc/ds1"); // データベースと接続します。 Connection con = ds.getConnection(); // 自動コミットモードの無効化 con.setAutoCommit(false); // ResultSetの保持機能を設定します。 con.setHoldability(ResultSet.HOLD_CURSORS_OVER_COMMIT); // Statementのオブジェクトを生成します。 Statement stmt = con.createStatement(); // SQL文を実行し、ResultSetの // オブジェクトを生成します。 ResultSet rs = stmt.executeQuery ("SELECT ID,NAME FROM GENERAL.EMPLOYEE"); //変数の初期化 int iID = 0; String sName = null; // トランザクションをコミットします。 con.commit(); // ResultSetの値を表示します。 while(rs.next()) { // ResultSetの列に対応するデータを取得します。 iID = rs.getInt(1); sName = rs.getString(2); - 174 - // 取得した情報を表示します。 System.out.println("ID = " + iID); System.out.println("NAME = " + sName); } // ResultSetのオブジェクトをクローズします。 rs.close(); // Statementのオブジェクトをクローズします。 stmt.close(); // Connectionのオブジェクトをクローズします。 con.close(); } // SQLExceptionが発生した場合の処理を記述します。 catch (SQLException e) { // エラー情報を出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); System.out.println("SQLSTATE : " + e.getSQLState()); System.out.println("ERROR CODE : " + e.getErrorCode()); e.printStackTrace(); } // その他のExceptionが発生した場合の処理を記述します。 catch (Exception e) { // スタックトレースを出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); e.printStackTrace(); } } } A.15 ResultSetを複数同時に利用してデータ参照する ResultSetを複数同時に利用してデータを参照するプログラム例について説明します。 以下のサンプルアプリケーションでは、ネーミングサービスを起動しているホスト名に、“myhost”を指定しています。サン プルアプリケーションを実行する環境に合わせて、ホスト名の値を修正してください。 ResultSetを複数同時に利用してデータ参照するプログラム例 // 以下のパッケージをインポートします。 import java.util.*; import java.sql.*; import javax.sql.*; import javax.naming.*; // クラスを定義します。 public class MyMultiResultSetSelect { public static void main(String args[]) { try { // JNDI環境を指定します。 Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY," com.fujitsu.symfoware.jdbc2.jndisp.SYMContextFactory"); env.put(Context.PROVIDER_URL,"SYM://localhost:26600"); - 175 - InitialContext ctx = new InitialContext(env); // JDBCデータソースを取得します。 DataSource ds = (DataSource)ctx.lookup("jdbc/ds1"); // データベースと接続します。 Connection con = ds.getConnection(); // 自動コミットモードの無効化 con.setAutoCommit(false); // Statementのオブジェクトを生成します。 Statement stmt = con.createStatement(); //SQL文の実行 boolean retval = stmt.execute("SELECT * FROM TBL1; SELECT * FROM TBL2"); // ResultSetのオブジェクトを生成します。 ResultSet rs1 = stmt.getResultSet(); //statementのメソッドを使用し、 //現在のResultSetをクローズしないで //次のResultSetを取得します。 retval = stmt.getMoreResults (Statement.KEEP_CURRENT_RESULT); //次のResultSetが存在するかチェック if (retval == false) { return; } // ResultSetのオブジェクトを生成します。 ResultSet rs2 = stmt.getResultSet(); int iID = 0; String sName = null; while(rs1.next()) { // ResultSetの列に対応する // データを取得します。 iID = rs1.getInt(1); sName = rs1.getString(2); // 取得した情報を表示します。 System.out.println("ID = " + iID); System.out.println("NAME = " + sName); } while(rs2.next()) { // ResultSetの列に対応する // データを取得します。 iID = rs2.getInt(1); sName = rs2.getString(2); // 取得した情報を表示します。 System.out.println("ID = " + iID); System.out.println("NAME = " + sName); } // ResultSetのオブジェクトをクローズします。 rs1.close(); rs2.close(); // Statementのオブジェクトをクローズします。 - 176 - stmt.close(); //トランザクションのコミット con.commit(); // Connectionのオブジェクトをクローズします。 con.close(); } // SQLExceptionが発生した場合の処理を記述します。 catch (SQLException e) { // エラー情報を出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); System.out.println("SQLSTATE : " + e.getSQLState()); System.out.println("ERROR CODE : " + e.getErrorCode()); e.printStackTrace(); } // その他のExceptionが発生した場合の処理を記述します。 catch (Exception e) { // スタックトレースを出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); e.printStackTrace(); } } } A.16 ResultSetの更新機能を利用してデータを更新する ResultSetの更新機能を利用してデータを更新するプログラム例について説明します。 以下のサンプルアプリケーションでは、ネーミングサービスを起動しているホスト名に、“myhost”を指定しています。サン プルアプリケーションを実行する環境に合わせて、ホスト名の値を修正してください。 ResultSetの更新機能を利用してデータを更新するプログラム例 // 以下のパッケージをインポートします。 import java.util.*; import java.sql.*; import javax.sql.*; import javax.naming.*; // クラスを定義します。 public class MyUpdateResultset { public static void main(String args[]) { try { // JNDI環境を指定します。 Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.fujitsu.symfoware.jdbc2.jndisp.SYMContextFactory"); env.put(Context.PROVIDER_URL,"SYM://myhost:26600"); InitialContext ctx = new InitialContext(env); // JDBCデータソースを取得します。 DataSource ds = (DataSource)ctx.lookup("jdbc/ds1"); // データベースと接続します。 - 177 - Connection con = ds.getConnection(); // 自動コミットモードの無効化 con.setAutoCommit(false); // Statementのオブジェクトを生成します。 Statement stmt = con.createStatement (ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_UPDATABLE); // SQL文を実行し、ResultSetの // オブジェクトを生成します。 ResultSet rs = stmt.executeQuery( "SELECT ID ,NAME FROM GENERAL.EMPLOYEE"); //カーソルを一行ずつ移動します。 while (rs.next()) { //データを更新します。 rs.updateInt(1, rs.getInt(1) + 1000); rs.updateString(2,"UPDATE"); rs.updateRow(); } // ResultSetのオブジェクトをクローズします rs.close(); // Statementのオブジェクトをクローズします。 stmt.close(); //トランザクションをコミットします。 con.commit(); // Connectionのオブジェクトをクローズします。 con.close(); } // SQLExceptionが発生した場合の処理を記述します。 catch (SQLException e) { // エラー情報を出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); System.out.println("SQLSTATE : " + e.getSQLState()); System.out.println("ERROR CODE : " + e.getErrorCode()); e.printStackTrace(); } // その他のExceptionが発生した場合の処理を記述します。 catch (Exception e) { // スタックトレースを出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); e.printStackTrace(); } } } A.17 バッチ更新機能を利用してデータを更新する バッチ更新機能を利用してデータを更新するプログラム例について説明します。 以下のサンプルアプリケーションでは、ネーミングサービスを起動しているホスト名に、“myhost”を指定しています。サン プルアプリケーションを実行する環境に合わせて、ホスト名の値を修正してください。 - 178 - バッチ更新機能を利用してデータを更新するプログラム例 // 以下のパッケージをインポートします。 import java.util.*; import java.sql.*; import javax.sql.*; import javax.naming.*; // クラスを定義します。 public class MyBatchUpdate { public static void main(String args[]) { try { // JNDI環境を指定します。 Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.fujitsu.symfoware.jdbc2.jndisp.SYMContextFactory"); env.put(Context.PROVIDER_URL,"SYM://myhost:26600"); InitialContext ctx = new InitialContext(env); // JDBCデータソースを取得します。 DataSource ds = (DataSource)ctx.lookup("jdbc/ds1"); // データベースと接続します。 Connection con = ds.getConnection(); //更新数の配列を用意します int[] updateCounts; //自動コミットモードの無効化 con.setAutoCommit(false); //PreparedStatementオブジェクトを作成します PreparedStatement pstmt = con.prepareStatement ( "INSERT INTO TABLE01 VALUES (?, ?)" ); //バッチ更新の準備をします pstmt.setInt(1, 100); pstmt.setString(2, "ABC"); pstmt.addBatch(); pstmt.setInt(1, 200); pstmt.setString(2, "DEF"); pstmt.addBatch(); //バッチ更新を実行します updateCounts = pstmt.executeBatch(); // PreparedStatementのオブジェクトをクローズします。 pstmt.close(); //トランザクションをコミットします con.commit(); // Connectionのオブジェクトをクローズします。 con.close(); } // SQLExceptionが発生した場合の処理を記述します。 catch (SQLException e) { // エラー情報を出力します。 - 179 - System.out.println("ERROR MESSAGE : " + e.getMessage()); System.out.println("SQLSTATE : " + e.getSQLState()); System.out.println("ERROR CODE : " + e.getErrorCode()); e.printStackTrace(); } // その他のExceptionが発生した場合の処理を記述します。 catch (Exception e) { // スタックトレースを出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); e.printStackTrace(); } } } A.18 タイムゾーン機能を利用してデータの更新を行う タイムゾーン機能を利用してデータの更新を行うプログラム例について説明します。 以下のサンプルアプリケーションでは、ネーミングサービスを起動しているホスト名に、“myhost”を指定しています。サン プルアプリケーションを実行する環境に合わせて、ホスト名の値を修正してください。 タイムゾーン機能を利用してデータの更新を行うプログラム例 // 以下のパッケージをインポートします。 import java.util.*; import java.sql.*; import javax.sql.*; import javax.naming.*; // クラスを定義します。 public class MyTimeZone { public static void main(String args[]) { try { // JNDI環境を指定します。 Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.fujitsu.symfoware.jdbc2.jndisp.SYMContextFactory"); env.put(Context.PROVIDER_URL,"SYM://myhost:26600"); InitialContext ctx = new InitialContext(env); // JDBCデータソースを取得します。 DataSource ds = (DataSource)ctx.lookup("jdbc/ds1"); // データベースと接続します。 Connection con = ds.getConnection(); // 自動コミットモードの無効化 con.setAutoCommit(false); // PreparedStatementのオブジェクトを生成します。 // INSERT文を準備します。 PreparedStatement pstmt = con.prepareStatement ("INSERT INTO TBL (ID,日付) values(?,?)"); // パラメタに値を設定します。 pstmt.setInt(1, 1); // Timestampオブジェクトを生成します。 Timestamp tsJpn = new Timestamp(0); - 180 - // タイムゾーンを指定して、Calendarオブジェクトを生成します。 Calendar calGmt = Calendar.getInstance(TimeZone.getTimeZone("GMT")); // パラメタに値を設定します。 pstmt.setTimestamp(2, tsJpn, calGmt); // SQL文を実行します。 pstmt.execute(); // PreparedStatementのオブジェクトをクローズします。 pstmt.close(); // トランザクションをコミットします。 con.commit(); // Connectionのオブジェクトをクローズします。 con.close(); } // SQLExceptionが発生した場合の処理を記述します。 catch (SQLException e) { // エラー情報を出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); System.out.println("SQLSTATE : " + e.getSQLState()); System.out.println("ERROR CODE : " + e.getErrorCode()); e.printStackTrace(); } // その他のExceptionが発生した場合の処理を記述します。 catch (Exception e) { // スタックトレースを出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); e.printStackTrace(); } } } A.19 Unicode文字のストリーム機能を利用してデータの更新を行う Unicode文字のストリーム機能を利用してデータの更新を行うプログラム例について説明します。 以下のサンプルアプリケーションでは、ネーミングサービスを起動しているホスト名に、“myhost”を指定しています。サン プルアプリケーションを実行する環境に合わせて、ホスト名の値を修正してください。 また、“OrgData.txt”というファイルのデータをデータベースに追加しています。サンプルアプリケーション実行時に、サン プルアプリケーションのclassファイルと同じフォルダ内に“OrgData.txt”を格納してください。“OrgData.txt”の内容につい ては、以下を参照してください。 サンプルデータ“OrgData.txt”の内容 テスト名前 Unicode文字のストリーム機能を利用してデータの更新を行うプログラム例 // 以下のパッケージをインポートします。 import java.util.*; import java.sql.*; import javax.sql.*; - 181 - import java.io.*; import javax.naming.*; // クラスを定義します。 public class MyUnicode { public static void main(String args[]) { try{ // JNDI環境を指定します。 Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.fujitsu.symfoware.jdbc2.jndisp.SYMContextFactory"); env.put(Context.PROVIDER_URL,"SYM://myhost:26600"); InitialContext ctx = new InitialContext(env); // JDBCデータソースを取得します。 DataSource ds = (DataSource)ctx.lookup("jdbc/ds1"); // データベースと接続します。 Connection con = ds.getConnection(); // 自動コミットモードの無効化 con.setAutoCommit(false); // データ削除 Statement stmt = con.createStatement(); stmt.executeUpdate("DELETE FROM GENERAL.EMPLOYEE"); stmt.close(); // INSERT文を準備 PreparedStatement pstmt = con.prepareStatement("INSERT INTO GENERAL.EMPLOYEE VALUES(1, ?)"); // Unicodeデータを設定 FileReader fr = new FileReader("OrgData.txt"); pstmt.setCharacterStream(1, fr); // INSERT文を実行 pstmt.executeUpdate(); pstmt.close(); fr.close(); con.commit(); // ResultSetインタフェースのオブジェクトを生成 Statement stmt2 = con.createStatement(); ResultSet rs = stmt2.executeQuery("SELECT NAME FROM GENERAL.EMPLOYEE"); // データベースのデータを参照 while (rs.next()) { Reader rd = rs.getCharacterStream(1); // 出力先ファイルを指定 Writer wr = new FileWriter("AftData.txt"); // ストリームからデータをchar配列で一括に読み込み char[] buff = new char[10]; rd.read(buff); // 出力先ファイルにデータを印字 wr.write(buff); - 182 - wr.close(); rd.close(); } // 解放処理 rs.close(); stmt2.close(); con.commit(); con.close(); } // SQLExceptionが発生した場合の処理を記述します。 catch (SQLException e) { // エラー情報を出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); System.out.println("SQLSTATE : " + e.getSQLState()); System.out.println("ERROR CODE : " + e.getErrorCode()); e.printStackTrace(); } // その他のExceptionが発生した場合の処理を記述します。 catch (Exception e) { // スタックトレースを出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); e.printStackTrace(); } } } - 183 - 付録B DriverManagerクラスからの接続 DriverManagerクラスのAPIを使用し、データベースに接続する場合について説明します。 B.1 URL記述形式 各接続形態の記述形式は、以下のとおりです。 記述形式 ローカルアクセスの場合 jdbc:symfold:///[<db_sys>.]<db_env>[;<options>] リモートアクセス(RDB2_TCP連携)の場合 jdbc:symford://<host>:<port_no>/<db_env>[;<options>] 引数 <host> 接続するサーバの18バイト以内のホスト名またはIPアドレスを指定します。 省略することはできません。 <port_no> RDB2_TCP連携で使用するポート番号を指定します。 ポート番号については、システム管理者に確認してください。 省略することはできません。 <db_sys> RDBシステム名を指定します。 このパラメタは、Symfoware/RDBにRDBシステム名を付けて運用する場合にだけ指定します。 RDBシステム名については、システム管理者に確認してください。 省略した場合は、システム名なしになります。 <db_env> データ資源名を指定します。 データ資源名については、システム管理者に確認してください。 省略することはできません。 <options> JDBCドライバの動作環境に関するオプションを以下の形式で指定します。 オプション名 = 指定する値 指定できるオプションについては、“B.2 getConnectionメソッドのオプション”を参照してください。 オプションは以下の形式で複数指定することができます。 例 user=UID;password=PWD 記述例 ローカルアクセスを使用する場合 jdbc:symfold:///COMPANY - 184 - リモートアクセス(RDB2_TCP連携)でuser、passwordを指定する場合 jdbc:symford://myhost:26551/COMPANY;user=UID;password=PWD B.2 getConnectionメソッドのオプション DriverManagerクラスのgetConnectionメソッドで指定可能なオプションについて以下に示します。 オプション名 範囲 省略値 意味 schema - - アプリケーション内で使用する、SQL文に対 するデフォルトスキーマ名を指定します。 user - - データベースに接続するためのユーザIDを 指定します。ただし、ローカルのSymfoware/ RDBと接続する場合、またはWindows(R) 2000以外を利用し、リモートアクセスで接続 先ホスト名に“localhost”、またはループバッ クアドレスが指定された場合は、ユーザIDの 指定は不要です。 password - - 上記ユーザIDに対するパスワードを指定し ます。ただし、ローカルのSymfoware/RDBと 接続する場合、またはWindows(R) 2000以 外を利用し、リモートアクセスで接続先ホスト 名に“localhost”、またはループバックアドレ スが指定された場合は、パスワードの指定は 不要です。 javaconverter - - JDBCドライバがコード変換時に使用する、 Javaのエンコーディングを指定します。 省略された場合、JDBCドライバが動作して いるJava実行環境に合わせて、自動設定さ れます。 ctuneparam - - Symfoware Serverのクライアント用の動作環 境ファイルに相当する指定をすることができ ます。詳細は、“5.2.3.4 ctuneparamオプショ ンについて”を参照してください。 statementcache 0~32000 0 ステートメントキャッシュする文の数を指定し ます。0を指定した場合、ステートメントキャッ シュ機能は無効になります。 autoclosestatement YES NO NO ステートメントキャッシュ機能利用時に、 PreparedStatementおよびCallableStatement のクローズをJDBCドライバが自動的に行う かどうかを指定します。 YES:自動クローズを行う NO:自動クローズを行わない default_isolation READ_UNC OMMITTED READ_COM MITTED REPEATABL E_READ SERIALIZAB LE SERIALIZABLE 独立性水準の初期値を指定します。 READ_UNCOMMITTED:独立性水準の初 期値をREAD UNCOMMITTEDとします。 READ_COMMITTED:独立性水準の初期 値をREAD COMMITTEDとします。 REPEATABLE_READ:独立性水準の初期 値をREPEATABLE READとします。 - 185 - オプション名 範囲 省略値 意味 SERIALIZABLE:独立性水準の初期値を SERIALIZABLEとします。 default_readonly false true sqlrtenv - トランザクションアクセスモードの初期値を指 定します。 false:トランザクションアクセスモードの初期 値をREAD WRITEとします。 true:トランザクションアクセスモードの初期値 をREAD ONLYとします。 false クライアントイ ンストール先¥etc ¥clientenv ¥fssqlenvj クライアント用の動作環境ファイルを指定す ることができます。詳細は、“5.2.3.5 クライア ント用の動作環境ファイルの指定について” を参照してください。 /opt/ FJSVsymcl/etc/ clientenv/fssqlenvj /opt/ FJSVsymcl/etc/ clientenv/fssqlenvj 注意事項 ・ autoclosestatementオプションは、statementcacheオプションに1~32000が指定された場合に指定可能です。 ・ ユーザIDとパスワードは、以下の2個所で指定可能です。 1. URLに指定するオプション 2. DriverManagerクラスのgetConnectionメソッドの引数 2箇所で指定された場合、2)の値が有効となります。 ・ アプリケーション実行環境のロケールがCで、ASCIIコード範囲外の文字データを利用する場合、javaconverterオプ ションで、対象データのエンコーディングを指定してください。 ・ default_isolationにREPEATABLE_READを指定しても、システム用の動作環境ファイルのR_LOCKまたはctuneparam オプションのCLI_R_LOCKがNOの場合、独立性水準はSERIALIZABLEとなります。 ・ default_isolationを省略またはSERIALIZABLEを指定しても、システム用の動作環境ファイルのR_LOCKまたは ctuneparamオプションのCLI_R_LOCKがYESの場合、独立性水準はREPEATABLE READとなります。 ・ サ ー バ 用 の 動 作 環 境 フ ァ イ ル の DSO_LOCK ま た は ctuneparam オ プ シ ョ ン の CLI_DSO_LOCK を 指 定 し て 、 default_isolationまたはdefault_readonlyを指定した場合は、サーバ接続時にエラーが発生します。 参照 クライアント用の動作環境ファイルに指定できるパラメタは“アプリケーション開発ガイド(共通編)”の“クライアント用の動 作環境ファイル”を参照してください。 B.3 データベースとの接続/切断 データベースの接続と切断について説明します。 手順 データベースと接続/切断をする場合、以下の手順で行います。 - 186 - 記述例 データベースと接続/切断をする場合の記述例について以下に示します。 (1) Class.forName("com.fujitsu.symfoware.jdbc.SYMDriver"); (2) String url = "jdbc:symford://myhost:26551/COMPANY"; (3) Connection con = DriverManager.getConnection(url,"UID","PWD"); : (4) con.setAutoCommit(false); (5) con.close(); (1) JDBCドライバの指定 (2) 接続先データベースの指定 (3) データベースとの接続 (4) 自動コミットモードの無効化 (5) データベースとの接続の切断 以下に各項目の設定方法を示します。 JDBCドライバの指定 forNameメソッドを使用し、JDBCドライバのクラスを指定します。 接続先データベースの指定 接続するデータベース環境をURLで指定します。 URLの指定方法についての詳細は、“B.1 URL記述形式”を参照してください。 データベースとの接続 DriverManagerクラスのgetConnectionメソッドを使用し、データベースと接続します。 自動コミットモードの無効化 自動コミットモードを無効化します。 データベースとの接続の切断 データベースとの接続を切断します。 Connectionインタフェースのcloseメソッドを使用します。 - 187 - B.4 サンプルアプリケーション サンプルアプリケーションを以下に示します。 ここでは、データベースのデータを参照するプログラム例を説明します。 データベースへの接続形態には、リモートアクセス(RDB2_TCP連携)を使用しています。 // 以下のパッケージをインポートします。 import java.sql.*; // クラスを定義します。 public class MyURLAccess { public static void main(String args[]) { try { // JDBCドライバを指定します。 Class.forName("com.fujitsu.symfoware.jdbc.SYMDriver"); // データベースと接続します。 Connection con = DriverManager.getConnection("jdbc:symford://myhost:26551/COMPANY", "UID", "PWD"); // 自動コミットモードの無効化 con.setAutoCommit(false); // Statementインタフェースのオブジェクトを生成します。 Statement stmt = con.createStatement(); // SQL文を実行し、ResultSetの // オブジェクトを生成します。 ResultSet rs = stmt.executeQuery("SELECT ID,NAME FROM GENERAL.EMPLOYEE"); int iID = 0; String sName = null; while(rs.next()) { // ResultSetの列に対応する // データを取得します。 iID = rs.getInt(1); sName = rs.getString(2); // 取得した情報を表示します。 System.out.println("ID = " + iID); System.out.println("NAME = " + sName); } // ResultSetのオブジェクトをクローズします。 rs.close(); // Statementのオブジェクトをクローズします。 stmt.close(); // Connectionのオブジェクトをクローズします。 con.close(); } // SQLExceptionが発生した場合の処理を記述します。 catch (SQLException e) - 188 - { // エラー情報を出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); System.out.println("SQLSTATE : " + e.getSQLState()); System.out.println("ERROR CODE : " + e.getErrorCode()); e.printStackTrace(); } // その他のExceptionが発生した場合の処理を記述します。 catch (Exception e) { // スタックトレースを出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); e.printStackTrace(); } } } - 189 - 付録C 異常時の対処 JDBCドライバ利用時に、異常が発生した際の対処方法について説明します。 なお、ここに記載されていない異常が発生した場合は、“付録E メッセージリファレンス”または“5.4 アプリケーションのデ バッグ”を参照し、対処を行ってください。 "LDWrapperクラスがローカルデータベースアクセスをロードしていません"のエラーが返却された場合 ・ JDBCドライバが正しくインストールされているかを確認してください。 ・ JDBCドライバの環境設定に誤りがある可能性があります。“5.3 アプリケーションの実行”を参照し、環境設定を見直 してください。 注意 ServletやJSPで環境設定を変更した場合、変更した値を有効にするために、使用しているServletコンテナを再起動 してください。 ・ アプリケーションサーバ上に、以下のどちらかの製品が正しくインストールされていることを確認してください。 - Symfoware Server クライアント機能 - Symfoware Server "データ受信中にサーバとの通信が切断されました"のエラーが返却された場合 ・ 指定されたポート番号に誤りがある可能性があります。ポート番号が正しいかどうか、確認してください。 "コネクションの失敗: I/Oエラーが発生しました"のエラーが返却された場合 ・ 指定されたホスト名、ポート番号およびデータ資源名が正しいか確認してください。 ・ Symfoware Serverが起動されているかを確認してください。 "同時に使用できるコネクション数の最大値を超えました"のエラーが返却された場合 ・ JDBCドライバが同時に使用できるコネクション数の最大値を超えたため、コネクションをクローズするか、JDBCデー タソースオプション設定画面で最大コネクション数の値を増やしてください。 必要に応じてSymfoware Serverの最大コネクション数も変更してください。 "コネクション違反 - SQLクライアントがSQLコネクションを獲得できませんでした"のエラーが返却された場合 ・ JDBCドライバでタイムアウトが発生した可能性があります。 JDBCデータソースオプション設定画面のサーバ待ち時間の値を見直し,適切な値を設定してください。0を指定した 場合は、待ち時間の監視を行いません。 ・ Symfoware Serverが正しく動作しているかを再度確認してください。 "JYP1059E 不当なプロトコルが転送されました."のエラーが返却された場合 ・ 指定されたポート番号に誤りがある可能性があります。ポート番号が正しいかどうか、確認してください。 "java.sql.SQLException: No suitable driver "のエラーが返却された場合 ・ DriverManager.getConnectionメソッドの引数に指定するURLの記述形式が正しいか確認してください。 ・ Class.forNameメソッドの引数に指定するJDBCドライバ名が正しいか確認してください。 - 190 - "java.lang.NoClassDefFoundError"のエラーが返却された場合 ・ JDBCドライバの環境設定に誤りがある可能性があります。“5.3 アプリケーションの実行”を参照し、環境設定を見直 してください。 "java.lang.OutOfMemoryError"のエラーが返却された場合 ・ メモリ不足が発生しました。 Javaでは、不要になったメモリの解放はガーベジコレクションで行われます。しかし、ガーベジコレクションは、使われ なくなったオブジェクトが使用しているメモリを解放するだけです。アプリケーションが必要なメモリの解放としては、十 分ではありません。 そのため、アプリケーションがメモリ不足になる場合があります。 メモリ不足が発生した場合は、以下の対処を行ってください。 - Java実行環境のヒープサイズを拡張する。 - System.gcメソッドを使い、強制的にメモリの解放を行う。 ただし、System.gcメソッドは実行性能に影響します。 呼び出しのタイミングなどを十分に検討した上で使用してください。 [Java実行環境のヒープサイズ拡張例] 初期サイズを64MByte、最大サイズを128MByteに設定します。 java -Xms64m -Xmx128m <class Name> "java.lang.IncompatibleClassChangeError"のエラーが返却された場合 ・ 現在有効になっているJDKのバージョンが、1.1.*になっている可能性があります。以下のコマンドを使用して、有効 になっているJDKのバージョンを確認してください。 java -version JDK1.1.*を使用している場合、JDKの環境設定(環境変数“PATH”)を見直し、再度確認してください。 "java.lang.UnsupportedClassVersionError"のエラーが返却された場合 ・ 現在有効になっているJDKのバージョンとJDBCドライバとの組合せに問題がある可能性があります。 以下のコマンドを使用して、有効になっているJDKのバージョンを確認し、JDBCドライバモジュールがそのバージョ ンをサポートしているかを確認していください。 java -version JDBCドライバとJDKとの組合せについては、“1.4 JDKとの組合せ”を参照してください。 ・ 利用するJDBCドライバの環境設定に誤りがある可能性があります。“5.3 アプリケーションの実行”を参照し、環境設 定を見直してください。 - 191 - 付録D 使用可能SQL文一覧 JDBCドライバを使用したアプリケーションで指定可能なSQL文について説明します。 以下のインタフェースのパラメタで指定可能なSQL文について説明します。 ・ CallableStatementインタフェース ・ PreparedStatementインタフェース ・ Statementインタフェース CallableStatementインタフェース 分類 ストアドプロシジャ SQL文 CALL文 PreparedStatementインタフェース 分類 スキーマ定義文 SQL文 CREATE SCHEMA文 (注1) (スキーマ定義) CREATE TABLE文 (注1) (注2) (表定義) CREATE VIEW文 (ビュー定義) CREATE PROCEDURE文 (プロシジャルーチン定義) CREATE FUNCTION文 (ファンクションルーチン定義) CREATE INDEX文 (注1) (注2) (インデックス定義) CREATE TRIGGER文 (トリガ定義) CREATE SEQUENCE文 (順序定義) スキーマ操作文 DROP SCHEMA文 (スキーマ削除文) DROP TABLE文 (表削除文) ALTER TABLE文 (表定義変更文) DROP VIEW文 (ビュー削除文) DROP PROCEDURE文 (プロシジャルーチン削除文) DROP INDEX文 (インデックス削除文) DROP TRIGGER文 (トリガ削除文) - 192 - 分類 SQL文 SWAP TABLE文 (表交換文) DROP SEQUENCE文 (順序削除文) DROP FUNCTION文 (ファンクションルーチン削除文) 格納構造定義文 CREATE SCOPE文 (スコープ定義文) 格納構造操作文 DROP SCOPE文 (スコープ削除文) APPLY SCOPE文 (スコープ適用文) RELEASE SCOPE文 (スコープ解除文) データ操作文 問合せ式 問合せ式(動的パラメタあり) INSERT文 INSERT文(動的パラメタあり) DELETE文: 探索 DELETE文: 探索(動的パラメタあり) UPDATE文: 探索 UPDATE文: 探索(動的パラメタあり) DELETE文: 位置づけ DELETE文: 位置づけ(動的パラメタあり) UPDATE文: 位置づけ UPDATE文: 位置づけ(動的パラメタあり) トランザクション管理文 SET TRANSACTION文 セション管理文 SET SCHEMA文 利用者制御文 CREATE USER文 (利用者定義文) DROP USER文 (利用者削除文) ALTER USER文 (利用者変更文) アクセス制御文 CREATE ROLE文 (ロール定義文) DROP ROLE文 (ロール削除文) GRANT文 REVOKE文 - 193 - Statementインタフェース 分類 スキーマ定義文 SQL文 CREATE SCHEMA文 (注1) (スキーマ定義) CREATE TABLE文 (注1) (注2) (表定義) CREATE VIEW文 (ビュー定義) CREATE PROCEDURE文 (プロシジャルーチン定義) CREATE FUNCTION文 (ファンクションルーチン定義) CREATE INDEX文 (注1) (注2) (インデックス定義) CREATE TRIGGER文 (トリガ定義) CREATE SEQUENCE文 (順序定義) スキーマ操作文 DROP SCHEMA文 (スキーマ削除文) DROP TABLE文 (表削除文) ALTER TABLE文 (表定義変更文) DROP VIEW文 (ビュー削除文) DROP PROCEDURE文 (プロシジャルーチン削除文) DROP INDEX文 (インデックス削除文) DROP TRIGGER文 (トリガ削除文) SWAP TABLE文 (表交換文) DROP SEQUENCE文 (順序削除文) DROP FUNCTION文 (ファンクションルーチン削除文) 格納構造定義文 CREATE SCOPE文 (スコープ定義文) 格納構造操作文 DROP SCOPE文 (スコープ削除文) APPLY SCOPE文 (スコープ適用文) RELEASE SCOPE文 (スコープ解除文) - 194 - 分類 データ操作文 SQL文 問合せ式 INSERT文 DELETE文: 探索 UPDATE文: 探索 DELETE文: 位置づけ UPDATE文: 位置づけ トランザクション管理文 SET TRANSACTION文 セション管理文 SET SCHEMA文 利用者制御文 CREATE USER文 (利用者定義文) DROP USER文 (利用者削除文) ALTER USER文 (利用者変更文) アクセス制御文 CREATE ROLE文 (ロール定義文) DROP ROLE文 (ロール削除文) GRANT文 REVOKE文 注1) JDBCドライバを利用したアプリケーションで、スキーマ定義文、表定義文およびインデックス定義文を実行する場 合、指定するスキーマ名、表名およびインデックス名は、通常、8文字以内で指定します。 スキーマ名などの文字数を拡張したい場合、システム用の動作環境ファイルの“DEFAULT_DSI_NAME”を指定してく ださい。 参照 “DEFAULT_DSI_NAME”の詳細は、“セットアップガイド”を参照してください。 注2) JDBCドライバを利用したアプリケーションで、表定義文およびインデックス定義文を実行する場合、データベース名 と同じ名前の空きのあるデータベーススペースを用意しておく必要があります。 - 195 - 付録E メッセージリファレンス 各エラーメッセージに対する利用者の対処方法について説明します。 データベースへアクセス中にエラーが発生した場合には、SQLExceptionが返却されます。SQLExceptionは以下の情報 を取得できます。 E.1 SQLSTATEエラーメッセージ E.2 Vendorエラーメッセージ symjdコマンドを実行した場合、symjdメッセージが標準出力されます。 E.3 symjdメッセージ E.1 SQLSTATEエラーメッセージ SQLSTATEエラーが発生した場合、SQLSTATE値とエラーメッセージが返却されます。 ここでは、以下の情報について説明します。 ・ SQLSTATE値 ・ エラーメッセージ ・ メッセージの意味 ・ 利用者の処置 SQLSTATE値は、getSQLStateメソッドを使用して参照します。 エラーメッセージは、getMessageメソッドを使用して参照します。 本書中に記載されていないSQLSTATE値が通知される場合があります。 そのエラーは、サーバから通知されたものです。 エラーの説明については、サーバの該当マニュアルを参照してください。 エラーメッセージのプレフィックスがJYPの場合、“メッセージ集”を参照してください。 参照するメッセージのSQLSTATE値を選択してください。 E.1.1 SQLSTATEエラーメッセージ(08001) SQLSTATE値が08001の場合 エラーメッセージ(英語) Connection infringement - The SQL client cannot establish SQL connection エラーメッセージ(日本語) コネクション違反 - SQLクライアントがSQLコネクションを獲得できませんでした メッセージの意味 JDBCドライバは、TCP/IPの初期化に失敗しました。 利用者の処置 Symfowareが正しく動作しているかを確認し、原因を取り除いた後、アプリケーションを再度実行してください。 E.1.2 SQLSTATEエラーメッセージ(08003~0A000) - 196 - SQLSTATE値が08003の場合 エラーメッセージ(英語) Connection infringement - When there is no connection エラーメッセージ(日本語) コネクション違反 - コネクションが存在しません メッセージの意味 コネクションがすでにクローズされているか切断されています。 利用者の処置 原因を取り除いた後、アプリケーションを再度実行してください。 - アプリケーションでConnection.closeを実行後にConnectionオブジェクトを使用していないか、ご確認ください。 - アプリケーションでConnection.closeによるConnectionオブジェクトの回収漏れがないか、ご確認ください。 SQLSTATE値が08006の場合 エラーメッセージ(英語) Connection infringement - Connection fails エラーメッセージ(日本語) コネクション違反 - コネクションの失敗 メッセージの意味 サーバからの応答に対してタイムアウトが発生しました。 利用者の処置 サーバ上のデータベースが排他待ち状態である可能性があります。 Symfowareが正しく動作しているかを確認してください。 サーバ上に問題がない場合、URLのtcptimerオプションの値を増やしてください。アプリケーション修正後、再度実行 してください。 指定されたSQL文の長さが32000バイトを超えているか、空文字列である可能性があります。SQL文を修正し、アプリ ケーションを再度実行してください。 SQLSTATE値が08007の場合 エラーメッセージ(英語) Connection infringement - Transaction was lost (transaction is interminable) エラーメッセージ(日本語) コネクション違反 - トランザクションが無くなりました メッセージの意味 以下の事象が発生しています。 - クライアントからコミットが要求されたときに予期しないエラーが発生した。 - トランザクションがなくなったため、サーバのコミットの状態がクライアントに返却されていない。 利用者の処置 Symfowareが正しく動作しているかを確認してください。 サーバ上に問題がない場合、URLのtcptimerオプションの値を増やしてください。アプリケーション修正後、再度実行 してください。 - 197 - SQLSTATE値が0A000の場合 エラーメッセージ(英語) This method is not supported by the Driver エラーメッセージ(日本語) 指定されたメソッドは当ドライバではサポートされていません メッセージの意味 現バージョンのJDBCドライバでは、サポートされていないメソッドが使用されました。 利用者の処置 アプリケーションから未サポートのメソッドを削除して、アプリケーションを再度実行してください。 E.1.3 SQLSTATEエラーメッセージ(22000~2A000) SQLSTATE値が22000の場合 エラーメッセージ(英語) Unexpected data エラーメッセージ(日本語) データ例外 メッセージの意味 アプリケーション実行時に、最大値を超える文字列を指定したSQL文、または空のSQL文がJDBCドライバに渡されま した。 利用者の処置 アプリケーション内のSQL文を修正し、アプリケーションを再度実行してください。 SQLSTATE値が22001の場合 エラーメッセージ(英語) Unexpected data - data too big for column エラーメッセージ(日本語) データ例外 - 文字データの右側を切り捨てました メッセージの意味 取得したデータ長がカラムの長さと一致しないため、内部プロトコルエラーが発生しました。 利用者の処置 指定されたSQL文の長さが32000バイトを超えているか、空文字列である可能性があります。SQL文を修正し、アプリ ケーションを再度実行してください。 SQLSTATE値が22003の場合 エラーメッセージ(英語) Unexpected data - Outside numerical range エラーメッセージ(日本語) データ例外 - 扱える数値の範囲を超えました - 198 - メッセージの意味 サーバ上から受け取ったデータが、Javaで使用可能なデータ型に変換できませんでした。 データに誤りがあるか、またはオーバフロー状態である可能性があります。 利用者の処置 原因となっているデータが含まれているカラムまたは行を採取し、データに誤りがないかを確認してください。 SQLSTATE値が22007の場合 エラーメッセージ(英語) Unexpected data - The date/time format is incorrect エラーメッセージ(日本語) データ例外 - 日付/時間の形式に誤りがあります メッセージの意味 サーバからの日時型データの取得に失敗しました。 利用者の処置 原因となっているデータが含まれているカラムまたは行を採取し、データに誤りがないかを確認してください。 SQLSTATE値が22023の場合 エラーメッセージ(英語) Unexpected data - The parameter value is incorrect エラーメッセージ(日本語) データ例外 - パラメタ値に誤りがあります メッセージの意味 パラメタの値に誤りがあります。 利用者の処置 パラメタの値を修正し、アプリケーションを再度実行してください。 SQLSTATE値が24000の場合 エラーメッセージ(英語) Cursor in invalid state エラーメッセージ(日本語) カーソル状態が不当です メッセージの意味 API呼出しのシーケンスがJDBCドライバの要求と一致していないため、誤った状態で、カーソルが使用されました。 利用者の処置 アプリケーション内のAPI呼出しのシーケンスを確認してください。 SQLSTATE値が25000の場合 エラーメッセージ(英語) Disconnection request while transaction active - 199 - エラーメッセージ(日本語) トランザクション状態が不当です メッセージの意味 コミットまたはロールバックの処理が行われずに、サーバとの接続が切断され、トランザクションが初期化されました。 利用者の処置 アプリケーション内のAPI呼出しのシーケンスを確認してください。 SQLSTATE値が2A000の場合 エラーメッセージ(英語) Syntax error or access protocol infringement inside direct SQL statement エラーメッセージ(日本語) SQL文構文エラー メッセージの意味 問合せ式が記述されているexecuteUpdateメソッドが実行されました。 SQL文の文法に誤りがあります。 利用者の処置 アプリケーションを修正し、再度実行してください。 E.1.4 SQLSTATEエラーメッセージ(34000~42000) SQLSTATE値が34000の場合 エラーメッセージ(英語) Cursor name is invalid エラーメッセージ(日本語) カーソル名が不当です メッセージの意味 カーソル名に誤りがあるため、使用するカーソルがオープンしていません。 利用者の処置 有効なカーソル名を設定してください。 SQLSTATE値が37000の場合 エラーメッセージ(英語) Syntax error or access protocol infringement inside dynamic SQL statement エラーメッセージ(日本語) SQL文構文エラー メッセージの意味 SQL文の文法に誤りがあります。 利用者の処置 アプリケーションを修正し、再度実行してください。 - 200 - SQLSTATE値が3C000の場合 エラーメッセージ(英語) Cursor name already exists エラーメッセージ(日本語) カーソル名がすでに存在しています メッセージの意味 指定されたカーソル名は、すでに存在しています。 利用者の処置 すでに、存在しているカーソル名は使用できません。 一意のカーソル名を指定してください。 SQLSTATE値が3F000の場合 エラーメッセージ(英語) The schema name is incorrect エラーメッセージ(日本語) スキーマ名が不当です メッセージの意味 スキーマ名が誤っています。 利用者の処置 正しいスキーマ名を指定してください。 SQLSTATE値が40000の場合 エラーメッセージ(英語) Transaction terminated by host before commit エラーメッセージ(日本語) トランザクションエラー メッセージの意味 サーバ側で、トランザクションのコミットに失敗しました。 トランザクションは、ロールバックされました。 利用者の処置 アプリケーションを再度実行してください。 SQLSTATE値が42000の場合 エラーメッセージ(英語) Syntax error or access protocol infringement エラーメッセージ(日本語) アクセス違反です メッセージの意味 SQL文の文法に誤りがあります。 - 201 - 利用者の処置 正しいSQL文を指定してください。 SymfowareがサポートしていないSQLが記述された場合も、本メッセージが出力されます。 E.1.5 SQLSTATEエラーメッセージ(HZ080~HZxxx(xxxは3けたの数字)) SQLSTATE値がHZ080の場合 エラーメッセージ(英語) No data resource available on server エラーメッセージ(日本語) 情報がサーバから受け取れません メッセージの意味 データベースが利用できません。 利用者の処置 サーバマシンの状態を確認して、再度実行してください。 サーバに異常がない場合、システムの環境設定を見直してください。 SQLSTATE値がHZ100の場合 エラーメッセージ(英語) Data resource selected not known on server エラーメッセージ(日本語) データ資源名がサーバ上で認識されません メッセージの意味 URLの指定に誤りがあります。 利用者の処置 URLに指定するサーバのホスト名、ポート番号およびデータ資源名を修正して、アプリケーションを再度実行してくだ さい。 SQLSTATE値がHZ180の場合 エラーメッセージ(英語) Operation aborted on server エラーメッセージ(日本語) オペレーションが中止されました メッセージの意味 サーバに異常が発生したため、処理を中止しました。 利用者の処置 サーバマシンの状態を確認して再度実行してください。 サーバに異常がない場合、システムの環境設定を見直してください。 - 202 - SQLSTATE値がHZ220の場合 エラーメッセージ(英語) User authentication failed on server エラーメッセージ(日本語) 利用者の認証がサーバ上で失敗しました メッセージの意味 ユーザIDあるいはパスワードの指定に誤りがあります。 利用者の処置 ユーザIDおよびパスワードを修正して、アプリケーションを再度実行してください。 SQLSTATE値がHZ370の場合 エラーメッセージ(英語) SQL DBL statement not supported by this server エラーメッセージ(日本語) 指定されたSQL文はサポートされていません メッセージの意味 使用できないSQL文が記述されています。 利用者の処置 原因を取り除いた後、アプリケーションを再度実行してください。 SQLSTATE値がHZxxx (xxxは、上記以外の3けた)の場合 メッセージの意味 サーバに異常が発生しました。 利用者の処置 サーバマシン/クライアントともシステムを再起動して、アプリケーションを再度実行してください。 原因が明らかでない場合は、技術員(SE)に連絡してください。 E.1.6 SQLSTATEエラーメッセージ(S1000~S1093) SQLSTATE値がS1000の場合 エラーメッセージ(英語) General error - message will be vendor specific messages エラーメッセージ(日本語) 一般的なエラー - メッセージが利用者固有のメッセージです メッセージの意味 Vendorエラーメッセージを参照してください。 利用者の処置 Vendorエラーメッセージを参照してください。 - 203 - SQLSTATE値がS1009の場合 エラーメッセージ(英語) Invalid argument passed to this method エラーメッセージ(日本語) このメソッドが呼ばれるのは誤っています メッセージの意味 メソッドの引数に誤りがあります。 利用者の処置 メソッドの引数を修正し、アプリケーションを再度実行してください。 SQLSTATE値がS1011の場合 エラーメッセージ(英語) Invalid operation at this time as the connection is in transaction state エラーメッセージ(日本語) トランザクション処理でこの操作は誤っています メッセージの意味 コネクションが、トランザクションの状態のときに使用できないメソッドが、呼び出されました。 利用者の処置 メソッドを呼び出す前に、トランザクションを終了(コミットまたはロールバック)してください。 SQLSTATE値がS1093の場合 エラーメッセージ(英語) Invalid parameter number エラーメッセージ(日本語) パラメタ番号に誤りがあります メッセージの意味 動的SQL文のパラメタの値を設定する場合に、パラメタのインデックスに誤った値が指定されました。 利用者の処置 パラメタのインデックスに有効な値を設定し、アプリケーションを再度実行してください。 E.2 Vendorエラーメッセージ Vendorエラーメッセージは、SQLSTATE値がS1000の場合に通知されるメッセージです。 Vendorの以下の情報について説明します。 ・ エラーコード ・ エラーメッセージ ・ メッセージの意味 ・ 利用者の処置 エラーコードは、getErrorCodeメソッドを使用して参照します。 - 204 - エラーメッセージは、getMessageメソッドを使用して参照します。 参照するメッセージのエラーコードを選択してください。 E.2.1 Vendorエラーメッセージ(0~9) エラーコードが0の場合 エラーメッセージ(英語) Access violation occurred on server エラーメッセージ(日本語) アクセス違反が発生しました メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが6の場合 エラーメッセージ(英語) Data resource name not provided to server エラーメッセージ(日本語) データ資源名がサーバに与えられていません メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが7の場合 エラーメッセージ(英語) Data resource specified not available on server エラーメッセージ(日本語) 有効でないデータ資源が記されました メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが8の場合 エラーメッセージ(英語) Data resource selected already opened on server - 205 - エラーメッセージ(日本語) データ資源は既にサーバ上で使われています メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが9の場合 エラーメッセージ(英語) Data resource selected not known on server エラーメッセージ(日本語) データ資源がサーバ上で認識されません メッセージの意味 データベースへの接続情報の指定に誤りがあります。 利用者の処置 サーバのホスト名、ポート番号およびデータ資源名を修正して、アプリケーションを再度実行してください。 E.2.2 Vendorエラーメッセージ(12~99) エラーコードが12の場合 エラーメッセージ(英語) Internal Error: duplicate data resource handle occurred on server エラーメッセージ(日本語) 内部エラー: サーバでduplicate data resource handleが発生しました メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが13の場合 エラーメッセージ(英語) Internal Error: duplicate dialogue ID occurred on server エラーメッセージ(日本語) 内部エラー: サーバでduplicate dialogue IDが発生しました メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 - 206 - エラーコードが14の場合 エラーメッセージ(英語) Internal Error: duplicate operation ID occurred on server エラーメッセージ(日本語) 内部エラー: サーバでduplicate operation IDが発生しました メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが15の場合 エラーメッセージ(英語) Invalid sequence of requests sent to server エラーメッセージ(日本語) 多くの要求がサーバに送られた メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが16の場合 エラーメッセージ(英語) No data resource available on server エラーメッセージ(日本語) 情報がサーバから受け取れません メッセージの意味 データベースが利用できません。 利用者の処置 サーバマシンの状態を確認して、再度実行してください。 サーバに異常がない場合、システムの環境設定を見直してください。 エラーコードが17の場合 エラーメッセージ(英語) Operation aborted on server エラーメッセージ(日本語) オペレーションが中止されました メッセージの意味 サーバに異常が発生したため、処理を中止しました。 利用者の処置 サーバマシンの状態を確認して再度実行してください。 - 207 - サーバに異常がない場合、システムの環境設定を見直してください。 エラーコードが18の場合 エラーメッセージ(英語) Requested operation cancelled by server エラーメッセージ(日本語) サーバからオペレーションのキャンセルの要求がありました メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが19の場合 エラーメッセージ(英語) Internal Error: data resource handle not known on server エラーメッセージ(日本語) 内部エラー: data resource handleがわかりません メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが20の場合 エラーメッセージ(英語) Service not negotiated with server エラーメッセージ(日本語) サービスがサーバに受けられません メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが21の場合 エラーメッセージ(英語) Transaction rolled back by server エラーメッセージ(日本語) トランザクションがサーバ上でロールバックされました メッセージの意味 システムで内部エラーが発生しました。 - 208 - 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが22の場合 エラーメッセージ(英語) User authentication failed on server エラーメッセージ(日本語) 利用者の認証がサーバ上で失敗しました メッセージの意味 ユーザIDあるいはパスワードの指定に誤りがあります。 利用者の処置 ユーザIDおよびパスワードを修正して、アプリケーションを再度実行してください。 エラーコードが99の場合 エラーメッセージ(英語) Unforeseen error type encountered in response from server エラーメッセージ(日本語) サーバからの応答で予期せぬエラーを検出しました メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 E.2.3 Vendorエラーメッセージ(100~117) エラーコードが100の場合 エラーメッセージ(英語) Internal Error: host identifier error occurred on server エラーメッセージ(日本語) 内部エラー: サーバ上でhost identifierエラーが発生しました メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが102の場合 エラーメッセージ(英語) SQL access control violation occurred on server - 209 - エラーメッセージ(日本語) SQLアクセスコントロール違反が発生しました メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが103の場合 エラーメッセージ(英語) SQL database resource already opened on this connection to server エラーメッセージ(日本語) SQLデータベース資源がすでに存在しています メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが104の場合 エラーメッセージ(英語) SQL DBL statement not supported by this server エラーメッセージ(日本語) 指定されたSQL文はサポートされていません メッセージの意味 使用できないSQL文が記述されています。 利用者の処置 原因を取り除いた後、アプリケーションを再度実行してください。 エラーコードが105の場合 エラーメッセージ(英語) SQL DBL argument count mismatch for request sent to this server エラーメッセージ(日本語) SQL DBLの数が誤っています メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 - 210 - エラーコードが106の場合 エラーメッセージ(英語) SQL DBL argument type mismatch for request sent to this server エラーメッセージ(日本語) SQL DBLの型が誤っています メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが107の場合 エラーメッセージ(英語) Different SQL usage mode of request エラーメッセージ(日本語) SQLの仕様が違っている メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが108の場合 エラーメッセージ(英語) RDA transaction not opened on this connection to server エラーメッセージ(日本語) RDAトランザクションがオープンできません メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが110の場合 エラーメッセージ(英語) Inconsistent parameters count for stored procedures エラーメッセージ(日本語) ストアドプロシジャのパラメタ数に矛盾があります メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 - 211 - エラーコードが111の場合 エラーメッセージ(英語) Parameter types mismatched for stored procedures エラーメッセージ(日本語) パラメタの型がストアドプロシジャのパラメタの型と合いません メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが115の場合 エラーメッセージ(英語) Invalid Blob Locator エラーメッセージ(日本語) BLOBロケータの誤り メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが116の場合 エラーメッセージ(英語) Argument values mismatched エラーメッセージ(日本語) 実パラメタの値が誤っています メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが117の場合 エラーメッセージ(英語) Invalid item locator エラーメッセージ(日本語) ロケータ項目が誤っています メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 - 212 - E.2.4 Vendorエラーメッセージ(1000~1009) エラーコードが1000の場合 エラーメッセージ(英語) System internal error : Invalid thread to clear busy flag エラーメッセージ(日本語) システム内エラー: システム内で内部エラーが発生しました メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが1001の場合 エラーメッセージ(英語) System internal error : InterruptedException エラーメッセージ(日本語) システム内エラー: システム内で内部エラーが発生しました メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが1002の場合 エラーメッセージ(英語) ResultSetMetaData object does not exist エラーメッセージ(日本語) ResultSetMetaDataクラスのオブジェクトが存在しません メッセージの意味 ResultSetMetaDataインタフェースのオブジェクトが存在しません。 利用者の処置 実行中のアプリケーションを終了させ、アプリケーションを再度実行してください。 エラーコードが1003の場合 エラーメッセージ(英語) Invalid URL Format - null URL エラーメッセージ(日本語) URL記述形式エラー - URLにNULLが指定されています - 213 - メッセージの意味 JDBCドライバに渡されるURLにNULL値が設定されています。 利用者の処置 有効な値をURLに設定してください。 エラーコードが1004の場合 エラーメッセージ(英語) Invalid URL Format - URL not know by driver エラーメッセージ(日本語) URL記述形式エラー - 認識できないURLが記述されました メッセージの意味 JDBCドライバがURLを認識できません。 利用者の処置 JDBCドライバが認識可能なデータベース環境を設定してください。 エラーコードが1005の場合 エラーメッセージ(英語) Invalid URL Format - null Properties エラーメッセージ(日本語) URL記述形式エラー - URLに記述がありません メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 host引数、port_no引数およびdb_env引数は、省略できません。 利用者の処置 URLには、必ずホスト名、ポート番号およびサーバの環境名を指定してください。 エラーコードが1006の場合 エラーメッセージ(英語) Invalid URL Format - missing :// protocol host delimiter エラーメッセージ(日本語) URL記述形式エラー - パラメタhostの前にデリミタが記述されていません メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 host引数の前に、デリミタ“://”が記述されていません。 利用者の処置 URLを正しい記述に変更してください。 - 214 - エラーコードが1007の場合 エラーメッセージ(英語) Invalid URL Format - missing : host port delimiter エラーメッセージ(日本語) URL記述形式エラー - パラメタportの前にデリミタが記述されていません メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 port_no引数の前に、デリミタ“:”が記述されていません。 利用者の処置 URLを正しい記述に変更してください。 エラーコードが1008の場合 エラーメッセージ(英語) Invalid URL Format - missing / port database delimiter エラーメッセージ(日本語) URL記述形式エラー - パラメタdb_envの前にデリミタが記述されていません メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 db_env引数の前に、デリミタ“/”が記述されていません。 利用者の処置 URLを正しい記述に変更してください。 エラーコードが1009の場合 エラーメッセージ(英語) Invalid URL Format - invalid port number エラーメッセージ(日本語) URL記述形式エラー - ポート番号が誤っています メッセージの意味 JDBCドライバに渡されるURLに記述したポート番号に誤りがあります。 利用者の処置 URLに記述したポート番号を、有効なポート番号に修正してください。 E.2.5 Vendorエラーメッセージ(1010~1019) エラーコードが1010の場合 エラーメッセージ(英語) Invalid URL Format - missing database エラーメッセージ(日本語) URL記述形式エラー - データベース名が誤っています - 215 - メッセージの意味 JDBCドライバに渡されるURLに記述したデータ資源名に誤りがあります。 利用者の処置 URLに記述したデータ資源名を、有効なデータ資源名に修正してください。 エラーコードが1011の場合 エラーメッセージ(英語) Invalid URL Format - invalid attribute name エラーメッセージ(日本語) URL記述形式エラー - パラメタoptionsに記述するオプション名に誤りがあります メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 オプションの記述に誤りがあります。 利用者の処置 URLに記述したオプションを有効なオプションに修正してください。 URLに記述するオプションについては、“B.2 getConnectionメソッドのオプション”を参照してください。 エラーコードが1012の場合 エラーメッセージ(英語) Invalid URL Format - invalid attribute definition エラーメッセージ(日本語) URL記述形式エラー - パラメタoptionsに記述するオプションの記述形式に誤りがあります メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 オプションの記述形式に誤りがあります。 利用者の処置 URLに記述したオプションの記述形式を有効な形式に修正してください。 URLに記述するオプションについては、“B.2 getConnectionメソッドのオプション”を参照してください。 エラーコードが1013の場合 エラーメッセージ(英語) Invalid URL Format - invalid property list name エラーメッセージ(日本語) URL記述形式エラー - パラメタuserおよびpasswordが記述されていません メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 user_id引数またはpassword引数が記述されていません。 利用者の処置 URLに、ユーザIDおよびパスワードを指定してください。 - 216 - エラーコードが1014の場合 エラーメッセージ(英語) Invalid URL Format - user identification not defined エラーメッセージ(日本語) URL記述形式エラー - ユーザIDに誤りがあります メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 user_id引数に記述されたユーザIDに誤りがあります。 利用者の処置 URLに記述したユーザIDを有効なユーザIDに修正してください。 エラーコードが1015の場合 エラーメッセージ(英語) Invalid URL Format - password value not defined エラーメッセージ(日本語) URL記述形式エラー - パスワードに誤りがあります メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 password引数に記述されたパスワードに誤りがあります。 利用者の処置 URLに記述したパスワードを有効なパスワードに修正してください。 エラーコードが1016の場合 エラーメッセージ(英語) Invalid URL Format - invalid code conversion value エラーメッセージ(日本語) URL記述形式エラー - オプションcodeconversionの指定に誤りがあります メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 codeconversionオプションの指定に誤りがあります。 利用者の処置 URLに記述したcodeconversionオプションを有効な値に修正してください。 エラーコードが1018の場合 エラーメッセージ(英語) Invalid URL Format - invalid lang value エラーメッセージ(日本語) URL記述形式エラー - オプションlangの指定に誤りがあります - 217 - メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 langオプションの指定に誤りがあります。 利用者の処置 URLに記述したlangオプションを有効な値に修正してください。 エラーコードが1019の場合 エラーメッセージ(英語) Invalid URL Format - invalid buffersize value エラーメッセージ(日本語) URL記述形式エラー - オプションbuffersizeの指定に誤りがあります メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 buffersizeオプションの指定に誤りがあります。 利用者の処置 URLに記述したbuffersizeオプションを有効な値に修正してください。 E.2.6 Vendorエラーメッセージ(1020~1039) エラーコードが1020の場合 エラーメッセージ(英語) Invalid URL Format - invalid tracelevel value エラーメッセージ(日本語) URL記述形式エラー - オプションtracelevelの指定に誤りがあります メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 tracelevelオプションの指定に誤りがあります。 利用者の処置 URLに記述したtracelevelオプションを有効な値に修正してください。 エラーコードが1021の場合 エラーメッセージ(英語) Invalid URL Format - invalid maxconnections value エラーメッセージ(日本語) URL記述形式エラー - オプションmaxconnectionsの指定に誤りがあります メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 maxconnectionsオプションの指定に誤りがあります。 - 218 - 利用者の処置 URLに記述したmaxconnectionsオプションを有効な値に修正してください。 エラーコードが1024の場合 エラーメッセージ(英語) Maximum driver connections are active エラーメッセージ(日本語) 同時に使用できるコネクション数の最大値を超えました メッセージの意味 JDBCドライバが同時に使用できるコネクション数の最大値を超えました。 利用者の処置 コネクションをクローズするか、オプションの最大コネクション数を増やしてください。 エラーコードが1027の場合 エラーメッセージ(英語) Cursor already active on this statement エラーメッセージ(日本語) すでに使用中のカーソルが使用されました メッセージの意味 Statementインタフェースで、クローズされていないカーソルが使用されました。 利用者の処置 アプリケーション内のAPI呼出しのシーケンスを再確認してください。誤りがあった場合、アプリケーションを修正後、 再度実行してください。 エラーコードが1028の場合 エラーメッセージ(英語) Statement is closed エラーメッセージ(日本語) すでにクローズされているStatementクラスが使用されました メッセージの意味 すでにクローズされているStatementインタフェースが使用されました。 利用者の処置 アプリケーション内のAPI呼出しのシーケンスを再確認してください。誤りがあった場合、アプリケーションを修正後、 再度実行してください。 エラーコードが1033の場合 エラーメッセージ(英語) Connection is no longer in transaction エラーメッセージ(日本語) 接続が切断されている状態で、データベースにアクセスしようとしました - 219 - メッセージの意味 データベースとの接続が切断されている状態で、データベースにアクセスしようとしました。 利用者の処置 アプリケーション内のAPI呼出しのシーケンスを再確認してください。誤りがあった場合、アプリケーションを修正後、 再度実行してください。 エラーコードが1034の場合 エラーメッセージ(英語) Error returned by server on fetchcursor エラーメッセージ(日本語) サーバからエラーが通知されている状態で、データが検索されました メッセージの意味 サーバからエラーが通知されている状態で、データが検索されました。 利用者の処置 通知されているエラーの情報を参照し、エラーの原因を取り除いた後、アプリケーションを再度実行してください。 エラーコードが1035の場合 エラーメッセージ(英語) Column name not found in the result set エラーメッセージ(日本語) カラム名が見つかりません メッセージの意味 SQL文による問合せ結果の中に、指定されたカラム名が見つかりませんでした。 利用者の処置 正しいカラム名を指定してください。 エラーコードが1039の場合 エラーメッセージ(英語) Begin Transaction request failure. Connection closed エラーメッセージ(日本語) トランザクション開始で失敗しました. コネクションがクローズされました メッセージの意味 ドライバによるサーバのトランザクションの開始に失敗し、コネクションがクローズされました。 利用者の処置 エラーコードを採取して、技術員(SE)に連絡してください。 E.2.7 Vendorエラーメッセージ(1040~1049) - 220 - エラーコードが1040の場合 エラーメッセージ(英語) Invalid URL Format - invalid tcptimer value エラーメッセージ(日本語) URL記述形式エラー: オプションtcptimerの指定に誤りがあります メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 tcptimerオプションの指定に誤りがあります。 利用者の処置 URLに記述したtcptimerオプションを有効な値に修正してください。 エラーコードが1041の場合 エラーメッセージ(英語) The ResultSet cannot be used as it is at the end of set state エラーメッセージ(日本語) データの最終行の次行が検索されました メッセージの意味 データ検索時に、データの最終行の次行が検索されました。 利用者の処置 アプリケーション内のAPI呼出しのシーケンスを再確認してください。誤りがあった場合、アプリケーションを修正後、 再度実行してください。 エラーコードが1042の場合 エラーメッセージ(英語) The result set cannot be used as the cursor associated with it is in invalid state エラーメッセージ(日本語) 無効な問合せ結果です メッセージの意味 問合せ結果が参照できません。 利用者の処置 アプリケーション内のAPI呼出しのシーケンスを再確認してください。誤りがあった場合、アプリケーションを修正後、 再度実行してください。 エラーコードが1043の場合 エラーメッセージ(英語) Invalid URL Format - invalid fetchrows value エラーメッセージ(日本語) URL記述形式エラー: オプションfetchrowsの指定に誤りがあります メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 - 221 - fetchrowsオプションの指定に誤りがあります。 利用者の処置 URLに記述したfetchrowsオプションを有効な値に修正してください。 エラーコードが1044の場合 エラーメッセージ(英語) Input parameters not set for SQL Statement エラーメッセージ(日本語) 必要な入力パラメタが指定されていません メッセージの意味 SQL文を実行するために必要なすべてのパラメタが指定されていません。 利用者の処置 実行するSQL文に必要なすべてのパラメタを指定して、再度実行してください。 エラーコードが1045の場合 エラーメッセージ(英語) Invalid URL Format - invalid schema value エラーメッセージ(日本語) URL記述形式エラー - オプションschemaの指定に誤りがあります メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 schemaオプションの指定に誤りがあります。 利用者の処置 URLに記述したschemaオプションを有効な値に修正してください。 エラーコードが1046の場合 エラーメッセージ(英語) Invalid operation performed on Callable Statement エラーメッセージ(日本語) CallableStatementで誤ったオペレーションを実行しました メッセージの意味 CallableStatementで誤ったオペレーションが実行されました。 利用者の処置 アプリケーションを修正し、再度実行してください。 エラーコードが1047の場合 エラーメッセージ(英語) Invalid URL Format - invalid rdbcodeconversion value - 222 - エラーメッセージ(日本語) URL記述形式エラー - クライアント側の文字コード値が誤っています メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 codeconversionオプションの指定に誤りがあります。 利用者の処置 URLに記述したcodeconversionオプションを有効な値に修正してください。 エラーコードが1048の場合 エラーメッセージ(英語) Invalid URL Format - missing // RDB protocol host delimiter エラーメッセージ(日本語) URL記述形式エラー - RDBプロトコル記述が誤っています メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 RDBIIhost引数の前に、デリミタ“//”が記述されていません。 利用者の処置 URLを正しい記述に変更してください。 エラーコードが1049の場合 エラーメッセージ(英語) Invalid URL Format - missing // ODB protocol host delimiter エラーメッセージ(日本語) URL記述形式エラー - missing ODBプロトコル記述が誤っています メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 ODBIIhost引数の前に、デリミタ“//”が記述されていません。 利用者の処置 URLを正しい記述に変更してください。 E.2.8 Vendorエラーメッセージ(1050~1096) エラーコードが1050の場合 エラーメッセージ(英語) Invalid URL Format - missing : RDB host port delimiter エラーメッセージ(日本語) URL記述形式エラー - RDBポート番号の記述が誤っています メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 - 223 - RDBIIport_no引数の前に、デリミタ“:”が記述されていません。 利用者の処置 URLを正しい記述に変更してください。 エラーコードが1051の場合 エラーメッセージ(英語) Invalid URL Format - missing : ODB host port delimiter エラーメッセージ(日本語) URL記述形式エラー - ODBポート番号の記述が誤っています メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 ODBIIport_no引数の前に、デリミタ“:”が記述されていません。 利用者の処置 URLを正しい記述に変更してください。 エラーコードが1052の場合 エラーメッセージ(英語) Invalid URL Format - missing RDB / port database delimiter エラーメッセージ(日本語) URL記述形式エラー - RDBのデータベース記述が誤っています メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 RDBIIdb_env引数の前に、デリミタ“/”が記述されていません。 利用者の処置 URLを正しい記述に変更してください。 エラーコードが1053の場合 エラーメッセージ(英語) Invalid URL Format - missing ODB / port database delimiter エラーメッセージ(日本語) URL記述形式エラー - ODBのデータベース記述が誤っています メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 ODBIIdb_env引数の前に、デリミタ“/”が記述されていません。 利用者の処置 URLを正しい記述に変更してください。 - 224 - エラーコードが1054の場合 エラーメッセージ(英語) Invalid URL Format - invalid RDB port number エラーメッセージ(日本語) URL記述形式エラー - RDBのポート番号が誤っています メッセージの意味 JDBCドライバに渡されるURLに記述したRDBのポート番号に誤りがあります。 利用者の処置 URLに記述したRDBのポート番号を、有効なポート番号に修正してください。 エラーコードが1055の場合 エラーメッセージ(英語) Invalid URL Format - invalid ODB port number エラーメッセージ(日本語) URL記述形式エラー - ODBのポート番号が誤っています メッセージの意味 JDBCドライバに渡されるURLに記述したODBのポート番号に誤りがあります。 利用者の処置 URLに記述したODBのポート番号を、有効なポート番号に修正してください。 エラーコードが1056の場合 エラーメッセージ(英語) Invalid URL Format - missing RDB database エラーメッセージ(日本語) URL記述形式エラー - RDBデータベースが誤っています メッセージの意味 JDBCドライバに渡されるURLに記述したRDBデータ資源名に誤りがあります。 利用者の処置 URLに記述したRDBデータ資源名を、有効なデータ資源名に修正してください。 エラーコードが1057の場合 エラーメッセージ(英語) Invalid URL Format - missing ODB database エラーメッセージ(日本語) URL記述形式エラー - ODBデータベースが誤っています メッセージの意味 JDBCドライバに渡されるURLに記述したODBプロジェクト名に誤りがあります。 利用者の処置 URLに記述したODBプロジェクト名を、有効なプロジェクト名に修正してください。 - 225 - エラーコードが1058の場合 エラーメッセージ(英語) The ResultSet is closed エラーメッセージ(日本語) ResultSetがクローズされました メッセージの意味 クローズされているResultSetが使用されました。 利用者の処置 アプリケーション内のAPI呼出しのシーケンスを再確認してください。誤りがあった場合、アプリケーションを修正後、 再度実行してください。 エラーコードが1059の場合 エラーメッセージ(英語) An active ResultSet is associated with the statement エラーメッセージ(日本語) 稼動中のResultSetが連携されています メッセージの意味 ResultSetが実行中のため、カーソル名を変更できません。 利用者の処置 エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが1060の場合 エラーメッセージ(英語) The size of data specified exceeds the maximum allowable size of data for the column エラーメッセージ(日本語) カラムに定義長を超える長さのデータを指定しました メッセージの意味 BLOB型の定義長を超える長さのデータをINSERTまたはUPDATE処理をしようとしました。 利用者の処置 データの長さを小さくするか、または、複数のBLOB型列に分割してください。 エラーコードが1061の場合 エラーメッセージ(英語) The actual size of data to be sent to the server is less than the size of data specified エラーメッセージ(日本語) 実際に設定された長さは、指定されたデータの長さを満たしていません メッセージの意味 setBinaryStream、setAsciiStreamまたはsetUnicodeStreamメソッドで設定されたストリームデータの実際の長さは、指定 された長さを満たしていません。 - 226 - 利用者の処置 正確なデータの長さを指定してください。 エラーコードが1062の場合 エラーメッセージ(英語) The Input Stream is closed エラーメッセージ(日本語) InputStreamがクローズされました メッセージの意味 すでにクローズされているInputStreamが使用されました。 利用者の処置 アプリケーション内のAPI呼出しのシーケンスを再確認してください。誤りがあった場合、アプリケーションを修正後、 再度実行してください。 エラーコードが1063の場合 エラーメッセージ(英語) Invalid URL Format - conversionsite must be SV or DRV エラーメッセージ(日本語) URL記述形式エラー - conversionsite は SV か DRV でなければなりません メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 conversionsiteオプションの指定に誤りがあります。 利用者の処置 URLに記述したconversiomsiteオプションを有効な値に修正してください。 エラーコードが1064の場合 エラーメッセージ(英語) The server does not support the communication code specified in the URL エラーメッセージ(日本語) 当サーバでサポートされていないコード系が指定されました メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが1065の場合 エラーメッセージ(英語) Invalid URL Format - cursorbehavior must be CLOSE or PRESERVE エラーメッセージ(日本語) URL記述形式エラー - cursorbehavior は CLOSE か PRESERVE でなければなりません - 227 - メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 cursorbehaviorオプションの指定に誤りがあります。 利用者の処置 URLに記述したcursorbehaviorオプションを有効な値に修正してください。 エラーコードが1066の場合 エラーメッセージ(英語) Invalid returned length value from server : connection infringement エラーメッセージ(日本語) サーバから返された値が不正です : コネクションを閉じます メッセージの意味 システムで内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが1067の場合 エラーメッセージ(英語) The actual size of stream data is larger than the size of data specified エラーメッセージ(日本語) 実際に設定された長さは、指定されたデータの長さを超越しています メッセージの意味 setBinaryStreamメソッドのlengthパラメタで指定したストリームのバイト数が、setBinaryStreamメソッドのxパラメタで指定 したJava入力ストリームの値より大きい値が指定されています。 利用者の処置 setBinaryStreamメソッドのlengthパラメタで指定するストリームのバイト数を有効な値に修正してください。 エラーコードが1068の場合 エラーメッセージ(英語) Class not found エラーメッセージ(日本語) クラスが見つかりませんでした メッセージの意味 環境変数“CLASSPATH”に指定された値に誤りがあります。 利用者の処置 環境変数“CLASSPATH”に指定した値を正しい内容に修正してください。 エラーコードが1069の場合 エラーメッセージ(英語) Method not found - 228 - エラーメッセージ(日本語) メソッドが見つかりませんでした メッセージの意味 JDBCドライバのメソッドが見つかりませんでした。 利用者の処置 JDBCドライバが正しくインストールされているか確認してください。 エラーコードが1070の場合 エラーメッセージ(英語) Class not accessible エラーメッセージ(日本語) クラスにアクセスできませんでした メッセージの意味 JDBCドライバでIllegalAccessExceptionが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが1071の場合 エラーメッセージ(英語) Illegal arguments. Cannot invoke method エラーメッセージ(日本語) パラメータに誤りがあるため、メソッドを呼ぶことができません メッセージの意味 JDBCドライバでIllegalArgumentExceptionが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが1072の場合 エラーメッセージ(英語) Class instantiation error エラーメッセージ(日本語) オブジェクトの作成に失敗しました メッセージの意味 JDBCドライバでInstantiationExceptionが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 - 229 - エラーコードが1073の場合 エラーメッセージ(英語) Security violation エラーメッセージ(日本語) セキュリティ違反が起きました メッセージの意味 JDBCドライバでSecurityExceptionが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが1074の場合 エラーメッセージ(英語) Invalid URL Format- Attribute ctuneparam needs to be specified in single quotes エラーメッセージ(日本語) URL記述形式エラー - ctuneparam の設定値は単一引用符で囲まれている必要があります メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 ctuneparamオプションの指定に誤りがあります。 利用者の処置 URLに記述したctuneparamオプションを有効な値に修正してください。 エラーコードが1075の場合 エラーメッセージ(英語) Invalid URL Format - invalid javaconverter value エラーメッセージ(日本語) URL記述形式エラー - オプションjavaconverterの指定に誤りがあります メッセージの意味 JDBCドライバに渡されるURLの記述形式に誤りがあります。 javaconverterオプションの指定に誤りがあります。 利用者の処置 URLに記述したjavaconverterオプションを有効な値に修正してください。 エラーコードが1077の場合 エラーメッセージ(英語) trace file i/o error エラーメッセージ(日本語) トレースファイルでI/Oエラーが発生しました メッセージの意味 JDBC動作環境ファイルに指定されたトレース採取オプションのファイル名に以下の誤りがあります。 - 230 - - pathの先頭が“/”でない(SolarisまたはLinuxの場合) - ディレクトリまたはフォルダが存在しない - ファイルが読み取り専用 利用者の処置 JDBC動作環境ファイルに指定したトレース採取オプションのファイル名を正しい値に修正してください。 エラーコードが1078の場合 エラーメッセージ(英語) format error of option "@1@" エラーメッセージ(日本語) オプション”@1@”の書式エラーです メッセージの意味 JDBC動作環境ファイルに指定されたトレース採取オプションの記述形式に誤りがあります。 利用者の処置 JDBC動作環境ファイルに指定したトレース採取オプションを有効な値に修正してください。 エラーコードが1079の場合 エラーメッセージ(英語) option "@1@" is not supported by the driver エラーメッセージ(日本語) オプション”@1@”はドライバでサポートされていません メッセージの意味 JDBC動作環境ファイルに指定されたオプションに誤りがあります。 利用者の処置 JDBC動作環境ファイルに指定したオプションを正しい値に修正してください。 エラーコードが1080の場合 エラーメッセージ(英語) format error of option specification エラーメッセージ(日本語) オプション指定の書式エラーです メッセージの意味 JDBC動作環境ファイルに指定されたオプションの記述形式に誤りがあります。 利用者の処置 JDBC動作環境ファイルに指定したオプションを有効な値に修正してください。 エラーコードが1081の場合 エラーメッセージ(英語) failed to read file "@1@" - 231 - エラーメッセージ(日本語) ファイル”@1@”の読み込みに失敗しました メッセージの意味 システムプロパティ“SYMJDBCENV”に指定された動作環境ファイル名に誤りがあります。 利用者の処置 システムプロパティ“SYMJDBCENV”に指定した動作環境ファイル名を正しい値に修正してください。 エラーコードが1082の場合 エラーメッセージ(英語) Insufficient memory エラーメッセージ(日本語) メモリ不足が発生しました メッセージの意味 メモリ不足が発生しました。 利用者の処置 メモリ不足が発生した場合は、以下の対処を行ってください。 - Java実行環境のヒープサイズを拡張する。 - System.gcメソッドを使い、強制的にメモリの解放を行う。 ただし、System.gcメソッドは実行性能に影響します。 呼び出しのタイミングなどを十分に検討した上で使用してください。 エラーコードが1083の場合 エラーメッセージ(英語) Already closed InputStream was used. エラーメッセージ(日本語) すでにクローズされているInputStreamが使用されました メッセージの意味 すでにクローズされているInputStreamが使用されました。 利用者の処置 アプリケーション内のAPI呼出しのシーケンスを再確認してください。誤りがあった場合、アプリケーションを修正後、 再度実行してください。 エラーコードが1084の場合 エラーメッセージ(英語) The buffer specified to read(byte[]) is invalid. エラーメッセージ(日本語) read(byte[])に指定されたバッファが無効です メッセージの意味 バッファにNULLまたは長さ0のバイト配列が指定されました。 - 232 - 利用者の処置 指定したバッファを再確認してください。誤りがあった場合、アプリケーションを修正後、再度実行してください。 エラーコードが1085の場合 エラーメッセージ(英語) Invalid ResultSet Type エラーメッセージ(日本語) 指定されたResultSetタイプに誤りがあります メッセージの意味 アプリケーションで指定されたResultSetタイプの値に誤りがあります。 利用者の処置 アプリケーションで指定されたResultSetタイプの値を見直し、正しい値を設定してください。 指定可能な値は、以下のとおりです。 - java.sql.ResultSet.TYPE_FORWARD_ONLY - java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE - java.sql.ResultSet.TYPE_SCROLL_SENSITIVE エラーコードが1086の場合 エラーメッセージ(英語) Invalid ResultSet Concurrency エラーメッセージ(日本語) 指定されたResultSet並行処理に誤りがあります メッセージの意味 アプリケーションで指定されたResultSetの並行処理の値に誤りがあります。 利用者の処置 アプリケーションで指定されたResultSetの並行処理の値を見直し、正しい値を設定してください。 指定可能な値は、以下のとおりです。 - java.sql.ResultSet.CONCUR_READ_ONLY - java.sql.ResultSet.CONCUR_UPDATABLE エラーコードが1088の場合 エラーメッセージ(英語) Invalid ResultSet Direction エラーメッセージ(日本語) 指定されたResultSet処理方向に誤りがあります メッセージの意味 アプリケーションで指定された行の処理方向の値に誤りがあります。 利用者の処置 アプリケーションで指定された行の処理方向の値を見直し、正しい値を設定してください。 - 233 - 指定可能な値は、以下のとおりです。 - java.sql.ResultSet.FETCH_FORWARD - java.sql.ResultSet.FETCH_REVERSE - java.sql.ResultSet.FETCH_UNKNOWN エラーコードが1096の場合 エラーメッセージ(英語) The execution of SQL statement has been cancelled. Set value of timeout time: "@1@" seconds Cancelled SQL statement: "@2@" エラーメッセージ(日本語) SQL文の実行が取り消されました タイムアウト時間の設定値:“@1@”秒 取り消されたSQL文:“@2@” メッセージの意味 以下のいずれかにより、SQL文の実行が取り消され、トランザクションがロールバックされました。 - SQL文の実行時間がsetQueryTimeoutメソッドで設定したタイムアウト時間を越えた - 別のスレッドからcancelメソッドを実行した パラメタの意味 - @1@:タイムアウト時間の設定値 - @2@:取り消されたSQL文の先頭10文字 利用者の処置 実行したSQL文およびタイムアウト時間の設定値を見直してください。 E.2.9 Vendorエラーメッセージ(1100~1199) エラーコードが1100の場合 エラーメッセージ(英語) This method cannot be performed in a distributed transaction エラーメッセージ(日本語) 分散トランザクションにおいてこのメソッドを実行する事はできません。 メッセージの意味 分散トランザクションにおいては、このメソッドを実行する事はできません。 利用者の処置 分散トランザクションにおいては、該当メソッドは実行しないでください。 エラーコードが1101の場合 エラーメッセージ(英語) Invalid XID (null) was specified エラーメッセージ(日本語) 無効なXID(null)が指定されました。 - 234 - メッセージの意味 指定されたXIDは無効です。 利用者の処置 エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが1102の場合 エラーメッセージ(英語) A distributed transaction cannot be performed except a remote access (RDB2_TCP) エラーメッセージ(日本語) リモートアクセス(RDB2_TCP連携)以外で分散トランザクションを実行する事はできません。 メッセージの意味 リモートアクセス(RDB2_TCP連携)以外では、分散トランザクションを実行する事はできません。 利用者の処置 分散トランザクション実行時には、データベースへの接続形態としてリモートアクセス(RDB2_TCP連携)を指定してく ださい。 エラーコードが1120の場合 エラーメッセージ(英語) A SQL statement that is not for data modification has been specified by the addBatch method. Specified SQL statement: "@1@" エラーメッセージ(日本語) addBatchメソッドでデータ更新以外のSQL文が指定されました 指定されたSQL文:“@1@” メッセージの意味 addBatchメソッドでデータ更新以外のSQL文が指定されました。 パラメタの意味 @1@:addBatchメソッドで指定されたSQL文の先頭10文字 利用者の処置 addBatchメソッドでは、以下のいずれかのSQL文を指定してください。 - INSERT文 - UPDATE文 - DELETE文 エラーコードが1124の場合 エラーメッセージ(英語) This method cannot be executed on the result set of which the concurrency mode is set to ResultSet.CONCUR_READ_ONLY. Executed method: "@1@" エラーメッセージ(日本語) 並行処理モードがResultSet.CONCUR_READ_ONLYに設定されている結果セットでは、このメソッドを実行すること はできません 実行されたメソッド:“@1@” - 235 - メッセージの意味 並行処理モードがResultSet.CONCUR_READ_ONLYに設定されている結果セットでは、このメソッドを実行すること はできません。 パラメタの意味 @1@:実行されたメソッド 利用者の処置 結果セットの並行処理モードをResultSet.CONCUR_UPDATABLEに変更してください。 エラーコードが1125の場合 エラーメッセージ(英語) When the hold function of result set is being used, the concurrent processing mode cannot be set to ResultSet.CONCUR_UPDATABLE. エラーメッセージ(日本語) 結果セットの保持機能を使用する場合、並行処理モードとして、ResultSet.CONCUR_UPDATABLEを指定すること はできません メッセージの意味 結果セットの保持機能を使用する場合、並行処理モードとして、ResultSet.CONCUR_UPDATABLEを指定すること はできません。 利用者の処置 結果セットの保持機能と並行処理モードのResultSet.CONCUR_UPDATABLEを同時に指定しないようにアプリケー ションを修正してください エラーコードが1126の場合 エラーメッセージ(英語) This method cannot be executed because it is in batch update. Executed method: "@1@" エラーメッセージ(日本語) バッチ更新中のため、このメソッドは実行できません 実行されたメソッド:“@1@” メッセージの意味 バッチ更新中のため、このメソッドは実行できません。 パラメタの意味 @1@:実行されたメソッド 利用者の処置 executeBatchメッソドまたはclearBatchメッソドを呼び出した後、該当メソッドを実行してください エラーコードが1128の場合 エラーメッセージ(英語) The set value of the hold function of result set that has been specified by application is incorrect. Set value: "@1@" エラーメッセージ(日本語) アプリケーションで指定されたResultSetの保持機能の設定値に誤りがあります 設定値:“@1@” メッセージの意味 アプリケーションで指定されたResultSetの保持機能の設定値に誤りがあります。 - 236 - パラメタの意味 @1@:ResultSetの保持機能の設定値 利用者の処置 アプリケーションで指定されたResultSetの保持機能の設定値を見直し、正しい値を設定してください。 指定可能な値は、以下のとおりです。 - java.sql.ResultSet.CLOSE_CURSORS_AT_COMMIT - java.sql.ResultSet.HOLD_CURSORS_OVER_COMMIT エラーコードが1129の場合 エラーメッセージ(英語) This method cannot be executed because the resource has been released. Executed method: "@1@" エラーメッセージ(日本語) リソースを解放済みのため、このメソッドは実行できません 実行されたメソッド:“@1@” メッセージの意味 リソースを解放済みのため、このメソッドは実行できません。 パラメタの意味 @1@:実行されたメソッド 利用者の処置 BlobオブジェクトまたはClobオブジェクトのfreeメソッドを実行した後で、freeメソッド以外のメソッドを実行しないでくだ さい。 エラーコードが1130の場合 エラーメッセージ(英語) The object that implemented the specified interface "@1@" could not be found. エラーメッセージ(日本語) 指定されたインタフェース“@1@”を実装しているオブジェクトが見つかりません メッセージの意味 指定されたインタフェースを実装しているオブジェクトが見つかりません。 パラメタの意味 @1@:指定されたインタフェース 利用者の処置 該当オブジェクトが、引数で指定したインタフェースを実装している場合や、実装しているオブジェクトの直接的また は間接的なラッパーである場合にのみ、このメソッドを使用してください。 エラーコードが1131の場合 エラーメッセージ(英語) The parameter name specified by the client application environment file "@1@" is incorrect. Parameter name: "@2@" エラーメッセージ(日本語) クライアント用の動作環境ファイル“@1@”で指定されたパラメタ名に誤りがあります パラメタ名:“@2@” - 237 - メッセージの意味 クライアント用の動作環境ファイルで指定されたパラメタ名に誤りがあります。 パラメタの意味 - @1@:クライアント用の動作環境ファイル名のフルパス表示 - @2@:パラメタ名 利用者の処置 クライアント用の動作環境ファイルで指定したパラメタ名を正しく修正してください。 エラーコードが1132の場合 エラーメッセージ(英語) The specification format on the line "@2@" of the client application environment file "@1@" is incorrect. エラーメッセージ(日本語) クライアント用の動作環境ファイル“@1@”の“@2@”行目に指定されたパラメタの記述形式に誤りがあります メッセージの意味 クライアント用の動作環境ファイルに指定されたパラメタの記述形式に誤りがあります。 パラメタの意味 - @1@:クライアント用の動作環境ファイル名のフルパス表示 - @2@:クライアント用の動作環境ファイル内の行番号 利用者の処置 クライアント用の動作環境ファイルに指定したパラメタの記述形式を正しく修正してください。 エラーコードが1133の場合 エラーメッセージ(英語) The client application environment file "@1@" that has been specified in the sqlrtenv parameter does not exist. エラーメッセージ(日本語) sqlrtenvパラメタで指定されたクライアント用の動作環境ファイル“@1@”が存在しません メッセージの意味 sqlrtenvパラメタで指定されたクライアント用の動作環境ファイルが存在しません。 パラメタの意味 @1@:クライアント用の動作環境ファイル名のフルパス表示 利用者の処置 sqlrtenvパラメタで正しいファイル名を指定してください。 sqlrtenvパラメタの指定は以下の箇所で行います。 - DriverManagerクラスを使用している場合:その他パラメタ - JDBCデータソース登録ツールでJDBCデータソースを登録している場合:DriverManager クラスのgetConnection メソッドの引数 - symjddefdsコマンドでJDBCデータソースを登録している場合:オプション - 238 - エラーコードが1134の場合 エラーメッセージ(英語) Already closed Reader was used. エラーメッセージ(日本語) すでにクローズされているReaderが使用されました メッセージの意味 すでにクローズされているReaderが使用されました。 利用者の処置 アプリケーション内のAPI呼出しのシーケンスを再確認してください。誤りがあった場合、アプリケーションを修正後、 再度実行してください。 エラーコードが1199の場合 エラーメッセージ(英語) error occurred by distributed transaction エラーメッセージ(日本語) 分散トランザクション機能でエラーが発生しました メッセージの意味 分散トランザクション機能で、エラーが発生しました 利用者の処置 エラーコードを採取して、技術員(SE)に連絡してください。 E.2.10 Vendorエラーメッセージ(2000~4007) エラーコードが2000の場合 エラーメッセージ(英語) RDA Protocol Error エラーメッセージ(日本語) RDAプロトコル内部エラー メッセージの意味 RDAプロトコルで内部エラーが発生しました。 利用者の処置 エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが2001の場合 エラーメッセージ(英語) Commit request failed. Rollback occurred エラーメッセージ(日本語) コミットリクエストの失敗. ロールバックしました メッセージの意味 サーバに送られたコミット要求が拒否され、処理がロールバックされました。 - 239 - 利用者の処置 Symfoware Serverのマニュアルを参照し、エラーの原因を取り除いてください。 エラーコードが2002の場合 エラーメッセージ(英語) Data type conversion error エラーメッセージ(日本語) データ型の変換エラー メッセージの意味 データ型の変換に失敗しました。 利用者の処置 JDBCドライバが該当するデータ型をサポートしているかどうかを確認してください。誤りがあった場合、アプリケーショ ンを修正した後、再度実行してください。 エラーコードが2004の場合 エラーメッセージ(英語) RDA/TCP bad version data エラーメッセージ(日本語) RDAプロトコルのバージョンに誤りがあります メッセージの意味 サーバ上のRDA/TCPプロトコルのバージョンに誤りがあります。 利用者の処置 エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが4000の場合 エラーメッセージ(英語) Connection failure : unknown host exception エラーメッセージ(日本語) コネクションの失敗: ホスト名が認識できません メッセージの意味 ホスト名が認識できません。 サーバとの接続に失敗しました。 利用者の処置 ホスト名に誤りがないかを確認し、アプリケーションを再度実行してください。 エラーコードが4001の場合 エラーメッセージ(英語) Connection failure: IO Exception エラーメッセージ(日本語) コネクションの失敗: I/Oエラーが発生しました - 240 - メッセージの意味 TCP/IP接続時にI/Oエラーが発生しました。 利用者の処置 エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが4002の場合 エラーメッセージ(英語) Connection failure: interrupted exception エラーメッセージ(日本語) コネクションの失敗: 切断例外 メッセージの意味 TCP/IP接続で入出力エラーが発生しました。 利用者の処置 エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが4003の場合 エラーメッセージ(英語) Data Conversion format エラーメッセージ(日本語) データへの変換処理でエラーが発生しました メッセージの意味 Javaデータからホストデータへの変換処理またはホストデータからJavaデータへの変換処理でエラーが発生しました。 利用者の処置 原因となっているデータが含まれているカラムまたは行を採取し、データに誤りがないかを確認してください。データ に誤りがない場合、アプリケーションを再度実行してください。 エラーコードが4004の場合 エラーメッセージ(英語) Unicode SJIS conversion error エラーメッセージ(日本語) SJISへの変換エラー メッセージの意味 日本語文字列の変換処理でエラーが発生しました。 利用者の処置 日本語文字列を修正してください。 エラーコードが4006の場合 エラーメッセージ(英語) IOException while reading large BLOB data - 241 - エラーメッセージ(日本語) BLOB型データの読み込み中にIOExceptionが起こりました メッセージの意味 BLOB型データの読み出しで、I/Oエラーが発生しました。 利用者の処置 以下の内容を確認してください。 - ディスクがいっぱいでないか - 書き込み不可でないか エラーコードが4007の場合 エラーメッセージ(英語) Conversion error of a character code エラーメッセージ(日本語) 文字コードの変換でエラーが発生しました メッセージの意味 文字コードの変換でエラーが発生しました。 利用者の処置 - 文字コードのパラメタ指定に誤りがないかを確認してください。 - setStringメソッドでBLOB列に不当な文字列データを追加している可能性があります。2.4 データ型を参考に、ア プリケーションの見直しをしてください。 E.2.11 Vendorエラーメッセージ(7001~7007) エラーコードが7001の場合 エラーメッセージ(英語) Internal error: Cannot find statement in statement vector when closing statement エラーメッセージ(日本語) 内部エラー: クローズ時のステートメントがみつかりません メッセージの意味 内部エラーが発生しました。 利用者の処置 実行中のアプリケーションを終了させ、エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが7002の場合 エラーメッセージ(英語) LDWrapper class has not been loaded for local database access エラーメッセージ(日本語) LDWrapperクラスがローカルデータベースアクセスをロードしていません - 242 - メッセージの意味 ドライバのDLLのロードに失敗しました。 利用者の処置 JDBCドライバの環境設定に誤りがある可能性があります。“5.3 アプリケーションの実行”を参照し、環境設定を見直 してください。 Symfoware ServerのJDBCドライバでは、富士通製JDK/JREまたはSun製JDK/JREでの動作をサポートしています。そ の他のJDK/JREが使用されていないか、アプリケーションの実行環境を見直してください。 エラーコードが7004の場合 エラーメッセージ(英語) Internal error: Cannot find memory allocated for this output or input/output column エラーメッセージ(日本語) このパラメタ用にメモリを確保することができませんでした メッセージの意味 メモリの獲得に失敗しました。 利用者の処置 いくつかのプログラムを終了させた後、再度実行してください。 エラーコードが7005の場合 エラーメッセージ(英語) Trying to do setXXX for an output parameter エラーメッセージ(日本語) OUTパラメタに対してデータをセットすることはできません メッセージの意味 OUTパラメタに対して値を設定することはできません。 利用者の処置 OUTパラメタに対して値を設定しないように修正してください。 エラーコードが7006の場合 エラーメッセージ(英語) INTERVAL datatype not supported エラーメッセージ(日本語) INTERVALデータ型は当ドライバではサポートされていません メッセージの意味 INTERVAL型は、JDBCドライバではサポートしていません。 利用者の処置 INTERVAL型を使用しないように修正してください。 - 243 - エラーコードが7007の場合 エラーメッセージ(英語) The specified user identifier exceeded the maximum allowable number of characters (36) エラーメッセージ(日本語) ユーザ名は36文字を超えることができません メッセージの意味 許される最大の長さを超えたユーザIDが指定されました。 利用者の処置 有効なユーザIDを指定しているか確認してください。 E.2.12 Vendorエラーメッセージ(8000~8009) エラーコードが8000の場合 エラーメッセージ(英語) Symfo-DD: Connection error during reading tables エラーメッセージ(日本語) Symfo-DD: テーブル参照中のコネクションエラー メッセージの意味 ハイブリッドビューの定義情報が獲得できません。 利用者の処置 本メッセージが属するSQLExceptionクラスから、さらに詳細なVendorエラーメッセージが参照できますので、そちらを 参照してください。 エラーコードが8001の場合 エラーメッセージ(英語) Symfo-DD: returned a zero length table for database or schema エラーメッセージ(日本語) Symfo-DD: テーブル長が0で復帰しました メッセージの意味 ハイブリッドビューにアクセスする場合に指定するサーバのデータ資源名またはスキーマ名に誤りがあります。 利用者の処置 サーバのデータ資源名およびスキーマ名を正しく指定してください。 エラーコードが8002の場合 エラーメッセージ(英語) Symfo-DD: Internal error: Invalid parameters エラーメッセージ(日本語) Symfo-DD:内部エラー: パラメタが誤っています メッセージの意味 システムで内部エラーが発生しました。 - 244 - 利用者の処置 エラーコードを採取して、技術員(SE)に連絡してください。 エラーコードが8003の場合 エラーメッセージ(英語) Symfo-DD: No table info row found for database.schema.table エラーメッセージ(日本語) Symfo-DD: テーブルの情報がみつかりません メッセージの意味 ハイブリッドビューにアクセスする場合に指定するサーバのデータ資源名、スキーマ名または表名に誤りがあります。 利用者の処置 サーバのデータ資源名、スキーマ名および表名を正しく指定してください。 エラーコードが8004の場合 エラーメッセージ(英語) Symfo-DD: Connection error occurred エラーメッセージ(日本語) Symfo-DD: コネクションエラーが発生しました メッセージの意味 ハイブリッドビューの定義情報が獲得できません。 利用者の処置 本メッセージが属するSQLExceptionクラスから、さらに詳細なVendorエラーメッセージが参照できますので、そちらを 参照してください。 エラーコードが8005の場合 エラーメッセージ(英語) Symfo-DD: Invalid column table type エラーメッセージ(日本語) Symfo-DD: 無効なカラムです メッセージの意味 指定されたハイブリッドビューの表に誤りがあります。 利用者の処置 指定されたハイブリッドビューが有効かどうかをシステム管理者に確認してください。 エラーコードが8006の場合 エラーメッセージ(英語) Symfo-DD: Column conversion type not found エラーメッセージ(日本語) Symfo-DD: カラムの変換が誤っています - 245 - メッセージの意味 指定されたハイブリッドビューの列のデータ変換ができません。 利用者の処置 指定されたハイブリッドビューの列のデータ型をシステム管理者に確認してください。 エラーコードが8007の場合 エラーメッセージ(英語) Symfo-DD: Missing Column mode information エラーメッセージ(日本語) Symfo-DD: カラムの情報が誤っています メッセージの意味 指定されたハイブリッドビューの列の連結キー情報に誤りがあります。 利用者の処置 指定されたハイブリッドビューの列の連結キーが有効かどうかをシステム管理者に確認してください。 エラーコードが8008の場合 エラーメッセージ(英語) Symfo-DD: Missing Column key information エラーメッセージ(日本語) Symfo-DD: カラムキーの情報が誤っています メッセージの意味 指定されたハイブリッドビューの連結キーの情報に誤りがあります。 利用者の処置 指定されたハイブリッドビューの連結キーが有効かどうかをシステム管理者に確認してください。 エラーコードが8009の場合 エラーメッセージ(英語) Symfo-DD: Invalid Column key type エラーメッセージ(日本語) Symfo-DD: カラムキーの型が誤っています メッセージの意味 指定されたハイブリッドビューのキーの型に誤りがあります。 利用者の処置 指定されたハイブリッドビューのキーの型が有効かどうかをシステム管理者に確認してください。 E.3 symjdメッセージ symjdメッセージは、symjdコマンドを実行したときに返却されるメッセージです。 以下の情報について説明します。 ・ symjdエラー番号 - 246 - ・ エラーメッセージ ・ メッセージの意味 ・ 利用者の処置 参照するメッセージのエラー番号を選択してください。 E.3.1 symjdメッセージ(インフォメーションメッセージ) インフォメーションメッセージについて説明します。 symjd00001の場合 エラーメッセージ(英語) symjd00001 The service Symfoware JDBC Naming Service was successfully registered. エラーメッセージ(日本語) symjd00001 サービス Symfoware JDBC Naming Service を登録しました。 メッセージの意味 サービス Symfoware JDBC Naming Service を登録しました。 利用者の処置 対処の必要はありません。 symjd00002の場合 エラーメッセージ(英語) symjd00002 The service Symfoware JDBC Naming Service was successfully re-registered. エラーメッセージ(日本語) symjd00002 サービス Symfoware JDBC Naming Service を再登録しました。 メッセージの意味 サービス Symfoware JDBC Naming Service の再登録に成功しました。 利用者の処置 対処の必要はありません。 symjd00003の場合 エラーメッセージ(英語) symjd00003 The service Symfoware JDBC Naming Service was successfully removed. エラーメッセージ(日本語) symjd00003 サービス Symfoware JDBC Naming Service を削除しました。 メッセージの意味 サービス Symfoware JDBC Naming Service の削除に成功しました。 利用者の処置 対処の必要はありません。 symjd10000の場合 エラーメッセージ(英語) symjd10000:Nomal end - 247 - エラーメッセージ(日本語) symjd10000:正常に終了しました メッセージの意味 正常に終了しました。 利用者の処置 対処の必要はありません。 symjd10001の場合 エラーメッセージ(英語) symjd10001:Datasource is empty エラーメッセージ(日本語) symjd10001:データソースは登録されていません メッセージの意味 データソースが1つも登録されていません。 利用者の処置 対処の必要はありません。 E.3.2 symjdメッセージ(異常系メッセージ) 異常系のエラーメッセージについて説明します。 symjd00101の場合 エラーメッセージ(英語) symjd00101 The registry key for the event log cannot be found. エラーメッセージ(日本語) symjd00101 イベントログ用レジストリキーが見つかりません。 メッセージの意味 イベントログメッセージのレジストリキーが見つかりませんでした。 システムの処理 イベントログメッセージのレジストリキーの削除を中止します。 利用者の処置 以下のレジストリキーが存在しないことを確認してください。 存在する場合は削除してください。 HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Eventlog \ Application \ Symfoware JDBC Naming Service symjd00102の場合 エラーメッセージ(英語) symjd00102 The port definition SYM-JDBC-NS cannot be found in the SERVICES file. エラーメッセージ(日本語) symjd00102 SERVICESファイルにポート定義 SYM-JDBC-NS が見つかりません。 メッセージの意味 SERVICESファイルにポート定義 SYM-JDBC-NS が見つかりませんでした。 - 248 - 利用者の処置 以下の手順で、SERVICESファイルを更新してください。 1. SERVICESファイルをメモ帳などで開いてください。 - Windows(R) 2000の場合 C:\WINNT\SYSTEM32\DRIVERS\ETC\SERVICES - Windows(R) XP、Windows Server(R) 2003、Windows Vista(R)、Windows(R) 7、Windows Server(R) 2008または Windows Server(R) 2008 R2の場合 C:\WINDOWS\SYSTEM32\DRIVERS\ETC\SERVICES 1. SYM-JDBC-NSを含む行がないことを確認してください。 2. 存在する場合は削除してください。 symjd00201の場合 エラーメッセージ(英語) symjd00201 Necessary option is not specified. エラーメッセージ(日本語) symjd00201 必須オプションが指定されていません。 メッセージの意味 必須オプションが指定されていません。 利用者の処置 symjddefnsコマンドの第1引数に、-addまたは-delを指定して、再度コマンドを実行してください。 symjd00202の場合 エラーメッセージ(英語) symjd00202 This service cannot be registered using the current OS version. エラーメッセージ(日本語) symjd00202 このバージョンのOSでは登録できません。 メッセージの意味 サポートされていないバージョンのOSでコマンドが実行されました。 利用者の処置 このバージョンのOSはサポートされていません。 サポートされているバージョンのOSでコマンドを実行してください。 symjd00203の場合 エラーメッセージ(英語) symjd00203 As the service Symfoware JDBC Naming Service is currently in use, it cannot be re-registered. エラーメッセージ(日本語) symjd00203 サービス Symfoware JDBC Naming Service は使用中のため再登録できません。 メッセージの意味 サービス Symfoware JDBC Naming Service が使用中のため、処理を続行できません。 利用者の処置 サービス Symfoware JDBC Naming Serviceを停止してから、再度コマンドを実行してください。 - 249 - symjd00204の場合 エラーメッセージ(英語) symjd00204 The library symjdmsg.dll cannot be found in the same directory as symjddefns.exe. エラーメッセージ(日本語) symjd00204 symjdmsg.dllが同ディレクトリに存在しません。 メッセージの意味 実行されたコマンドと同じディレクトリにsymjdmsg.dllが見つかりませんでした。 利用者の処置 symjddefns.exeとsymjdmsg.dllを同じディレクトリに配置してから、再度コマンドを実行してください。 symjd00205の場合 エラーメッセージ(英語) symjd00205 Invalid number of options specified. エラーメッセージ(日本語) symjd00205 オプションの数が不正です。 メッセージの意味 コマンドに指定されたオプションの数に誤りがあります。 利用者の処置 コマンドに指定したオプションを修正して、再度コマンドを実行してください。 symjd00206の場合 エラーメッセージ(英語) symjd00206 Invalid option specified.(%S%) エラーメッセージ(日本語) symjd00206 無効なオプションが指定されています。(%S%) 可変情報 %s1%:無効なオプション メッセージの意味 コマンドに指定されたオプションの内容に誤りがあります。 利用者の処置 以下に考えられる原因を示します。 - 先頭オプションに-add、-del以外を指定した場合。 - -addまたは-delを指定して、再度コマンドを実行してください。 - 先頭オプションが-addの場合で、かつ - -addオプションの後に-jdkオプションを2回以上指定した場合。 - -addオプションの後に-portオプションを2回以上指定した場合。 - -addオプションの後に-jdkまたは-port以外のオプションを指定した場合。 オプションを修正して、再度コマンドを実行してください。 - 250 - symjd00207の場合 エラーメッセージ(英語) symjd00207 Invalid path specified.(-jdk %S%) エラーメッセージ(日本語) symjd00207 無効なディレクトリが指定されています。(-jdk %S%) 可変情報 %s1%:-jdkオプションに指定されたJDKのインストールディレクトリ メッセージの意味 [JDKのインストールディレクトリ]\bin\java.exeが見つかりませんでした。 利用者の処置 -jdkオプションに指定したJDKのインストールディレクトリを修正して、再度コマンドを実行してください。 symjd00208の場合 エラーメッセージ(英語) symjd00208 Invalid port number specified.(-port %S%) エラーメッセージ(日本語) symjd00208 無効なポート番号が指定されています。(-port %S%) 可変情報 %s1%:-portオプションに指定されたポート番号 メッセージの意味 -portオプションに指定されたポート番号が無効です。 - ポート番号に数値以外の値を指定した場合。 - ポート番号に指定した数値が1~65535以外の場合。 利用者の処置 -portオプションに指定したポート番号を修正して、再度コマンドを実行してください。 symjd00209の場合 エラーメッセージ(英語) symjd00209 The JAVA_HOME environment variable is not setup. Please use the -jdk option. エラーメッセージ(日本語) symjd00209 環境変数 JAVA_HOME が存在しません。-jdkオプションを使用してください。 メッセージの意味 環境変数JAVA_HOMEが設定されていない環境で-jdkオプションが省略されました。 利用者の処置 環境変数JAVA_HOMEにJDKのインストールディレクトリを指定するか、-jdkオプションにJDKのインストールディレク トリを指定して、再度コマンドを実行してください。 symjd00210の場合 エラーメッセージ(英語) symjd00210 Invalid JAVA_HOME environment variable path specified.(JAVA_HOME= %S%) エラーメッセージ(日本語) symjd00210 環境変数 JAVA_HOME に無効なディレクトリが指定されています。(JAVA_HOME= %S%) - 251 - 可変情報 %s1%:環境変数JAVA_HOMEに指定されたJDKのインストールディレクトリ メッセージの意味 [JDKのインストールディレクトリ]\bin\java.exeが見つかりませんでした。 利用者の処置 環境変数JAVA_HOMEに指定したJDKのインストールディレクトリを修正して、再度コマンドを実行してください。 symjd00211の場合 エラーメッセージ(英語) symjd00211 The specified port number is currently defined by another service. エラーメッセージ(日本語) symjd00211 指定したポート番号は他のサービスに定義されています。 メッセージの意味 指定したポート番号は、他のサービスに定義済です。 利用者の処置 -portオプションに指定したポート番号を修正して、再度コマンドを実行してください。 symjd00212の場合 エラーメッセージ(英語) symjd00212 At register process, a system call error occurred.(code=%S% function=%S% errno=%S% message=%S%) エラーメッセージ(日本語) symjd00212 登録処理において、システムコールエラーが発生しました。(内部コード=%S% function=%S% errno=%S % message=%S%) 可変情報 %s1%:内部コード %s2%:システムコール名 %s3%:エラー番号 %s4%:エラーメッセージ メッセージの意味 システムコールにおいてエラーが発生しました。 利用者の処置 - エラー番号が5の場合 コマンドを実行したユーザに管理者権限がありません。 管理者権限を持つユーザによりコマンドの実行を行ってください。 - その他のエラー番号の場合 エラー番号とエラーメッセージを参考にエラーの原因を取り除いてください。 symjd00213の場合 エラーメッセージ(英語) symjd00213 At register process, the creation of a SERVICES backup file failed. エラーメッセージ(日本語) symjd00213 登録処理において、SERVICESバックアップファイルの作成に失敗しました。 - 252 - メッセージの意味 SERVICESファイルのバックアップファイルの作成に失敗しました。 利用者の処置 以下の手順で、SERVICESファイルを更新してください。 1. SERVICESファイルをメモ帳などで開いてください。 - Windows(R) 2000の場合 C:\WINNT\SYSTEM32\DRIVERS\ETC\SERVICES - Windows(R) XP、Windows Server(R) 2003、Windows Vista(R)、Windows(R) 7、Windows Server(R) 2008または Windows Server(R) 2008 R2の場合 C:\WINDOWS\SYSTEM32\DRIVERS\ETC\SERVICES 1. 他のサービスの記述を参考にして、ポート定義SYM-JDBC-NSを追加してください。 symjd00214の場合 エラーメッセージ(英語) symjd00214 At register process, the update of the SERVICES file failed. エラーメッセージ(日本語) symjd00214 登録処理において、SERVICESファイルの更新に失敗しました。 メッセージの意味 SERVICESファイルの更新に失敗しました。 利用者の処置 以下の手順で、SERVICESファイルを更新してください。 1. SERVICESファイルのファイル名を変更してください。 - Windows(R) 2000の場合 C:\WINNT\SYSTEM32\DRIVERS\ETC\SERVICES - Windows(R) XP、Windows Server(R) 2003、Windows Vista(R)、Windows(R) 7、Windows Server(R) 2008または Windows Server(R) 2008 R2の場合 C:\WINDOWS\SYSTEM32\DRIVERS\ETC\SERVICES 1. SERVICES.BAKのファイル名をSERVICESに変更してください。 2. SERVICESファイルをメモ帳などで開いてください。 3. 他のサービスの記述を参考にして、ポート定義SYM-JDBC-NSを追加してください。 symjd00215の場合 エラーメッセージ(英語) symjd00215 The specified port number may conflict with the port number of another service. (-port %s1%) エラーメッセージ(日本語) symjd00215 指定されたポート番号は他のサービスと重複する可能性があります。(-port %s1%) 可変情報 %s1%:-portオプションに指定されたポート番号 メッセージの意味 サービス Symfoware JDBC Naming Serviceで使用するポート番号に1024~49151以外が指定されました。1024~49151 以外のポート番号は、OSの自動採番機能により他のサービスと重複する可能性があるため設定できません。 利用者の処置 -portオプションに1024~49151の範囲で未使用のポート番号を指定して、再度コマンドを実行してください。 - 253 - symjd00221の場合 エラーメッセージ(英語) symjd00221 This service cannot be removed using the current OS version. エラーメッセージ(日本語) symjd00221 このバージョンのOSでは削除できません。 メッセージの意味 サポートされていないバージョンのOSでコマンドが実行されました。 利用者の処置 このバージョンのOSはサポートされていません。 サポートされているバージョンのOSでコマンドを実行してください。 symjd00222の場合 エラーメッセージ(英語) symjd00222 Failed to remove the service Symfoware JDBC Naming Service as it is currently in use. エラーメッセージ(日本語) symjd00222 サービス Symfoware JDBC Naming Service は使用中のため削除できません。 メッセージの意味 サービスSymfoware JDBC Naming Serviceが使用中のため、処理を続行できません。 利用者の処置 サービスSymfoware JDBC Naming Serviceを停止してから、再度コマンドを実行してください。 symjd00223の場合 エラーメッセージ(英語) symjd00223 At removal process, a system call error occurred.(code=%S% function=%S% errno=%S% message=%S%) エラーメッセージ(日本語) symjd00223 削除処理において、システムコールエラーが発生しました。(内部コード=%S% function=%S% errno=%S % message=%S%) 可変情報 %s1%:内部コード %s2%:システムコール名 %s3%:エラー番号 %s4%:エラーメッセージ メッセージの意味 システムコールにおいてエラーが発生しました。 利用者の処置 - エラー番号が5の場合 コマンドを実行したユーザに管理者権限がありません。 管理者権限を持つユーザによりコマンドの実行を行ってください。 - その他のエラー番号の場合 エラー番号とエラーメッセージを参考にエラーの原因を取り除いてください。 - 254 - symjd00224の場合 エラーメッセージ(英語) symjd00224 At removal process, the creation of a SERVICES backup file failed. エラーメッセージ(日本語) symjd00224 削除処理において、SERVICESバックアップファイルの作成に失敗しました。 メッセージの意味 SERVICESファイルのバックアップファイルの作成に失敗しました。 利用者の処置 以下の手順で、SERVICESファイルを更新してください。 1. SERVICESファイルをメモ帳などで開いてください。 - Windows(R) 2000の場合 C:\WINNT\SYSTEM32\DRIVERS\ETC\SERVICES - Windows(R) XP、Windows Server(R) 2003、Windows Vista(R)、Windows(R) 7、Windows Server(R) 2008または Windows Server(R) 2008 R2の場合 C:\WINDOWS\SYSTEM32\DRIVERS\ETC\SERVICES 1. SYM-JDBC-NSを含む行を削除してください。 symjd00225の場合 エラーメッセージ(英語) symjd00225 At removal process, the update of the SERVICES file failed. エラーメッセージ(日本語) symjd00225 削除処理において、SERVICESファイルの更新に失敗しました。 メッセージの意味 SERVICESファイルの更新に失敗しました 利用者の処置 以下の手順で、SERVICESファイルを更新してください。 1. SERVICESファイルのファイル名を変更してください。 - Windows(R) 2000の場合 C:\WINNT\SYSTEM32\DRIVERS\ETC\SERVICES - Windows(R) XP、Windows Server(R) 2003、Windows Vista(R)、Windows(R) 7、Windows Server(R) 2008または Windows Server(R) 2008 R2の場合 C:\WINDOWS\SYSTEM32\DRIVERS\ETC\SERVICES 1. SERVICES.BAKのファイル名をSERVICESに変更してください。 2. SERVICESファイルをメモ帳などで開いてください。 3. SYM-JDBC-NSを含む行を削除してください。 symjd00231の場合 エラーメッセージ(英語) symjd00231 Unable to locate java.exe in %S%. エラーメッセージ(日本語) symjd00231 %S% にはjava.exeが見つかりません。 - 255 - 可変情報 %s1%:JDKのインストールディレクトリ\bin\java.exe メッセージの意味 [JDKのインストールディレクトリ]\bin\java.exeが見つかりませんでした。 利用者の処置 再度サービスを登録してから、サービスを開始してください。 symjd00232の場合 エラーメッセージ(英語) symjd00232 At start-up process, a system call error occurred.(code=%S% function=%S% errno=%S% message=%S%) エラーメッセージ(日本語) symjd00232 起動処理において、システムコールエラーが発生しました。(内部コード=%S% function=%S% errno=%S % message=%S%) 可変情報 %s1%:内部コード %s2%:システムコール名 %s3%:エラー番号 %s4%:エラーメッセージ メッセージの意味 システムコールにおいてエラーが発生しました。 利用者の処置 - エラー番号が5の場合 コマンドを実行したユーザーに管理者権限がありません。 管理者権限を持つユーザによりコマンドの実行を行ってください。 - その他のエラー番号の場合 エラー番号とエラーメッセージを参考にエラーの原因を取り除いてください。 symjd10002の場合 エラーメッセージ(英語) symjd10002:The indispensable option is not specified エラーメッセージ(日本語) symjd10002:必須オプションが指定されていません メッセージの意味 -list、-lookup、-bind、-rebind、-unbindのいずれも指定されていません。 利用者の処置 -list、-lookup、-bind、-rebind、-unbindのいずれかを指定してください。 symjd10003の場合 エラーメッセージ(英語) symjd10003:The value specified to be a "@1@" option is not right エラーメッセージ(日本語) symjd10003:オプション "@1@" に指定された値が正しくありません - 256 - メッセージの意味 オプション:"@1@" に指定された値に誤りがあります。 利用者の処置 オプション:"@1@" に正しい値を指定してください。 symjd10004の場合 エラーメッセージ(英語) symjd10004:Invalid option "@1@" was specified エラーメッセージ(日本語) symjd10004:無効なオプション "@1@" が指定されました メッセージの意味 指定されたオプション "@1@" は無効です。 利用者の処置 正しいオプションを指定してください。 symjd10005の場合 エラーメッセージ(英語) symjd10005:The "@1@" option is not specified エラーメッセージ(日本語) symjd10005:オプション "@1@" が指定されていません メッセージの意味 "@1@" オプションを省略することはできません。 利用者の処置 "@1@" オプションを指定してください。 symjd10006の場合 エラーメッセージ(英語) symjd10006:Specification of an option has inconsistency エラーメッセージ(日本語) symjd10006:オプションの指定に矛盾があります メッセージの意味 -list、-lookup、-bind、-rebind、-unbindのいずれかを2つ以上同時に指定することはできません。 利用者の処置 -list、-lookup、-bind、-rebind、-unbindのいずれか1つを指定してください。 symjd10007の場合 エラーメッセージ(英語) symjd10007:Datasource definition file is not found エラーメッセージ(日本語) symjd10007:データソース定義ファイルが見つかりません メッセージの意味 -file オプションに指定されたデータソース定義ファイルが見つかりません。 - 257 - 利用者の処置 -file オプションにデータソース定義ファイルを指定してください。 symjd10008の場合 エラーメッセージ(英語) symjd10008:Reading of a datasource definition file went wrong エラーメッセージ(日本語) symjd10008:データソース定義ファイルの読み込みに失敗しました メッセージの意味 データソース定義ファイルの読み込みでエラーが発生しました。 利用者の処置 エラーの原因を取り除いてください。 symjd10009の場合 エラーメッセージ(英語) symjd10009:The error occurred with naming service Detail: <detail Message> エラーメッセージ(日本語) symjd10009:ネーミングサービスでエラーが発生しました 詳細:<詳細メッセージ> メッセージの意味 ネーミングサービスでエラーが発生しました。 利用者の処置 エラーの原因を取り除いてください。 詳細メッセージで以下のメッセージが出力されている場合、Symfoware Serverのネーミングサービスの再起動が必要 です。 javax.naming.CommunicationException: This DataSource is already used by application. Symfoware Serverのネーミングサービスを再起動後、symjddefdsコマンドを再実行してください。 symjd10010の場合 エラーメッセージ(英語) symjd10010:Invalid URL Format - URL not know by driver エラーメッセージ(日本語) symjd10010: URL記述形式エラー - 認識できないURLが記述されました メッセージの意味 JDBCドライバがURLを認識できません。 利用者の処置 URLに正しい値を指定してください。 symjd10011の場合 エラーメッセージ(英語) symjd10011:The error occurred in the analysis of URL Detail: <detail Message> - 258 - エラーメッセージ(日本語) symjd10011:URLの解析でエラーが発生しました 詳細:<詳細メッセージ> メッセージの意味 JDBCドライバがURLを認識できません。 利用者の処置 JDBCドライバが認識可能なデータベース環境を設定してください。 symjd10012の場合 エラーメッセージ(英語) symjd10012:DataSource "@1@" is not defined エラーメッセージ(日本語) symjd10012:データソース "@1@" は登録されていません メッセージの意味 データソース“@1@”が登録されていないため処理を続行できません。 利用者の処置 データソースの一覧を出力して適切なデータソースを指定してください。 symjd10013の場合 エラーメッセージ(英語) symjd10013:DataSource "@1@" is already registered エラーメッセージ(日本語) symjd10013:データソース "@1@" は既に登録されています メッセージの意味 データソース“@1@”がすでに登録されているため登録できません。 利用者の処置 データソースの一覧を出力して適切なデータソースを指定してください。 symjd10014の場合 エラーメッセージ(英語) symjd10014:Naming Service isn't being started HostName:@1@ エラーメッセージ(日本語) symjd10014:ネーミングサービスが起動されていません ホスト名:@1@ メッセージの意味 ネーミングサービスが起動されていません。 利用者の処置 ネーミングサービスを起動してください。 symjd10015の場合 エラーメッセージ(英語) symjd10015:URL is not specified エラーメッセージ(日本語) symjd10015:URLが指定されていません - 259 - メッセージの意味 URLが指定されていません。 利用者の処置 URLを指定してください。 - 260 - 付録F サポートAPI一覧 Symfoware ServerのJDBCドライバがサポートするAPIについて説明します。 インタフェース 名 Blob CallableState ment fjsymjdbc fjsymjdbc fjsymjdbc2. 4.jar 3.jar jar メソッド名 free() ○ × × getBinaryStream() ○ ○ × getBinaryStream(long pos, long length) ○ × × getBytes(long pos, int length) ○ ○ × length() ○ ○ × position(Blob pattern, long start) ○ ○ × position(byte[] pattern, long start) ○ ○ × setBinaryStream(long pos) ○ ○ × setBytes(long pos, byte[] bytes) ○ ○ × setBytes(long pos, byte[] bytes, int offset, int len) ○ ○ × truncate(long len) ○ ○ × getArray(String parameterName) ○ ○ × getArray(int parameterIndex) ○ ○ × getBigDecimal(String parameterName) ○ ○ × getBigDecimal(int parameterIndex) ○ ○ ○ getBigDecimal(int parameterIndex, int scale) ○ ○ ○ getBlob(String parameterName) ○ ○ × getBlob(int parameterIndex) ○ ○ × getBoolean(String parameterName) ○ ○ × getBoolean(int parameterIndex) ○ ○ ○ getByte(String parameterName) ○ ○ × getByte(int parameterIndex) ○ ○ ○ getBytes(String parameterName) ○ ○ × getBytes(int parameterIndex) ○ ○ ○ getCharacterStream(String parameterName) ○ × × getCharacterStream(int parameterIndex) ○ × × getClob(String parameterName) ○ ○ × getClob(int parameterIndex) ○ ○ × getDate(String parameterName) ○ ○ × getDate(String parameterName, Calendar cal) ○ ○ × getDate(int parameterIndex) ○ ○ ○ getDate(int parameterIndex, Calendar cal) ○ ○ × getDouble(String parameterName) ○ ○ × getDouble(int parameterIndex) ○ ○ ○ getFloat(String parameterName) ○ ○ × - 261 - インタフェース 名 fjsymjdbc fjsymjdbc fjsymjdbc2. 4.jar 3.jar jar メソッド名 getFloat(int parameterIndex) ○ ○ ○ getInt(String parameterName) ○ ○ × getInt(int parameterIndex) ○ ○ ○ getLong(String parameterName) ○ ○ × getLong(int parameterIndex) ○ ○ ○ getNCharacterStream(String parameterName) × × × getNCharacterStream(int parameterIndex) × × × getNClob(String parameterName) × × × getNClob(int parameterIndex) × × × getNString(String parameterName) × × × getNString(int parameterIndex) × × × getObject(String parameterName) ○ ○ × getObject(String parameterName, Map<String,Class<?>> map) ○ ○ × getObject(int parameterIndex, Map<String,Class<?>> map) ○ ○ × getObject(int parameterIndex) ○ ○ × getRef(String parameterName) ○ ○ × getRef(int parameterIndex) ○ ○ × getRowId(String parameterName) × × × getRowId(int parameterIndex) × × × getSQLXML(String parameterName) × × × getSQLXML(int parameterIndex) × × × getShort(String parameterName) ○ ○ × getShort(int parameterIndex) ○ ○ ○ getString(String parameterName) ○ ○ × getString(int parameterIndex) ○ ○ ○ getTime(String parameterName) ○ ○ × getTime(String parameterName, Calendar cal) ○ ○ × getTime(int parameterIndex) ○ ○ ○ getTime(int parameterIndex, Calendar cal) ○ ○ × getTimestamp(String parameterName) ○ ○ × getTimestamp(String parameterName, Calendar cal) ○ ○ × getTimestamp(int parameterIndex) ○ ○ ○ getTimestamp(int parameterIndex, Calendar cal) ○ ○ × getURL(String parameterName) ○ ○ × getURL(int parameterIndex) ○ ○ × registerOutParameter(String parameterName, int sqlType, String typeName) ○ ○ × registerOutParameter(String parameterName, int sqlType, int scale) ○ ○ × - 262 - インタフェース 名 fjsymjdbc fjsymjdbc fjsymjdbc2. 4.jar 3.jar jar メソッド名 registerOutParameter(int parameterIndex, int sqlType, String typeName) ○ ○ × registerOutParameter(int parameterIndex, int sqlType) ○ ○ ○ registerOutParameter(int parameterIndex, int sqlType, int scale) ○ ○ ○ setAsciiStream(String parameterName, InputStream x) ○ × × setAsciiStream(String parameterName, InputStream x, int length) ○ ○ × setAsciiStream(String parameterName, InputStream x, long length) ○ × × setBigDecimal(String parameterName, BigDecimal x) ○ ○ × setBinaryStream(String parameterName, InputStream x) ○ × × setBinaryStream(String parameterName, InputStream x, int length) ○ ○ × setBinaryStream(String parameterName, InputStream x, long length) ○ × × setBlob(String parameterName, Blob x) ○ × × setBlob(String parameterName, InputStream inputStream) ○ × × setBlob(String parameterName, InputStream inputStream, long length) ○ × × setBoolean(String parameterName, boolean x) ○ ○ × setByte(String parameterName, byte x) ○ ○ × setBytes(String parameterName, byte[] x) ○ ○ × setCharacterStream(String parameterName, Reader reader) ○ × × setCharacterStream(String parameterName, Reader reader, int length) ○ ○ × setCharacterStream(String parameterName, Reader reader, long length) ○ × × setClob(String parameterName, Clob x) ○ × × setClob(String parameterName, Reader reader) ○ × × setClob(String parameterName, Reader reader, long length) ○ × × setDate(String parameterName, Date x) ○ ○ × setDate(String parameterName, Date x, Calendar cal) ○ ○ × setDouble(String parameterName, double x) ○ ○ × setFloat(String parameterName, float x) ○ ○ × setInt(String parameterName, int x) ○ ○ × setLong(String parameterName, long x) ○ ○ × setNCharacterStream(String parameterName, Reader value) × × × setNCharacterStream(String parameterName, Reader value, long length) × × × setNClob(String parameterName, NClob value) × × × setNClob(String parameterName, Reader reader) × × × setNClob(String parameterName, Reader reader, long length) × × × setNString(String parameterName, String value) × × × setNull(String parameterName, int sqlType) ○ ○ × setNull(String parameterName, int sqlType, String typeName) ○ ○ × - 263 - インタフェース 名 Clob Connection fjsymjdbc fjsymjdbc fjsymjdbc2. 4.jar 3.jar jar メソッド名 setObject(String parameterName, Object x) ○ ○ × setObject(String parameterName, Object x, int targetSqlType) ○ ○ × setObject(String parameterName, Object x, int targetSqlType, int scale) ○ ○ × setRowId(String parameterName, RowId x) × × × setSQLXML(String parameterName, SQLXML xmlObject) × × × setShort(String parameterName, short x) ○ ○ × setString(String parameterName, String x) ○ ○ × setTime(String parameterName, Time x) ○ ○ × setTime(String parameterName, Time x, Calendar cal) ○ ○ × setTimestamp(String parameterName, Timestamp x) ○ ○ × setTimestamp(String parameterName, Timestamp x, Calendar cal) ○ ○ × setURL(String parameterName, URL val) ○ ○ × wasNull() ○ ○ ○ free() ○ × × getAsciiStream() ○ ○ × getCharacterStream() ○ ○ × getCharacterStream(long pos, long length) ○ × × getSubString(long pos, int length) ○ ○ × length() ○ ○ × position(Clob searchstr, long start) ○ ○ × position(String searchstr, long start) ○ ○ × setAsciiStream(long pos) ○ ○ × setCharacterStream(long pos) ○ ○ × setString(long pos, String str) ○ ○ × setString(long pos, String str, int offset, int len) ○ ○ × truncate(long len) ○ ○ × clearWarnings() ○ ○ ○ close() ○ ○ ○ commit() ○ ○ ○ createArrayOf(String typeName, Object[] elements) × × × createBlob() × × × createClob() × × × createNClob() × × × createSQLXML() × × × createStatement() ○ ○ ○ createStatement(int resultSetType, int resultSetConcurrency) ○ ○ ○ createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) ○ ○ × - 264 - インタフェース 名 fjsymjdbc fjsymjdbc fjsymjdbc2. 4.jar 3.jar jar メソッド名 createStruct(String typeName, Object[] attributes) × × × getAutoCommit() ○ ○ ○ getCatalog() ○ ○ ○ getClientInfo() ○ × × getClientInfo(String name) ○ × × getHoldability() ○ ○ × getMetaData() ○ ○ ○ getTransactionIsolation() ○ ○ ○ getTypeMap() ○ ○ × getWarnings() ○ ○ ○ isClosed() ○ ○ ○ isReadOnly() ○ ○ ○ isValid(int timeout) ○ × × nativeSQL(String sql) ○ ○ × prepareCall(String sql) ○ ○ ○ prepareCall(String sql, int resultSetType, int resultSetConcurrency) ○ ○ × prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) ○ ○ × prepareStatement(String sql) ○ ○ ○ prepareStatement(String sql, String[] columnNames) × × × prepareStatement(String sql, int autoGeneratedKeys) × × × prepareStatement(String sql, int resultSetType, int resultSetConcurrency) ○ ○ ○ prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) ○ ○ × prepareStatement(String sql, int[] columnIndexes) × × × releaseSavepoint(Savepoint savepoint) × × × rollback() ○ ○ ○ rollback(Savepoint savepoint) × × × setAutoCommit(boolean autoCommit) ○ ○ ○ setCatalog(String catalog) ○ ○ ○ setClientInfo(Properties properties) × × × setClientInfo(String name, String value) × × × setHoldability(int holdability) ○ ○ × setReadOnly(boolean readOnly) ○ ○ ○ setSavepoint() × × × setSavepoint(String name) × × × setTransactionIsolation(int level) ○ ○ ○ setTypeMap(Map map) ○ ○ × - 265 - インタフェース 名 ConnectionP oolDataSour ce DatabaseMet aData fjsymjdbc fjsymjdbc fjsymjdbc2. 4.jar 3.jar jar メソッド名 getLoginTimeout() ○ ○ ○ getLogWriter() ○ ○ ○ setLoginTimeout(int seconds) ○ ○ ○ setLogWriter(PrintWriter out) ○ ○ ○ getPooledConnection() ○ ○ ○ getPooledConnection(String user, String password) ○ ○ ○ allProceduresAreCallable() ○ ○ ○ allTablesAreSelectable() ○ ○ ○ autoCommitFailureClosesAllResultSets() ○ × × dataDefinitionCausesTransactionCommit() ○ ○ ○ dataDefinitionIgnoredInTransactions() ○ ○ ○ deletesAreDetected(int type) ○ ○ ○ doesMaxRowSizeIncludeBlobs() ○ ○ ○ getAttributes(String catalog, String schemaPattern, String typeNamePattern, String attributeNamePattern) ○ ○ × getBestRowIdentifier(String catalog, String schema, String table, int scope, Boolean nullable) ○ ○ ○ getCatalogSeparator() ○ ○ ○ getCatalogTerm() ○ ○ ○ getCatalogs() ○ ○ ○ getClientInfoProperties() ○ × × getColumnPrivileges(String catalog, String schema, String table, String columnNamePattern) ○ ○ ○ getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) ○ ○ ○ getConnection() ○ ○ ○ getCrossReference(String parentCatalog, String parentSchema, String parentTable, String foreignCatalog, String foreignSchema, String foreignTable) ○ ○ ○ getDatabaseMajorVersion() ○ ○ × getDatabaseMinorVersion() ○ ○ × getDatabaseProductName() ○ ○ ○ getDatabaseProductVersion() ○ ○ ○ getDefaultTransactionIsolation() ○ ○ ○ getDriverMajorVersion() ○ ○ ○ getDriverMinorVersion() ○ ○ ○ getDriverName() ○ ○ ○ getDriverVersion() ○ ○ ○ getExportedKeys(String catalog, String schema, String table) ○ ○ ○ getExtraNameCharacters() ○ ○ ○ - 266 - インタフェース 名 fjsymjdbc fjsymjdbc fjsymjdbc2. 4.jar 3.jar jar メソッド名 getFunctionColumns(String catalog, String schemaPattern, String functionNamePattern, String columnNamePattern) ○ × × getFunctions(String catalog, String schemaPattern, String functionNamePattern) ○ × × getIdentifierQuoteString() ○ ○ ○ getImportedKeys(String catalog, String schema, String table) ○ ○ ○ getIndexInfo(String catalog, String schema, String table, Boolean unique, Boolean approximate) ○ ○ ○ getJDBCMajorVersion() ○ ○ × getJDBCMinorVersion() ○ ○ × getMaxBinaryLiteralLength() ○ ○ ○ getMaxCatalogNameLength() ○ ○ ○ getMaxCharLiteralLength() ○ ○ ○ getMaxColumnNameLength() ○ ○ ○ getMaxColumnsInGroupBy() ○ ○ ○ getMaxColumnsInIndex() ○ ○ ○ getMaxColumnsInOrderBy() ○ ○ ○ getMaxColumnsInSelect() ○ ○ ○ getMaxColumnsInTable() ○ ○ ○ getMaxConnections() ○ ○ ○ getMaxCursorNameLength() ○ ○ ○ getMaxIndexLength() ○ ○ ○ getMaxProcedureNameLength() ○ ○ ○ getMaxRowSize() ○ ○ ○ getMaxSchemaNameLength() ○ ○ ○ getMaxStatementLength() ○ ○ ○ getMaxStatements() ○ ○ ○ getMaxTableNameLength() ○ ○ ○ getMaxTablesInSelect() ○ ○ ○ getMaxUserNameLength() ○ ○ ○ getNumericFunctions() ○ ○ ○ getPrimaryKeys(String catalog, String schema, String table) ○ ○ ○ getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern, String columnNamePattern) ○ ○ ○ getProcedureTerm() ○ ○ ○ getProcedures(String catalog, String schemaPattern, String procedureNamePattern) ○ ○ ○ getRowIdLifetime() ○ × × getSQLKeywords() ○ ○ ○ getSQLStateType() ○ ○ × - 267 - インタフェース 名 fjsymjdbc fjsymjdbc fjsymjdbc2. 4.jar 3.jar jar メソッド名 getSchemaTerm() ○ ○ ○ getSchemas() ○ ○ ○ getSchemas(String catalog, String schemaPattern) ○ ○ × getSearchStringEscape() ○ ○ ○ getStringFunctions() ○ ○ ○ getSuperTables(String catalog, String schemaPattern, String tableNamePattern) ○ ○ × getSuperTypes(String catalog, String schemaPattern, String typeNamePattern) ○ ○ × getSystemFunctions() ○ ○ ○ getTablePrivileges(String catalog, String schemaPattern, String tableNamePattern) ○ ○ ○ getTableTypes() ○ ○ ○ getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) ○ ○ ○ getTimeDateFunctions() ○ ○ ○ getTypeInfo() ○ ○ ○ getUDTs(String catalog, String schemaPattern, String typeNamePattern, int[] types) ○ ○ ○ getURL() ○ ○ ○ getUserName() ○ ○ ○ getVersionColumns(String catalog, String schema, String table) ○ ○ ○ getResultSetHoldability() ○ ○ × insertsAreDetected(int type) ○ ○ ○ isCatalogAtStart() ○ ○ ○ isReadOnly() ○ ○ ○ locatorsUpdateCopy() ○ ○ × nullPlusNonNullIsNull() ○ ○ ○ nullsAreSortedAtEnd() ○ ○ ○ nullsAreSortedAtStart() ○ ○ ○ nullsAreSortedHigh() ○ ○ ○ nullsAreSortedLow() ○ ○ ○ othersDeletesAreVisible(int type) ○ ○ ○ othersInsertsAreVisible(int type) ○ ○ ○ othersUpdatesAreVisible(int type) ○ ○ ○ ownDeletesAreVisible(int type) ○ ○ ○ ownInsertsAreVisible(int type) ○ ○ ○ ownUpdatesAreVisible(int type) ○ ○ ○ storesLowerCaseIdentifiers() ○ ○ ○ storesLowerCaseQuotedIdentifiers() ○ ○ ○ - 268 - インタフェース 名 fjsymjdbc fjsymjdbc fjsymjdbc2. 4.jar 3.jar jar メソッド名 storesMixedCaseIdentifiers() ○ ○ ○ storesMixedCaseQuotedIdentifiers() ○ ○ ○ storesUpperCaseIdentifiers() ○ ○ ○ storesUpperCaseQuotedIdentifiers() ○ ○ ○ supportsANSI92EntryLevelSQL() ○ ○ ○ supportsANSI92FullSQL() ○ ○ ○ supportsANSI92IntermediateSQL() ○ ○ ○ supportsAlterTableWithAddColumn() ○ ○ ○ supportsAlterTableWithDropColumn() ○ ○ ○ supportsBatchUpdates() ○ ○ ○ supportsCatalogsInDataManipulation() ○ ○ ○ supportsCatalogsInIndexDefinitions() ○ ○ ○ supportsCatalogsInPrivilegeDefinitions() ○ ○ ○ supportsCatalogsInProcedureCalls() ○ ○ ○ supportsCatalogsInTableDefinitions() ○ ○ ○ supportsColumnAliasing() ○ ○ ○ supportsConvert() ○ ○ ○ supportsConvert(int fromType, int toType) ○ ○ ○ supportsCoreSQLGrammar() ○ ○ ○ supportsCorrelatedSubqueries() ○ ○ ○ supportsDataDefinitionAndDataManipulationTransactions() ○ ○ ○ supportsDataManipulationTransactionsOnly() ○ ○ ○ supportsDifferentTableCorrelationNames() ○ ○ ○ supportsExpressionsInOrderBy() ○ ○ ○ supportsExtendedSQLGrammar() ○ ○ ○ supportsFullOuterJoins() ○ ○ ○ supportsGetGeneratedKeys() ○ ○ × supportsGroupBy() ○ ○ ○ supportsGroupByBeyondSelect() ○ ○ ○ supportsGroupByUnrelated() ○ ○ ○ supportsIntegrityEnhancementFacility() ○ ○ ○ supportsLikeEscapeClause() ○ ○ ○ supportsLimitedOuterJoins() ○ ○ ○ supportsMinimumSQLGrammar() ○ ○ ○ supportsMixedCaseIdentifiers() ○ ○ ○ supportsMixedCaseQuotedIdentifiers() ○ ○ ○ supportsMultipleOpenResults() ○ ○ × supportsMultipleResultSets() ○ ○ ○ supportsMultipleTransactions() ○ ○ ○ - 269 - インタフェース 名 ParameterMe taData fjsymjdbc fjsymjdbc fjsymjdbc2. 4.jar 3.jar jar メソッド名 supportsNamedParameters() ○ ○ × supportsNonNullableColumns() ○ ○ ○ supportsOpenCursorsAcrossCommit() ○ ○ ○ supportsOpenCursorsAcrossRollback() ○ ○ ○ supportsOpenStatementsAcrossCommit() ○ ○ ○ supportsOpenStatementsAcrossRollback() ○ ○ ○ supportsOrderByUnrelated() ○ ○ ○ supportsOuterJoins() ○ ○ ○ supportsPositionedDelete() ○ ○ ○ supportsPositionedUpdate() ○ ○ ○ supportsResultSetConcurrency(int type, int concurrency) ○ ○ ○ supportsResultSetHoldability(int holdability) ○ ○ × supportsResultSetType(int type) ○ ○ ○ supportsSavepoints() ○ ○ × supportsSchemasInDataManipulation() ○ ○ ○ supportsSchemasInIndexDefinitions() ○ ○ ○ supportsSchemasInPrivilegeDefinitions() ○ ○ ○ supportsSchemasInProcedureCalls() ○ ○ ○ supportsSchemasInTableDefinitions() ○ ○ ○ supportsSelectForUpdate() ○ ○ ○ supportsStatementPooling() ○ ○ × supportsStoredFunctionsUsingCallSyntax() ○ × × supportsStoredProcedures() ○ ○ ○ supportsSubqueriesInComparisons() ○ ○ ○ supportsSubqueriesInExists() ○ ○ ○ supportsSubqueriesInIns() ○ ○ ○ supportsSubqueriesInQuantifieds() ○ ○ ○ supportsTableCorrelationNames() ○ ○ ○ supportsTransactionIsolationLevel(int level) ○ ○ ○ supportsTransactions() ○ ○ ○ supportsUnion() ○ ○ ○ supportsUnionAll() ○ ○ ○ updatesAreDetected(int type) ○ ○ ○ usesLocalFilePerTable() ○ ○ ○ usesLocalFiles() ○ ○ ○ getParameterClassName(int param) ○ ○ × getParameterCount() ○ ○ × getParameterMode(int param) ○ ○ × getParameterType(int param) ○ ○ × - 270 - インタフェース 名 PreparedStat ement fjsymjdbc fjsymjdbc fjsymjdbc2. 4.jar 3.jar jar メソッド名 getParameterTypeName(int param) ○ ○ × getPrecision(int param) ○ ○ × getScale(int param) ○ ○ × isNullable(int param) ○ ○ × isSigned(int param) ○ ○ × addBatch() ○ ○ × clearParameters() ○ ○ ○ execute() ○ ○ ○ executeQuery() ○ ○ ○ executeUpdate() ○ ○ ○ getMetaData() ○ ○ × getParameterMetaData() ○ ○ × setArray(int parameterIndex, Array x) ○ ○ × setAsciiStream(int parameterIndex, InputStream x) × × × setAsciiStream(int parameterIndex, InputStream x, int length) ○ ○ × setAsciiStream(int parameterIndex, InputStream x, long length) × × × setBigDecimal(int parameterIndex, BigDecimal x) ○ ○ ○ setBinaryStream(int parameterIndex, InputStream x) × × × setBinaryStream(int parameterIndex, InputStream x, int length) ○ ○ ○ setBinaryStream(int parameterIndex, InputStream x, long length) × × × setBlob(int parameterIndex, Blob x) ○ ○ × setBlob(int parameterIndex, InputStream inputStream) ○ × × setBlob(int parameterIndex, InputStream inputStream, long length) ○ × × setBoolean(int parameterIndex, boolean x) ○ ○ ○ setByte(int parameterIndex, byte x) ○ ○ ○ setBytes(int parameterIndex, byte[] x) ○ ○ ○ setCharacterStream(int parameterIndex, Reader reader) ○ × × setCharacterStream(int parameterIndex, Reader reader, int length) ○ ○ × setCharacterStream(int parameterIndex, Reader reader, long length) ○ × × setClob(int parameterIndex, Clob x) ○ ○ × setClob(int parameterIndex, Reader reader) ○ × × setClob(int parameterIndex, Reader reader, long length) ○ × × setDate(int parameterIndex, Date x) ○ ○ ○ setDate(int parameterIndex, Date x, Calendar cal) ○ ○ × setDouble(int parameterIndex, double x) ○ ○ ○ setFloat(int parameterIndex, float x) ○ ○ ○ setInt(int parameterIndex, int x) ○ ○ ○ setLong(int parameterIndex, long x) ○ ○ ○ setNCharacterStream(int parameterIndex, Reader value) × × × - 271 - インタフェース 名 ResultSet fjsymjdbc fjsymjdbc fjsymjdbc2. 4.jar 3.jar jar メソッド名 setNCharacterStream(int parameterIndex, Reader value, long length) × × × setNClob(int parameterIndex, NClob value) × × × setNClob(int parameterIndex, Reader reader) × × × setNClob(int parameterIndex, Reader reader, long length) × × × setNString(int parameterIndex, String value) × × × setNull(int parameterIndex, int sqlType, String typeName) ○ ○ × setNull(int parameterIndex, int sqlType) ○ ○ ○ setObject(int parameterIndex, Object x) ○ ○ × setObject(int parameterIndex, Object x, int targetSqlType) ○ ○ × setObject(int parameterIndex, Object x, int targetSqlType, int scaleOrLength) ○ ○ × setRef(int parameterIndex, Ref x) ○ ○ × setRowId(int parameterIndex, RowId x) ○ × × setSQLXML(int parameterIndex, SQLXML xmlObject) × × × setShort(int parameterIndex, short x) ○ ○ ○ setString(int parameterIndex, String x) ○ ○ ○ setTime(int parameterIndex, Time x) ○ ○ ○ setTime(int parameterIndex, Time x, Calendar cal) ○ ○ × setTimestamp(int parameterIndex, Timestamp x) ○ ○ ○ setTimestamp(int parameterIndex, Timestamp x, Calendar cal) ○ ○ × setURL(int parameterIndex, URL x) ○ ○ × setUnicodeStream(int parameterIndex, InputStream x, int length) ○ ○ × absolute(int row) ○ ○ ○ afterLast() ○ ○ ○ beforeFirst() ○ ○ ○ cancelRowUpdates() ○ ○ × clearWarnings() ○ ○ ○ close() ○ ○ ○ deleteRow() ○ ○ × findColumn(String columnName) ○ ○ ○ first() ○ ○ ○ getArray(String columnLabel) ○ ○ × getArray(int columnIndex) ○ ○ × getAsciiStream(String columnLabel) ○ ○ × getAsciiStream(int columnIndex) ○ ○ × getBigDecimal(String columnName) ○ ○ ○ getBigDecimal(String columnName, int scale) ○ ○ ○ getBigDecimal(int columnIndex) ○ ○ ○ getBigDecimal(int columnIndex, int scale) ○ ○ ○ - 272 - インタフェース 名 fjsymjdbc fjsymjdbc fjsymjdbc2. 4.jar 3.jar jar メソッド名 getBinaryStream(String columnName) ○ ○ ○ getBinaryStream(int columnIndex) ○ ○ ○ getBlob(String columnLabel) ○ ○ × getBlob(int columnIndex) ○ ○ × getBoolean(String columnName) ○ ○ ○ getBoolean(int columnIndex) ○ ○ ○ getByte(String columnName) ○ ○ ○ getByte(int columnIndex) ○ ○ ○ getBytes(String columnName) ○ ○ ○ getBytes(int columnIndex) ○ ○ ○ getCharacterStream(String columnLabel) ○ ○ × getCharacterStream(int columnIndex) ○ ○ × getClob(String columnLabel) ○ ○ × getClob(int columnIndex) ○ ○ × getConcurrency() ○ ○ ○ getCursorName() ○ ○ ○ getDate(String columnName) ○ ○ ○ getDate(String columnLabel, Calendar cal) ○ ○ × getDate(int columnIndex) ○ ○ ○ getDate(int columnIndex, Calendar cal) ○ ○ × getDouble(String columnName) ○ ○ ○ getDouble(int columnIndex) ○ ○ ○ getFetchDirection() ○ ○ ○ getFetchSize() ○ ○ × getFloat(String columnName) ○ ○ ○ getFloat(int columnIndex) ○ ○ ○ getHoldability() ○ × × getInt(String columnName) ○ ○ ○ getInt(int columnIndex) ○ ○ ○ getLong(String columnName) ○ ○ ○ getLong(int columnIndex) ○ ○ ○ getMetaData() ○ ○ ○ getNCharacterStream(String columnLabel) × × × getNCharacterStream(int columnIndex) × × × getNClob(String columnLabel) × × × getNClob(int columnIndex) × × × getNString(String columnLabel) × × × getNString(int columnIndex) × × × getObject(String columnLabel, Map map) ○ ○ × - 273 - インタフェース 名 fjsymjdbc fjsymjdbc fjsymjdbc2. 4.jar 3.jar jar メソッド名 getObject(String columnLabel) ○ ○ × getObject(int columnIndex) ○ ○ × getObject(int columnIndex, Map map) ○ ○ × getRef(String columnLabel) ○ ○ × getRef(int columnIndex) ○ ○ × getRow() ○ ○ ○ getRowId(String columnLabel) ○ × × getRowId(int columnIndex) ○ × × getSQLXML(String columnLabel) × × × getSQLXML(int columnIndex) × × × getShort(String columnName) ○ ○ ○ getShort(int columnIndex) ○ ○ ○ getStatement() ○ ○ ○ getString(String columnName) ○ ○ ○ getString(int columnIndex) ○ ○ ○ getTime(String columnName) ○ ○ ○ getTime(String columnLabel, Calendar cal) ○ ○ × getTime(int columnIndex) ○ ○ ○ getTime(int columnIndex, Calendar cal) ○ ○ × getTimestamp(String columnName) ○ ○ ○ getTimestamp(String columnLabel, Calendar cal) ○ ○ × getTimestamp(int columnIndex) ○ ○ ○ getTimestamp(int columnIndex, Calendar cal) ○ ○ × getType() ○ ○ ○ getURL(String columnLabel) ○ ○ × getURL(int columnIndex) ○ ○ × getUnicodeStream(String columnLabel) ○ ○ × getUnicodeStream(int columnIndex) ○ ○ × getWarnings() ○ ○ ○ insertRow() × × × isAfterLast() ○ ○ ○ isBeforeFirst() ○ ○ ○ isClosed() ○ × × isFirst() ○ ○ ○ isLast() ○ ○ ○ last() ○ ○ ○ moveToCurrentRow() ○ ○ × moveToInsertRow() × × × next() ○ ○ ○ - 274 - インタフェース 名 fjsymjdbc fjsymjdbc fjsymjdbc2. 4.jar 3.jar jar メソッド名 previous() ○ ○ ○ refreshRow() ○ ○ × relative(int rows) ○ ○ ○ rowDeleted() ○ ○ × rowInserted() ○ ○ × rowUpdated() ○ ○ × setFetchDirection(int direction) ○ ○ ○ setFetchSize(int rows) ○ ○ × updateArray(int columnIndex, Array x) ○ ○ × updateArray(String columnLabel, Array x) ○ ○ × updateAsciiStream(String columnLabel, InputStream x) × × × updateAsciiStream(String columnLabel, InputStream x, int length) ○ ○ × updateAsciiStream(String columnLabel, InputStream x, long length) × × × updateAsciiStream(int columnIndex, InputStream x) × × × updateAsciiStream(int columnIndex, InputStream x, int length) ○ ○ × updateAsciiStream(int columnIndex, InputStream x, long length) × × × updateBigDecimal(String columnLabel, BigDecimal x) ○ ○ × updateBigDecimal(int columnIndex, BigDecimal x) ○ ○ × updateBinaryStream(String columnLabel, InputStream x) × × × updateBinaryStream(String columnLabel, InputStream x, long length) × × × updateBinaryStream(String columnLabel, InputStream x, int length) ○ ○ × updateBinaryStream(int columnIndex, InputStream x) × × × updateBinaryStream(int columnIndex, InputStream x, long length) × × × updateBinaryStream(int columnIndex, InputStream x, int length) ○ ○ × updateBlob(String columnLabel, Blob x) ○ ○ × updateBlob(String columnLabel, InputStream inputStream) × × × updateBlob(String columnLabel, InputStream inputStream, long length) × × × updateBlob(int columnIndex, Blob x) ○ ○ × updateBlob(int columnIndex, InputStream inputStream) × × × updateBlob(int columnIndex, InputStream inputStream, long length) × × × updateBoolean(String columnLabel, Boolean x) ○ ○ × updateBoolean(int columnIndex, Boolean x) ○ ○ × updateByte(String columnLabel, byte x) ○ ○ × updateByte(int columnIndex, byte x) ○ ○ × updateBytes(String columnLabel, byte[] x) ○ ○ × updateBytes(int columnIndex, byte[] x) ○ ○ × updateCharacterStream(String columnLabel, Reader reader) ○ × × - 275 - インタフェース 名 fjsymjdbc fjsymjdbc fjsymjdbc2. 4.jar 3.jar jar メソッド名 updateCharacterStream(String columnLabel, Reader reader, long length) ○ × × updateCharacterStream(String columnLabel, Reader reader, int length) ○ ○ × updateCharacterStream(int columnIndex, Reader x) ○ × × updateCharacterStream(int columnIndex, Reader x, long length) ○ × × updateCharacterStream(int columnIndex, Reader x, int length) ○ ○ × updateClob(String columnLabel, Clob x) ○ ○ × updateClob(String columnLabel, Reader reader) × × × updateClob(String columnLabel, Reader~reader, long~length) × × × updateClob(int columnIndex, Clob x) ○ ○ × updateClob(int columnIndex, Reader reader) × × × updateClob(int columnIndex, Reader~reader, long~length) × × × updateDate(String columnLabel, Date x) ○ ○ × updateDate(int columnIndex, Date x) ○ ○ × updateDouble(String columnLabel, double x) ○ ○ × updateDouble(int columnIndex, double x) ○ ○ × updateFloat(String columnLabel, float x) ○ ○ × updateFloat(int columnIndex, float x) ○ ○ × updateInt(String columnLabel, int x) ○ ○ × updateInt(int columnIndex, int x) ○ ○ × updateLong(String columnLabel, long x) ○ ○ × updateLong(int columnIndex, long x) ○ ○ × updateNCharacterStream(String columnLabel, Reader reader) × × × updateNCharacterStream(String columnLabel, Reader reader, long length) × × × updateNCharacterStream(int columnIndex, Reader x) × × × updateNCharacterStream(int columnIndex, Reader x, long length) × × × updateNClob(String columnLabel, NClob nClob) × × × updateNClob(String columnLabel, Reader reader) × × × updateNClob(String columnLabel, Reader reader, long length) × × × updateNClob(int columnIndex, NClob nClob) × × × updateNClob(int columnIndex, Reader reader) × × × updateNClob(int columnIndex, Reader reader, long length) × × × updateNString(String columnLabel, String nString) × × × updateNString(int columnIndex, String nString) × × × updateNull(String columnLabel) ○ ○ × updateNull(int columnIndex) ○ ○ × updateObject(String columnLabel, Object x) ○ ○ × updateObject(String columnLabel, Object x, int scaleOrLength) ○ ○ × - 276 - インタフェース 名 ResultSetMe taData fjsymjdbc fjsymjdbc fjsymjdbc2. 4.jar 3.jar jar メソッド名 updateObject(int columnIndex, Object x) ○ ○ × updateObject(int columnIndex, Object x, int scaleOrLength) ○ ○ × updateRef(String columnLabel, Ref x) ○ ○ × updateRef(int columnIndex, Ref x) ○ ○ × updateRow() ○ ○ × updateRowId(String columnLabel, RowId x) × × × updateRowId(int columnIndex, RowId x) × × × updateSQLXML(String columnLabel, SQLXML xmlObject) × × × updateSQLXML(int columnIndex, SQLXML xmlObject) × × × updateShort(String columnLabel, short x) ○ ○ × updateShort(int columnIndex, short x) ○ ○ × updateString(String columnLabel, String x) ○ ○ × updateString(int columnIndex, String x) ○ ○ × updateTime(String columnLabel, Time x) ○ ○ × updateTime(int columnIndex, Time x) ○ ○ × updateTimestamp(String columnLabel, Timestamp x) ○ ○ × updateTimestamp(int columnIndex, Timestamp x) ○ ○ × wasNull() ○ ○ ○ getCatalogName(int column) ○ ○ ○ getColumnClassName(int column) ○ ○ × getColumnCount() ○ ○ ○ getColumnDisplaySize(int column) ○ ○ ○ getColumnLabel(int column) ○ ○ ○ getColumnName(int column) ○ ○ ○ getColumnType(int column) ○ ○ ○ getColumnTypeName(int column) ○ ○ ○ getPrecision(int column) ○ ○ ○ getScale(int column) ○ ○ ○ getSchemaName(int column) ○ ○ ○ getTableName(int column) ○ ○ ○ isAutoIncrement(int column) ○ ○ ○ isCaseSensitive(int column) ○ ○ ○ isCurrency(int column) ○ ○ ○ isDefinitelyWritable(int column) ○ ○ ○ isNullable(int column) ○ ○ ○ isReadOnly(int column) ○ ○ ○ isSearchable(int column) ○ ○ ○ isSigned(int column) ○ ○ ○ isWritable(int column) ○ ○ ○ - 277 - インタフェース 名 RowId Statement fjsymjdbc fjsymjdbc fjsymjdbc2. 4.jar 3.jar jar メソッド名 equals(Object obj) ○ × × getBytes() ○ × × hashCode() ○ × × toString() ○ × × addBatch(String sql) ○ ○ × cancel() ○ ○ × clearBatch() ○ ○ × clearWarnings() ○ ○ ○ close() ○ ○ ○ execute(String sql) ○ ○ ○ execute(String sql, String[] columnNames) × × × execute(String sql, int autoGeneratedKeys) × × × execute(String sql, int[] columnIndexes) × × × executeBatch() ○ ○ × executeQuery(String sql) ○ ○ ○ executeUpdate(String sql) ○ ○ ○ executeUpdate(String sql, String[] columnNames) × × × executeUpdate(String sql, int autoGeneratedKeys) × × × executeUpdate(String sql, int[] columnIndexes) × × × getConnection() ○ ○ ○ getFetchDirection() ○ ○ ○ getFetchSize() ○ ○ × getGeneratedKeys() × × × getMaxFieldSize() ○ ○ ○ getMaxRows() ○ ○ ○ getMoreResults() ○ ○ ○ getMoreResults(int current) ○ ○ × getQueryTimeout() ○ ○ × getResultSet() ○ ○ ○ getResultSetConcurrency() ○ ○ ○ getResultSetHoldability() ○ ○ × getResultSetType() ○ ○ ○ getUpdateCount() ○ ○ ○ getWarnings() ○ ○ ○ isClosed() ○ × × isPoolable() ○ × × setCursorName(String name) ○ ○ ○ setEscapeProcessing(boolean enable) ○ ○ × setFetchDirection(int direction) ○ ○ ○ - 278 - インタフェース 名 fjsymjdbc fjsymjdbc fjsymjdbc2. 4.jar 3.jar jar メソッド名 setFetchSize(int rows) ○ ○ × setMaxFieldSize(int max) ○ ○ ○ setMaxRows(int max) ○ ○ ○ setPoolable(boolean poolable) ○ × × setQueryTimeout(int seconds) ○ ○ × ○:サポート ×:未サポート - 279 - 索 引 [] &を付けて、バックグラウンドで起動した場合.........................91 CLI_TEMPORARY_TABLE_SIZE......................................119 CLI_TID_SORT.....................................................................120 CLI_TID_UNION..................................................................120 CLI_TRAN_SPEC.................................................................120 CLI_TRAN_TIME_LIMIT....................................................121 CLI_USQL_LOCK................................................................121 CLI_WAIT_TIME..................................................................121 CLI_WORK_ALLOC_SPACESIZE.....................................122 CLI_WORK_MEM_SIZE......................................................122 CLI_WORK_PATH...............................................................122 COMMIT文..............................................................................84 Connection Manager連携.......................................................170 ctuneparam.......................................................................126,185 ctuneparamオプションについて.............................................101 [数字] 2階層モデル..............................................................................3 3階層モデル..............................................................................2 4階層モデル..............................................................................2 [記号] [OK]ボタン........................................................................99,101 [オプション]ボタン....................................................................99 [キャンセル]ボタン............................................................99,101 [A] autoclosestatement...........................................................126,185 [D] <db_env>................................................................................184 <db_sys>.................................................................................184 default_isolation.....................................................................127 default_isolationオプション......................................................21 default_readonly.....................................................................127 default_readonlyオプション......................................................21 DriverManagerクラスからの接続............................................184 [B] BLOB型の列に対する操作を行う.........................................163 BLOB型の列に対する操作を行うプログラム例....................164 BLOBデータの更新.................................................................64 BLOBデータの参照.................................................................61 [C] CallableStatementインタフェース...........................................192 CLASSPATHの設定...............................................139,141,143 CLI_ACCESS_PLAN............................................................104 CLI_ARC_FULL....................................................................105 CLI_BUFFER_SIZE..............................................................105 CLI_CAL_ERROR................................................................106 CLI_CHARACTER_TRANSLATE......................................106 CLI_DEFAULT_INDEX_SIZE.............................................106 CLI_DEFAULT_OBJECT_TABLE_SIZE............................107 CLI_DEFAULT_TABLE_SIZE............................................108 CLI_DSI_EXPAND_POINT.................................................108 CLI_DSO_LOCK...................................................................109 CLI_IGNORE_INDEX..........................................................110 CLI_ISOLATION_WAIT......................................................110 CLI_JOIN_ORDER................................................................111 CLI_JOIN_RULE...................................................................111 CLI_INCLUSION_DSI..........................................................110 CLI_MAX_PARALLEL........................................................111 CLI_MAX_SQL.....................................................................112 CLI_OPL_BUFFER_SIZE.....................................................112 CLI_PARALLEL_SCAN.......................................................112 CLI_RCV_MODE..................................................................113 CLI_RESULT_BUFFER........................................................114 CLI_R_LOCK........................................................................113 CLI_ROUTINE_SNAP..........................................................113 CLI_SCAN_KEY_ARITH.....................................................114 CLI_SCAN_KEY_CAST.......................................................115 CLI_SERVER_ENV_FILE....................................................115 CLI_SORT_HASHAREA_SIZE...........................................115 CLI_SORT_MEM_SIZE........................................................116 CLI_SQL_LEVEL..................................................................116 CLI_SQL_TRACE.................................................................118 CLI_SS_RATE.......................................................................118 CLI_TEMPORARY_INDEX_SIZE......................................119 [E] Exceptionの場合....................................................................146 [G] getConnectionメソッドのオプション.........................................185 [H] <host>.....................................................................................184 [I] Interstage Application Serverでのコネクションプーリング.......10 Interstage Application Serverを使用したアプリケーション..... 171 Interstage Application Serverを使用する場合の環境設定..... 131 Interstage Studioを利用したコンパイル...................................85 Interstage Studioを利用したコーディング................................52 [J] J2EEの機能................................................................................5 javaconverter...................................................................128,185 javacコマンドによるコンパイル.................................................85 Javaアプリケーションの環境設定...........................................138 Javaアプリケ-ションの実行方法.............................................145 Java言語のサンプルプログラム.............................................153 Javaコマンドを使用したネーミングサービスの起動................90 JDBC規約との対応....................................................................6 JDBCスナップによる対処......................................................147 JDBCスナップの採取方法.....................................................147 JDBCスナップの分析方法.....................................................150 JDBCデータソース定義ファイルとは.....................................124 JDBCデータソース登録ツール................................................95 JDBCデータソース登録ツールの起動....................................94 - 280 - JDBCデータソース登録ツールの設定..................................154 JDBCデータソースの取得.......................................................53 JDBCデータソースの情報.....................................................155 JDBCのドライバタイプ................................................................1 JDBCドライバでのコネクションプーリング...............................11 JDBCドライバの概要..................................................................1 JDBCドライバの指定..............................................................187 JDBCドライバの動作................................................................11 JDBCドライバの利用形態..........................................................1 JDK.............................................................................................6 JDKとの組合せ..........................................................................6 JNDI環境の指定......................................................................53 SQLSTATEエラーメッセージ(08003~0A000)...................196 SQLSTATEエラーメッセージ(22000~2A000)...................198 SQLSTATEエラーメッセージ(34000~42000)....................200 SQLSTATEエラーメッセージ(HZ080~HZxxx(xxxは3けたの 数字)).....................................................................................202 SQLSTATEエラーメッセージ(S1000~S1093)....................203 SQLSTATE値の取得..............................................................80 SQL文の実行.............................................39,41,42,57,61,65,74 SQL文の指定...........................................................................42 SQL文の準備.................................................................59,61,65 SQL文を実行するためのオブジェクトの生成..... 39,41,55,57,63,66,72,74,78 SQL文を実行するためのオブジェクトの生成、ResultSetの更新 可能の指定..............................................................................76 statementcache.................................................................130,185 Statementインタフェース.........................................................194 Symfoware ServerのBLOB型..................................................37 Symfoware ServerのCHAR型およびVARCHAR型...............35 Symfoware ServerのDATE型..................................................31 Symfoware ServerのDOUBLE型............................................29 Symfoware ServerのFLOAT型................................................30 Symfoware ServerのINTEGER型...........................................26 Symfoware ServerのNCHAR型およびNCHAR VARYING型... 37 Symfoware ServerのNUMERIC型およびDECIMAL型.........27 Symfoware ServerのREAL型..................................................28 Symfoware ServerのSMALLINT型........................................25 Symfoware ServerのTIMESTAMP型.....................................33 Symfoware ServerのTIME型...................................................32 Symfoware Serverの機能...........................................................5 Symfoware Serverのデータ型.................................................25 Symfoware ServerのROW_ID型.............................................38 symjddefdsコマンドによるJDBCデータソースの登録...........124 symjdコマンド使用時の設定.................................................142 symjdメッセージ.....................................................................246 symjdメッセージ(異常系メッセージ)....................................248 symjdメッセージ(インフォメーションメッセージ)...................247 [L] lang.........................................................................................128 LD_LIBRARY_PATHの設定........................................140,141 Linuxでのデータソース登録ツールの起動について.............94 lowercasename........................................................................128 [M] maxconnections......................................................................129 maxpooledconnections...........................................................129 [N] NULLの扱いについて.............................................................42 [O] <options>................................................................................184 [P] password..........................................................................129,185 PATHの設定.......................................135,139,140,141,143,144 <port_no>...............................................................................184 PreparedStatementインタフェース..........................................192 [R] ResultSetオブジェクトからのデータ取得........56,59,63,66,72,74 ResultSetオブジェクトの生成.....................55,59,63,66,72,74,76 ResultSetの機能について........................................................43 ResultSetの更新.......................................................................76 ResultSetの更新機能を利用してデータを更新する.............177 ResultSetの同時複数操作.......................................................44 ResultSetの保持機能の設定...................................................72 ResultSetの保持機能を利用したResultSetの操作を行う......174 ResultSetの保持機能を利用したデータの参照......................70 ResultSetを使用した場合の注意事項.....................................20 ResultSetを複数同時に利用してデータ参照する.................175 [U] UNICODEの特徴....................................................................14 Unicode文字のストリーム機能を利用してデータの更新を行う.... 181 URL記述形式........................................................................184 user...................................................................................130,185 [V] Vendorエラーメッセージ........................................................204 Vendorエラーメッセージ(0~9)............................................205 Vendorエラーメッセージ(1000~1009)................................213 Vendorエラーメッセージ(100~117)....................................209 Vendorエラーメッセージ(1010~1019)................................215 Vendorエラーメッセージ(1020~1039)................................218 Vendorエラーメッセージ(1040~1049)................................220 Vendorエラーメッセージ(1050~1096)................................223 Vendorエラーメッセージ(1100~1199...................................234 Vendorエラーメッセージ(12~99)........................................206 Vendorエラーメッセージ(2000~4007)................................239 Vendorエラーメッセージ(7001~7007)................................242 [S] schema.............................................................................129,185 Solaris(TM)でのデータソース登録ツールの起動について..... 94 SolarisマシンまたはLinuxマシンでMSベンダー文字を流通する 場合..........................................................................................13 SQLExceptionの場合.............................................................146 sqlrtenv............................................................................123,130 SQLSTATE..............................................................................83 SQLSTATEエラーメッセージ................................................196 SQLSTATEエラーメッセージ(08001)..................................196 - 281 - コネクションの接続手段.............................................................9 コネクションの切断................................................................9,12 コネクションのプール(保持)と再利用......................................12 コネクションプーリング..............................................................10 コマンドプロンプトやコンソールから直接入力して起動させた場合 ..................................................................................................91 コーディング方法.....................................................................52 コード変換のベンダ依存性.....................................................15 Vendorエラーメッセージ(8000~8009)................................244 Vendorエラーメッセージのエラーコードの取得......................80 [W] Windows(R)サービス機能を利用したネーミングサービスの起動 ..................................................................................................86 [あ] アクセスモード..........................................................................20 アプリケーション開発作業の流れ..............................................7 アプリケーション開発の概要......................................................1 アプリケーション実行環境のロケールがCの場合...................14 アプリケーションのコンパイル..................................................85 アプリケーションのコンパイルおよび実行...............................85 アプリケーションの作成............................................................52 アプリケーションの実行..........................................................131 アプリケーションの設計..............................................................9 アプリケーションのチューニング............................................152 アプリケーションのデバッグ...................................................145 異常時の対処........................................................................190 エディタによるコーディング......................................................52 エラー情報の取得....................................................................79 エラーメッセージが通知された場合........................................80 エラーメッセージによる対処..................................................146 エラーメッセージの出力場所.................................................146 エラーメッセージの取得...........................................................80 エラーメッセージの取得方法.................................................146 エラーメッセージの対処方法.................................................146 オブジェクトのcloseメソッド.......................................................45 オブジェクトのクローズ...........56,57,59,61,63,65,66,72,74,76,78 オプションの設定...................................................................125 [さ] 最大コネクション数.................................................................100 最大プールコネクション数.....................................................100 [削除]ボタン.............................................................................96 サポートAPI一覧....................................................................261 サポートプラットフォーム............................................................4 サンプルアプリケーション......................................................188 サンプル実行前の準備.........................................................153 実行方法................................................................................145 自動コミットが有効になっている場合の注意事項..................20 自動コミット機能.......................................................................18 自動コミットモードの無効化.........................................54,78,187 使用可能SQL文一覧.............................................................192 省資源・高性能アプリケーション作成のために......................45 初期データの追加.................................................................154 初期データの追加例.............................................................154 スクロールカーソルの実行.......................................................65 スクロールカーソルを使用したプログラム例.........................160 スクロールカーソルを使用する..............................................160 ステートメントキャッシュ............................................................46 ステートメントキャッシュ数......................................................100 ステートメント自動クローズ.....................................................101 ストアドプロシジャとは..............................................................42 ストアドプロシジャの実行について..........................................41 ストアドプロシジャの登録.........................................................42 ストアドプロシジャを使用したプログラム例............................162 ストアドプロシジャを使用する................................................162 ストリームオブジェクトのクローズ.............................................63 ストリームからのデータ読込み(1バイト)...................................63 ストリームからのデータ読込み(byte配列)...............................63 接続形態....................................................................................4 接続先情報の設定................................................................124 接続先データベースの指定..................................................187 占有モード指定........................................................................22 操作方法..................................................................................96 その他パラメタ........................................................................101 [か] 拡張漢字および拡張非漢字を流通する場合........................13 拡張機能....................................................................................5 [環境設定]ボタン.....................................................................96 環境変数CLASSPATHの設定...............................132,135,137 環境変数LD_LIBRARY_PATHの設定........................135,137 環境変数PATHの設定..........................................................133 カーソルの位置づけ.............................40,55,59,63,66,72,74,76 カーソルの現在行の取得........................................................66 起動方法.............................................................................90,94 行識別子(SQL ROWID)データの取得..................................67 行識別子(SQL ROWID)データを利用したデータ操作.........68 行識別子(SQL ROWID)データを利用してデータを操作する. . . 172 行識別子(SQL ROWID)を利用したデータ操作....................48 クライアント用の動作環境ファイル........................................123 クライアント用の動作環境ファイルの指定について.............123 クラスパスの設定......................................................131,134,136 現在のResultSetをクローズさせず、次の結果に移動.............74 [構成]ボタン.............................................................................96 国際化に対応したアプリケーションについて..........................50 コネクション.................................................................................9 コネクション接続.......................................................................11 コネクションとは..........................................................................9 コネクションの接続.....................................................................9 コネクションの接続形態...........................................................10 [た] 対処方法..................................................................................16 タイムゾーン機能を利用してデータの更新を行う.................180 チューニング方法...................................................................152 [追加]ボタン.............................................................................95 デッドロックについて................................................................50 デフォルトスキーマ名.............................................................100 データ型...................................................................................22 データ型の概要.......................................................................22 データ検索について................................................................39 データ更新...............................................................................56 データ更新について................................................................40 - 282 - データ参照...............................................................................54 データ資源名...........................................................................98 データ操作...............................................................................39 データソース一覧.....................................................................95 データソース一覧画面.............................................................95 データソース登録ツールの起動について..............................94 データソースとプロセスの関係................................................12 データソースのオプション情報設定画面................................99 データソースの情報設定画面.................................................97 データソースの説明.................................................................99 データベース定義文..............................................................153 データベースとの接続......................................................54,187 データベースとの接続/切断..................................................186 データベースとの接続の切断..........................................54,187 データベースの作成..............................................................153 データベースへの接続形態......................................................4 データベースへの接続/切断...................................................52 データを更新する..................................................................156 データを更新するプログラム例.............................................156 データを参照する..................................................................155 データを参照するプログラム例.............................................155 独立性水準..............................................................................21 独立性水準を設定する..........................................................168 独立性水準を設定するプログラム例.....................................169 [閉じる]ボタン...........................................................................96 トランザクション.........................................................................17 トランザクションのアクセスモード.............................................20 トランザクションの概要.............................................................18 トランザクションのコミット..... 54,56,57,59,61,64,65,67,72,74,76,78 トランザクションの有効範囲.....................................................18 トランザクションのロールバック...........................................80,81 トランザクションを手動で制御する.........................................166 トランザクションを手動で制御するプログラム例....................166 トランザクションを手動で制御する方法...................................18 複数ResultSetの同時データ参照............................................72 プログラミングの概要.................................................................9 プロシジャ定義文...................................................................154 プロシジャに対するGRANT文..............................................154 プロシジャルーチン内での処理結果の確認..........................82 プロシジャルーチンの実行......................................................82 プロシジャルーチンの処理結果..............................................82 プロシジャルーチンの呼出し元での処理結果の確認...........83 プロシジャルーチン利用時のトランザクション.........................84 プロシジャルーチンを利用するアプリケーションの作成の流れ... 82 プロトコル..................................................................................98 [ヘルプ]ボタン..........................................................................96 ホスト名.....................................................................................98 ポート番号................................................................................98 [ま] メッセージに使用する言語....................................................101 メッセージリファレンス............................................................196 文字コード系に関する留意事項.............................................14 文字コード系の決定................................................................13 文字コード系の考慮................................................................12 文字化けが起きる仕組み........................................................16 [や] ユーザー名...............................................................................98 [ら] ライブラリパスの設定.......................................................134,136 利用可能な機能.........................................................................5 利用形態....................................................................................1 ルーチンを利用するアプリケーションの作成..........................82 [な] ネーミングサービスとJDBCデータソース登録ツール.............85 ネーミングサービスとは............................................................86 ネーミングサービスの起動.......................................................86 ネーミングサービスの起動について........................................91 ネーミングサービスの停止について........................................91 [は] パスの設定.............................................................................131 パスワード.................................................................................98 バッチ更新機能について........................................................50 バッチ更新機能を利用してデータを更新する......................178 バッチ更新の実行....................................................................76 バッチ更新の準備....................................................................78 パラメタ指定でのデータ更新...................................................60 パラメタ指定でのデータ参照...................................................57 パラメタへの値の設定....................................................59,61,65 パラメタを指定してデータを参照する...................................158 パラメタを指定してデータを参照するプログラム例...............158 パラメタを指定してデータを追加する...................................159 パラメタを指定してデータを追加するプログラム例...............159 標準機能....................................................................................5 - 283 -