Hitachi Advanced Data Binder AP 開発ガイド 解説・手引・文法書 3000-6-502-60

Hitachi Advanced Data Binder AP 開発ガイド
解説・手引・文法書
3000-6-502-60
前書き
■ 対象製品
P-9W62-C211 Hitachi Advanced Data Binder 03-01 (適用 OS:Red Hat Enterprise Linux Server
6(64-bit x86_64))
P-9W62-C311 Hitachi Advanced Data Binder Client 03-01 (適用 OS:Red Hat Enterprise Linux
Server 6(64-bit x86_64))
P-2462-C114 Hitachi Advanced Data Binder Client 03-01 (適用 OS:Windows 7,Windows
8,Windows Server 2008 R2,Windows Server 2012)
■ 輸出時の注意
本製品を輸出される場合には、外国為替及び外国貿易法の規制並びに米国輸出管理規則など外国の輸出関
連法規をご確認の上、必要な手続きをお取りください。
なお、不明な場合は、弊社担当営業にお問い合わせください。
■ 商標類
HITACHI,HA モニタ,JP1 は,(株)日立製作所の商標または登録商標です。
AMD は,Advanced Micro Devices, Inc.の商標です。
Intel は,アメリカ合衆国およびその他の国における Intel Corporation の商標です。
Linux は,Linus Torvalds 氏の日本およびその他の国における登録商標または商標です。
Microsoft および Excel は,米国 Microsoft Corporation の米国およびその他の国における登録商標ま
たは商標です。
Microsoft および Visual Studio は,米国 Microsoft Corporation の米国およびその他の国における登録
商標または商標です。
Microsoft Access は,米国 Microsoft Corporation の米国およびその他の国における登録商標または商
標です。
MSDN は,米国 Microsoft Corporation の米国およびその他の国における登録商標または商標です。
ODBC は,米国 Microsoft Corporation が提唱するデータベースアクセス機構です。
Oracle と Java は,Oracle Corporation 及びその子会社,関連会社の米国及びその他の国における登録
商標です。
Red Hat は,米国およびその他の国で Red Hat, Inc.の登録商標もしくは商標です。
UNIX は,The Open Group の米国ならびに他の国における登録商標です。
Windows は,米国 Microsoft Corporation の米国およびその他の国における登録商標または商標です。
Windows Server は,米国 Microsoft Corporation の米国およびその他の国における登録商標または商
標です。
Hitachi Advanced Data Binder AP 開発ガイド
2
その他記載の会社名,製品名は,それぞれの会社の商標もしくは登録商標です。
1. This product includes software developed by the OpenSSL Project for use in the OpenSSL
Toolkit. (http://www.openssl.org/)
2. This product includes cryptographic software written by Eric Young (eay@cryptsoft.com).
3. This product includes software written by Tim Hudson (tjh@cryptsoft.com).
4. 本製品には OpenSSL Toolkit ソフトウェアを OpenSSL License および Original SSLeay License
に従い使用しています。OpenSSL License および Original SSLeay License は以下の通りです。
LICENSE ISSUES
==============
The OpenSSL toolkit stays under a dual license, i.e. both the conditions of
the OpenSSL License and the original SSLeay license apply to the toolkit.
See below for the actual license texts. Actually both licenses are BSD-style
Open Source licenses. In case of any license issues related to OpenSSL
please contact openssl-core@openssl.org.
OpenSSL License
--------------/* =========================================================
* Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
Hitachi Advanced Data Binder AP 開発ガイド
3
*
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For written permission, please contact
* openssl-core@openssl.org.
*
* 5. Products derived from this software may not be called "OpenSSL"
* nor may "OpenSSL" appear in their names without prior written
* permission of the OpenSSL Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
*
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
* ==========================================================
*
* This product includes cryptographic software written by Eric Young
* (eay@cryptsoft.com). This product includes software written by Tim
* Hudson (tjh@cryptsoft.com).
*
*/
Original SSLeay License
Hitachi Advanced Data Binder AP 開発ガイド
4
----------------------/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
Hitachi Advanced Data Binder AP 開発ガイド
5
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
■ マイクロソフト製品のスクリーンショットの使用について
マイクロソフトの許可を得て使用しています。
■ マイクロソフト製品の表記について
このマニュアルでは,マイクロソフト製品の名称を次のように表記しています。
表記
Windows
製品名
Windows 7
Windows 7 x86
Hitachi Advanced Data Binder AP 開発ガイド
Microsoft(R) Windows(R) 7 Professional 日本語版(32
ビット版)
6
表記
製品名
Microsoft(R) Windows(R) 7 Enterprise 日本語版(32 ビッ
ト版)
Microsoft(R) Windows(R) 7 Ultimate 日本語版(32 ビット
版)
Windows 7 x64
Microsoft(R) Windows(R) 7 Professional 日本語版(64
ビット版)
Microsoft(R) Windows(R) 7 Enterprise 日本語版(64 ビッ
ト版)
Microsoft(R) Windows(R) 7 Ultimate 日本語版(64 ビット
版)
Windows 8
Windows 8 x86
Windows(R) 8 Pro 日本語版(32 ビット版)
Windows(R) 8 Enterprise 日本語版(32 ビット版)
Windows 8 x64
Windows(R) 8 Pro 日本語版(64 ビット版)
Windows(R) 8 Enterprise 日本語版(64 ビット版)
Windows Server 2008 R2
Microsoft(R) Windows Server(R) 2008 R2 Standard 日本
語版
Microsoft(R) Windows Server(R) 2008 R2 Enterprise 日
本語版
Microsoft(R) Windows Server(R) 2008 R2 Datacenter 日
本語版
Windows Server 2012
Microsoft(R) Windows Server(R) 2012 Standard 日本
語版
Microsoft(R) Windows Server(R) 2012 Datacenter 日本
語版
■ 発行
2015 年 10 月 3000-6-502-60
■ 著作権
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.
Hitachi Advanced Data Binder AP 開発ガイド
7
変更内容
変更内容(3000-6-502-60) Hitachi Advanced Data Binder 03-01
追加・変更内容
変更個所
ODBC インタフェース使用時のトラブルシュート情報に,HADB ODBC ドライバトレー
ス情報を出力するようにしました。
2.2.1(1),2.3.1,11.2.1,
13.,付録 B.1(2)
HADB クライアントのインストール方法とバージョンアップ方法に,次に示す説明を追加
しました。
2.2.2(1),2.6.3(2)
• インストールデータを格納するディレクトリの作成
• インストールデータを格納するディレクトリへの書き込み権限の付与
環境変数 TZ に,うるう秒対応のタイムゾーンに関する説明を追加しました。
2.3.1,2.3.2
環境変数 ADBODBAPMODE を追加しました。この環境変数の指定によって,HADB
ODBC ドライバを Microsoft Access 互換モードで動作させることができます。
2.3.1,11.3.1,11.3.2,
12.17
adbsql コマンドの検索結果にナル値がある場合,ナル値を表示する文字列を指定できるよ
うにしました。
2.3.2
複数の HADB クライアントを 1 つのグループにまとめて管理するクライアントグループ機
能をサポートしました。グループごとに,HADB サーバへの接続数や処理リアルスレッド
数を設定することができます。
2.4.2(1),2.4.2(2)(a),
2.4.2(2)(c),5.3.1(2)(a),
5.3.1(2)(d),5.3.3,5.3.4,
6.1.6(4)
コールドスタンバイ構成での運用に関する説明を追加しました。
2.4.2(2)(a),5.3.1(2)(a)
SQL 文の実行履歴情報(SQL トレース情報)を取得する SQL トレース機能をサポートしま
した。
2.4.2(2)(b),4.1.2,4.1.2(2),
4.1.6,14.1.5(1)
HADB クライアントをバージョンダウンする方法について,説明を追加しました。
2.7
表に格納されているデータ(文字列)の出現情報を管理するテキストインデクスをサポート
しました。検索時にテキストインデクスを使用すると,任意の文字列を含む文字データを検
索する場合に,読み込むページ数を少なくすることができます。その分,表の検索性能を向
上できます。
3.1,3.2,3.2.1,3.2.2(3),
3.2.3(6),3.2.4,3.2.5,
3.3.1,3.3.1(2),3.5.3,
3.6.1(1),3.6.1(2),3.6.1(3),
3.6.2,3.6.4,3.9,3.10,
4.1.5(1)(b),4.1.7,
12.10.8(4)
表の結合方式(ネストループジョイン,ハッシュジョイン)の説明を変更しました。
3.2,3.3.1,3.5.1,3.5.2
LIKE 述語にエスケープ文字を指定できるようにしました。
3.2.1(1),3.3.1(2),3.3.2(8),
3.3.2(9),3.9.4,6.2.19(6),
6.6.131(4),12.8.3(6)
結合表の結合方式を指定できるようにしました。
3.5,3.5.1,3.5.2
副問合せの処理方式がネストループ行値実行の場合の留意事項を追加しました。
3.6.3
Hitachi Advanced Data Binder AP 開発ガイド
8
追加・変更内容
変更個所
作業表を作成する SQL 文の説明を変更しました。
3.8.2
GZIP 形式で圧縮した CSV ファイル中のデータを,SELECT 文で検索できるようにしまし
た。それに伴い,システム定義関数 ADB_CSVREAD を追加しました。
3.8.2,3.8.3(16)
導出問合せを指定した SQL 文の WHERE 句に指定された探索条件を,導出問合せの WHERE
句に移動する等価変換を行うようにしました。
3.9,3.9.5
アクセスパス情報に次の情報を出力するようにしました。
4.1.1(1),4.1.2(1),4.1.3,
4.1.4(7),4.1.4(8),4.1.4(9),
4.1.4(18),4.1.4(22),4.1.5,
4.1.5(3),4.1.6,4.1.7
• 副問合せのキャッシュ使用情報(USING CACHE)
• 表関数導出表の指定(TABLE FUNCTION DERIVED TABLE)
• 重複排除の処理方式(GLOBAL HASH UNIQUE)
• コスト情報の収集(USING COST)
• 結合方式指定(SPECIFIC,SPECIFIC DISABLED)
• 集合演算に関する情報
• 特定情報表示
アクセスパス情報の出力対象となる SQL 文に,次の SQL 文を追加しました。
4.1.1(2),4.1.4(1),4.1.7
• PURGE CHUNK 文
• INSERT 文(VALUES を指定していて,かつ副問合せを指定している場合)
ORDER BY 句を指定したときの留意事項を追加しました。
4.1.4(19)
パターン文字列中に,\(エスケープ文字)を指定できるようにしました。
6.6.1(4),6.6.16(3),
6.6.18(3),6.6.28(3),
6.6.33(3),6.6.34(3),
6.6.58(3),6.6.65(3),
6.6.67(1),6.6.67(4),
6.6.74(3),6.6.75(3),
12.10.2(3),12.10.9(3),
12.10.10(3),12.13
CREATE TABLE 文の DEFAULT 句で指定する列の既定値に,次の指定をできるようにし
ました。
6.6.16(4),12.10.2(4)
• 定数
• ユーザ情報取得関数の CURRENT_USER
• NULL
限定述語に比較演算子 <,<=,>,>= を指定できるようにしました。
6.6.165(4),12.13
バッチ更新機能を使用できる SQL 文の説明を追加しました。
7.2.1
PURGE CHUNK 文に指定する探索条件中の比較述語に,?パラメタを指定できるようにし
ました。
7.2.1,15.4.8(1)
サロゲートペアなど,文字コード変換できない文字についての留意事項を追加しました。
11.1.3(2)
データ型変換時の注意事項(HADB ODBC ドライバを使用している場合)の説明を変更し
ました。
11.3.3(1)
Hitachi Advanced Data Binder AP 開発ガイド
9
追加・変更内容
変更個所
SAMPLE 表を作成する際のユーザの認可識別子とパスワードを変更しました。
付録 A.3
単なる誤字・脱字などはお断りなく訂正しました。
Hitachi Advanced Data Binder AP 開発ガイド
10
はじめに
このマニュアルは,Hitachi Advanced Data Binder で使用する AP を開発するための基礎技術,およ
び HADB クライアントの環境設定方法について説明しています。
なお,このマニュアル中,および製品が出力する情報中(メッセージ,コマンドの出力結果など)では,
Hitachi Advanced Data Binder を HADB と表記することがあります。
■ 対象読者
このマニュアルは,次に示す方々を対象にしています。
• AP 開発者
• HADB クライアントの管理者
なお,このマニュアルは次に示す知識があることを前提に説明しています。
• SQL の基本的な知識
• Java 言語のプログラミングの基本的な知識,および JDBC の基本的な知識(Java 言語の AP を作成
する場合)
• ODBC の基本的な知識(ODBC 対応の AP を作成する場合)
• C 言語または C++言語のプログラミングの基本的な知識(C 言語または C++言語の AP を作成する
場合)
• Linux または Windows のシステム管理の基本的な知識
■ マニュアルの構成
このマニュアルは,次に示す編,章と付録から構成されています。
第 1 編 環境設定編【共通】
第 1 章 AP 開発の概要
AP 開発の流れ,AP を開発する前に知っておくべき前提条件,および AP の実行形態につい
て説明しています。
第 2 章 HADB クライアントの環境設定
HADB クライアントのインストールや環境変数の設定など,HADB クライアントの環境設定
方法について説明しています。
Hitachi Advanced Data Binder AP 開発ガイド
11
第 2 編 AP 作成編【共通】
第 3 章 AP の性能向上に関する設計
AP の性能向上に関する設計について説明しています。
第 4 章 AP のチューニング
アクセスパスの見方について説明しています。
第 3 編 AP 作成編【JDBC】
第 5 章 AP の作成
JDBC ドライバを使用した AP の作成方法について説明しています。
第 6 章 JDBC 1.2 API
JDBC 1.2 API の各インタフェースとメソッドについて説明しています。
第 7 章 JDBC 2.1 コア API
JDBC 2.1 コア API で追加された機能の HADB でのサポート範囲について説明しています。
第 8 章 JDBC 2.0 Optional Package
JDBC 2.0 Optional Package の各インタフェースとメソッドについて説明しています。
第 9 章 JDBC 3.0 API
JDBC 3.0 API の各インタフェースとメソッドについて説明しています。
第 10 章 JDBC 4.0 API
JDBC 4.0 API の各インタフェースとメソッドについて説明しています。
第 4 編 AP 作成編【ODBC】
第 11 章 AP の作成
HADB ODBC ドライバの環境設定,および ODBC 対応の AP 作成時の留意事項について説
明しています。
第 12 章 ODBC 関数
HADB が提供している ODBC 関数の機能と文法について説明しています。
第 13 章 トラブルシュート
ODBC インタフェース使用時のトラブルシュートについて説明しています。
Hitachi Advanced Data Binder AP 開発ガイド
12
第 5 編 AP 作成編【CLI 関数】
第 14 章 AP の作成
C 言語および C++言語で AP を設計,作成するときに考慮する必要がある基本事項について
説明しています。
第 15 章 CLI 関数
HADB が提供している CLI 関数の機能と文法について説明しています。
付録 A サンプル AP
サンプル AP の概要,およびサンプル AP を実行するための準備と手順について説明していま
す。
付録 B HADB クライアントのディレクトリの構成
HADB クライアントのクライアントディレクトリ(インストール時),およびクライアント
ディレクトリ(運用時)の構成について説明しています。
付録 C HADB クライアントのメモリ所要量の見積もり
HADB クライアントが使用するメモリ所要量の見積もりについて説明しています。
■ 関連マニュアル
このマニュアルの関連マニュアルを次に示します。必要に応じてお読みください。
• Hitachi Advanced Data Binder システム構築・運用ガイド(3000-6-501)
• Hitachi Advanced Data Binder コマンドリファレンス(3000-6-503)
• Hitachi Advanced Data Binder SQL リファレンス(3000-6-504)
• Hitachi Advanced Data Binder メッセージ(3000-6-505)
• 高信頼化システム監視機能 HA モニタ Linux(R)(x86)編(3000-9-140)
• JP1 Version 10 JP1/Automatic Job Management System 3 設計ガイド(業務設計編)
(3021-3-104)
なお,Hitachi Advanced Data Binder のマニュアルを本文中で参照させる場合は,Hitachi Advanced
Data Binder を HADB と表記します。
(例) 「HADB システム構築・運用ガイド」
また,HA モニタのマニュアルを本文中で参照させる場合は,高信頼化システム監視機能 HA モニタ
Linux(R)(x86)編を HA モニタ Linux(R)(x86)編と表記します。
(例)
「HA モニタ Linux(R)(x86)編」
Hitachi Advanced Data Binder AP 開発ガイド
13
JP1/AJS3 のマニュアルを本文中で参照させる場合は,JP1 Version 10 JP1/Automatic Job Management
System 3 設計ガイド(業務設計編)を JP1/AJS3 設計ガイド(業務設計編)と表記します。
(例) 「JP1/AJS3 設計ガイド(業務設計編)」
■ このマニュアルでの表記
このマニュアルでは,製品名を次のように表記しています。
表記
HADB
製品名
HADB サーバ
Hitachi Advanced Data Binder
HADB クライアント
Hitachi Advanced Data Binder Client
Linux
Linux(R)
Red Hat Enterprise Linux Server 6(64-bit x86_64)
■ 英略語
このマニュアルで使用する英略語を次に示します。
英略語
英字での表記
AP
Application Program
APD
Application Parameter Descriptor
API
Application Programming Interface
ARD
Application Row Descriptor
BI
Business Intelligence
BLOB
Binary Large Object
BNF
Backus-Naur Form
BOM
Byte Order Mark
CLI
Call Level Interface
CLOB
Character Large Object
CPU
Central Processing Unit
CSV
Character-Separated Values
DB
Database
DBMS
Database Management System
DNS
Domain Name System
Hitachi Advanced Data Binder AP 開発ガイド
14
英略語
英字での表記
ER
Entity Relationship
HBA
Host Bus Adapter
ID
Identification number
IEF
Integrity Enhancement Facility
IP
Internet Protocol
IPD
Implementation Parameter Descriptor
IRD
Implementation Row Descriptor
JAR
Java Archive File
JDBC
Java Database Connectivity
JDK
Java Developer's Kit
JNDI
Java Naming and Directory Interface
JRE
Java Runtime Environment
JTA
Java Transaction API
LOB
Large Object
LV
Logical Volume
LVM
Logical Volume Manager
MSDN
Microsoft Developer Network
NFS
Network File System
NIC
Network Interface Card
NTP
Network Time Protocol
ODBC
Open Database Connectivity
OS
Operating System
PP
Program Product
RAID
Redundant Array of Independent Disks
RDBMS
Relational Database Management System
TLB
Translation Lookaside Buffer
URL
Uniform Resource Locator
VG
Volume Group
WWN
World Wide Name
Hitachi Advanced Data Binder AP 開発ガイド
15
■ このマニュアルで使用する記号
サーバ定義などのオペランド,およびコマンドの説明で使用している記号を次に示します。
なお,これらの記号は説明のために使用している記号のため,オペランドまたはコマンド中に記述しない
でください。
記号
〔 〕
{ }
…
{{ }}
_
意味
例
この記号で囲まれている項目は省略できま
す。
adbsql 〔-V〕
この記号で囲まれている複数の項目のうち
から,1 つを選択できます。
adbcancel {--ALL |-u コネクション ID}
この記号の直前の項目を繰り返し指定でき
ます。
adbbuff -n DB エリア名〔,DB エリア名〕…
この記号で囲まれた複数の項目を 1 つの
単位として,繰り返し指定できます。
{{adbinitdbarea -n データ用 DB エリア名}}
この例の場合,adbsql と指定してもよいし,adbsql -V と指
定してもよいことを意味しています。
この例の場合,--ALL または-u コネクション ID のどちらか
を指定できることを意味しています。
この例の場合,DB エリア名を繰り返し指定できることを意
味しています。
この例の場合,「adbinitdbarea -n データ用 DB エリア名」
を繰り返し指定できることを意味しています。
この記号で示す項目は,省略時の解釈値で
す。
adb_import_errmsg_lv = {0 | 1}
この記号のあとに,指定値の属性を説明し
ています。
adb_sys_max_users = 最大同時接続数
〈 〉
指定値の種別を説明しています。
(( ))
指定値の範囲を説明しています。
この例の場合,1〜1,024 の整数が指定できます。オペランド
の指定を省略した場合は,10 が仮定されます。
《 》
省略値を説明しています。
(下線)
〜
この例の場合,オペランドの指定を省略したとき,0 が仮定
されることを意味しています。
〜〈整数〉((1〜1,024))《10》
■ このマニュアルで使用する構文要素記号
構文要素記号
〈パス名〉
意味
パス名には次に示す文字が使用できます。
• OS が Linux の場合
英字,数字,スペース(ただし,パス名の先頭または最後には指定できません),#,-,/,@,_
• OS が Windows の場合
英字,数字,スペース(ただし,パス名の先頭または最後には指定できません)
,#,-,/,@,_,\,:
ただし,OS によって使用できる文字が異なります。
〈文字列〉
任意の文字列を指定できます。
Hitachi Advanced Data Binder AP 開発ガイド
16
注 すべて半角文字を使用してください。
■ このマニュアルで使用する計算式の記号
このマニュアルで使用する計算式の記号の意味を次に示します。
記号
内容
↑ ↑
計算結果の値を小数点以下で切り上げることを意味しています。
(例)↑34÷3↑の計算結果は 12 になります。
↓ ↓
計算結果の値を小数点以下で切り捨てることを意味しています。
(例)↓34÷3↓の計算結果は 11 になります。
MAX
計算結果のうち,最も大きい値が有効になることを意味しています。
(例)MAX(3×6,4 + 7)の計算結果は 18 になります。
MIN
計算結果のうち,最も小さい値が有効になることを意味しています。
(例)MIN(3×6,4 + 7)の計算結果は 11 になります。
■ パス名の表記について
• サーバディレクトリ(インストール時)のパスは,$INSTDIR と表記します。
• サーバディレクトリ(運用時)のパスは,$ADBDIR と表記します。
• DB ディレクトリのパスは,$DBDIR と表記します。
• クライアントディレクトリのパスは,%ADBCLTDIR%(HADB クライアントが Windows 版の場
合)または$ADBCLTDIR(HADB クライアントが Linux 版の場合)と表記します。
• HADB ODBC ドライバトレースファイルの格納フォルダのパスは,%ADBODBTRCPATH%と表
記します。
■ \の表記について
本文中で使用されている\は,Linux 版の場合は半角のバックスラッシュを意味しています。
■ メソッドの略記について
• 先頭に「get」が付くメソッドをまとめて表す場合,getXXX メソッドと表記しています。
• 先頭に「set」が付くメソッドをまとめて表す場合,setXXX メソッドと表記しています。
• 先頭に「execute」が付くメソッドをまとめて表す場合,executeXXX メソッドと表記しています。
■ 関数の略記について
• 先頭に「SQL」が付く関数をまとめて表す場合,SQLxxx 関数と表記しています。
Hitachi Advanced Data Binder AP 開発ガイド
17
• 先頭に「SQL」が付き,最後に「W」が付く関数をまとめて表す場合,SQLxxxW 関数と表記してい
ます。
■ KB(キロバイト)などの単位表記について
1KB(キロバイト)
,1MB(メガバイト)
,1GB(ギガバイト)
,1TB(テラバイト)
,1PB(ペタバイト)
,
1EB(エクサバイト)はそれぞれ 1,024 バイト,1,0242 バイト,1,0243 バイト,1,0244 バイト,
1,0245 バイト,1,0246 バイトです。
Hitachi Advanced Data Binder AP 開発ガイド
18
目次
前書き
2
変更内容
8
はじめに
11
第 1 編 環境設定編【共通】
1
AP 開発の概要 40
1.1
AP 開発の流れと前提条件
1.1.1
AP の記述言語
1.1.2
文字コード
1.1.3
AP の開発環境
42
1.2
AP の実行形態
43
2
HADB クライアントの環境設定 45
2.1.1
Windows 版の HADB クライアントの場合
2.1.2
Linux 版の HADB クライアントの場合
2.2
HADB クライアントのインストールおよびアンインストール
2.2.1
Windows 版の HADB クライアントの場合
2.2.2
Linux 版の HADB クライアントの場合
2.3
環境変数の設定
2.3.1
Windows 版の HADB クライアントの場合
2.3.2
Linux 版の HADB クライアントの場合
2.4
クライアント定義の作成
2.4.1
クライアント定義の作成方法
2.4.2
クライアント定義のオペランドの説明
2.4.3
クライアント定義変更時の注意事項
2.4.4
クライアント定義の選択
2.5
AP の無応答状態への対策
2.6
HADB クライアントのバージョンアップ
2.6.1
HADB クライアントのバージョンアップ前に実施すること
2.6.2
バージョンアップ時の注意事項
2.6.3
バージョンアップ手順
2.6.4
バージョンアップ後に実施すること
2.7
HADB クライアントのバージョンダウン(旧バージョンに戻す方法)
2.1
41
41
42
HADB クライアントの環境設定手順
46
46
46
48
48
49
53
Hitachi Advanced Data Binder AP 開発ガイド
53
55
57
57
57
64
65
66
68
68
68
69
70
72
19
2.7.1
バージョンダウン前に実施すること
72
2.7.2
バージョンダウン時の注意事項
2.7.3
バージョンダウン手順
2.7.4
バージョンダウン後に実施すること
2.8
クライアントマシンの OS の時刻変更
2.8.1
注意事項(OS の時刻変更)
2.8.2
クライアントマシンの OS の時刻を進める方法
2.8.3
クライアントマシンの OS の時刻を戻す方法
72
72
74
76
76
76
77
第 2 編 AP 作成編【共通】
3
AP の性能向上に関する設計 78
3.1
表の検索方式
79
3.1.1
テーブルスキャンとは
3.1.2
インデクススキャンとは
3.1.3
キースキャンとは
3.2
検索時に使用される B-tree インデクスおよびテキストインデクス
3.2.1
検索時に使用されるインデクスの優先順位と選択規則
3.2.2
検索時に使用されるインデクスの例
3.2.3
検索時に使用されるインデクスの例(インデクスの優先順位の例)
3.2.4
インデクスが使用されないケース
3.2.5
検索時に使用されるインデクスを確認する方法
3.3
検索時に使用されるレンジインデクス
3.3.1
検索時にレンジインデクスが使用される条件
3.3.2
検索時に使用されるレンジインデクスの例
3.3.3
検索時に使用されるレンジインデクスを確認する方法
3.4
インデクスを使用した探索条件の評価方式
3.4.1
B-tree インデクスによる評価方式
109
3.4.2
レンジインデクスによる評価方式
111
3.5
表の結合方式
3.5.1
ネストループジョインとは
3.5.2
ハッシュジョインとは
3.5.3
各結合方式の特徴
3.6
副問合せの処理方式
3.6.1
外への参照列を含まない副問合せの処理方式とは
3.6.2
外への参照列を含まない副問合せの各処理方式の特徴
3.6.3
外への参照列を含む副問合せの処理方式とは
3.6.4
外への参照列を含む副問合せの各処理方式の特徴
3.7
グループ化の処理方式
79
81
82
84
84
89
91
96
98
100
100
102
108
109
114
114
115
117
Hitachi Advanced Data Binder AP 開発ガイド
118
118
122
122
125
127
20
3.7.1
ハッシュグループ化とは
127
3.7.2
ソートグループ化とは
3.7.3
各グループ化の特徴
3.8
作業表が作成される SQL を実行する際の考慮点
3.8.1
作業表の種類
3.8.2
SQL を実行した場合に作成される作業表について
3.8.3
作成される作業表の個数
3.9
探索条件の等価変換
3.9.1
IN 述語に関する等価変換
3.9.2
OR 条件に関する等価変換(OR 条件の外側への抜き出し)
3.9.3
OR 条件に関する等価変換(IN 条件への変換)
3.9.4
HAVING 句に関する等価変換(WHERE 句への変換)
3.9.5
導出問合せを指定した SQL 文の探索条件に関する等価変換(導出問合せの WHERE 句への移動)150
3.10
内部導出表の展開
3.11
検索結果の一括転送
3.12
?パラメタの値の一括転送
4
AP のチューニング 158
128
129
130
130
131
135
141
141
142
146
148
153
154
156
4.1
アクセスパスの見方(SQL 文の実行計画の見方)
4.1.1
アクセスパスとは
4.1.2
アクセスパスを確認するには
4.1.3
アクセスパスの見方の例
4.1.4
ツリー表示に出力される情報
4.1.5
詳細表示に出力される情報
4.1.6
特定情報表示(SQL 文の特定情報)に出力される情報
185
4.1.7
アクセスパスに表示される情報(アルファベット順)
186
159
159
161
163
165
178
第 3 編 AP 作成編【JDBC】
5
AP の作成 191
5.1.1
JDBC 規格への準拠範囲
5.1.2
Java Runtime Environment(JRE)および Java Development Kit(JDK)のインストール 194
5.1.3
JAR ファイルの格納先
5.2
AP の処理の基本的な流れ
5.3
HADB サーバへの接続方法
5.3.1
DriverManager クラスの getConnection メソッドで HADB サーバに接続する方法
5.3.2
DataSource クラスの getConnection メソッドで HADB サーバに接続する方法
5.3.3
システムプロパティの設定
5.3.4
接続情報の優先順位
5.1
HADB が提供している JDBC ドライバ
Hitachi Advanced Data Binder AP 開発ガイド
192
192
194
196
197
197
208
211
214
21
5.4
データを検索する場合(SELECT 文を実行する場合)
219
5.4.1
データの検索方法
5.4.2
?パラメタの使用方法
5.5
データを追加,更新,または削除する場合(INSERT 文,UPDATE 文,または DELETE 文を
実行する場合) 223
5.6
データ処理
5.6.1
データ型のマッピング
5.6.2
データの変換処理
5.6.3
オーバフローが発生したときの処理
5.6.4
文字コードの変換
236
5.7
トラブルシュート
238
5.7.1
JDBC インタフェースメソッドトレース
5.7.2
Exception トレースログ
5.8
エスケープ句で指定できるスカラ関数
6
JDBC 1.2 API 258
219
221
224
224
228
231
238
240
256
6.1
Driver インタフェース
6.1.1
Driver インタフェースのメソッド一覧
6.1.2
acceptsURL(String url)
6.1.3
connect(String url, Properties info)
6.1.4
getMajorVersion()
261
6.1.5
getMinorVersion()
262
6.1.6
getPropertyInfo(String url, Properties info)
6.1.7
jdbcCompliant()
6.1.8
エスケープ句
6.2
Connection インタフェース
6.2.1
Connection インタフェースのメソッド一覧
6.2.2
clearWarnings()
6.2.3
close()
6.2.4
commit()
6.2.5
createStatement()
6.2.6
createStatement(int resultSetType, int resultSetConcurrency)
6.2.7
createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) 273
6.2.8
getAutoCommit()
6.2.9
getCatalog()
6.2.10
getHADBOrderMode()
6.2.11
getHoldability()
6.2.12
getMetaData()
6.2.13
getTransactionIsolation()
6.2.14
getTypeMap()
259
259
260
260
262
265
266
267
267
269
269
270
271
272
274
275
275
276
277
277
278
Hitachi Advanced Data Binder AP 開発ガイド
22
6.2.15
getWarnings()
278
6.2.16
isClosed()
6.2.17
isReadOnly()
6.2.18
isValid(int timeout)
6.2.19
nativeSQL(String sql)
6.2.20
prepareStatement(String sql)
6.2.21
prepareStatement(String sql, int resultSetType, int resultSetConcurrency)
6.2.22
prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int
resultSetHoldability) 286
6.2.23
rollback()
6.2.24
setAutoCommit(boolean autoCommit)
6.2.25
setCatalog(String catalog)
6.2.26
setHADBOrderMode(int mode)
6.2.27
setHoldability(int holdability)
6.2.28
setReadOnly(boolean readOnly)
292
6.2.29
setTransactionIsolation(int level)
293
6.3
Statement インタフェース
6.3.1
Statement インタフェースのメソッド一覧
6.3.2
addBatch(String sql)
6.3.3
cancel()
6.3.4
clearBatch()
6.3.5
clearWarnings()
6.3.6
close()
6.3.7
execute(String sql)
6.3.8
executeBatch()
6.3.9
executeQuery(String sql)
6.3.10
executeUpdate(String sql)
6.3.11
getConnection()
6.3.12
getFetchDirection()
6.3.13
getFetchSize()
6.3.14
getMaxFieldSize()
6.3.15
getMaxRows()
6.3.16
getMoreResults()
6.3.17
getQueryTimeout()
6.3.18
getResultSet()
6.3.19
getResultSetConcurrency()
6.3.20
getResultSetHoldability()
6.3.21
getResultSetType()
311
6.3.22
getUpdateCount()
311
279
280
280
281
284
285
288
288
289
290
291
295
295
297
298
299
299
300
300
302
302
303
304
305
305
306
307
307
308
309
Hitachi Advanced Data Binder AP 開発ガイド
309
310
23
6.3.23
getWarnings()
312
6.3.24
isClosed()
6.3.25
isPoolable()
6.3.26
setCursorName(String name)
6.3.27
setEscapeProcessing(boolean enable)
6.3.28
setFetchDirection(int direction)
6.3.29
setFetchSize(int rows)
6.3.30
setMaxFieldSize(int max)
6.3.31
setMaxRows(int max)
6.3.32
setQueryTimeout(int seconds)
6.3.33
Statement インタフェースに関する注意事項
6.4
PreparedStatement インタフェース
6.4.1
PreparedStatement インタフェースのメソッド一覧
6.4.2
addBatch()
6.4.3
clearParameters()
6.4.4
execute()
6.4.5
executeQuery()
6.4.6
executeUpdate()
6.4.7
getMetaData()
6.4.8
getParameterMetaData()
6.4.9
setAsciiStream(int parameterIndex, InputStream x, int length)
6.4.10
setBigDecimal(int parameterIndex, BigDecimal x)
6.4.11
setBinaryStream(int parameterIndex, InputStream x, int length)
6.4.12
setBoolean(int parameterIndex, boolean x)
6.4.13
setByte(int parameterIndex, byte x)
6.4.14
setBytes(int parameterIndex, byte[] x)
6.4.15
setCharacterStream(int parameterIndex, Reader reader, int length)
6.4.16
setDate(int parameterIndex, Date x)
6.4.17
setDate(int parameterIndex, Date x, Calendar cal)
6.4.18
setDouble(int parameterIndex, double x)
6.4.19
setFloat(int parameterIndex, float x)
6.4.20
setInt(int parameterIndex, int x)
6.4.21
setLong(int parameterIndex, long x)
6.4.22
setNull(int parameterIndex,int sqlType)
6.4.23
setObject(int parameterIndex, Object x)
6.4.24
setObject(int parameterIndex, Object x, int targetSqlType)
6.4.25
setObject(int parameterIndex, Object x, int targetSqlType, int scale)
6.4.26
setShort(int parameterIndex, short x)
6.4.27
setString(int parameterIndex, String x)
313
314
314
315
316
316
318
319
319
320
322
322
324
325
325
326
327
328
Hitachi Advanced Data Binder AP 開発ガイド
328
329
330
331
332
333
334
334
335
336
337
338
339
340
341
341
342
343
344
345
24
6.4.28
setTime(int parameterIndex, Time x)
346
6.4.29
setTime(int parameterIndex, Time x, Calendar cal)
6.4.30
setTimestamp(int parameterIndex, Timestamp x)
6.4.31
setTimestamp(int parameterIndex, Timestamp x, Calendar cal)
6.4.32
PreparedStatement インタフェースに関する注意事項
6.5
ResultSet インタフェース
6.5.1
ResultSet インタフェースのメソッド一覧
6.5.2
absolute(int row)
6.5.3
afterLast()
6.5.4
beforeFirst()
6.5.5
clearWarnings()
6.5.6
close()
6.5.7
findColumn(String columnName)
6.5.8
first()
6.5.9
getAsciiStream(int columnIndex)
6.5.10
getAsciiStream(String columnName)
6.5.11
getBigDecimal(int columnIndex)
6.5.12
getBigDecimal(String columnName)
6.5.13
getBinaryStream(int columnIndex)
6.5.14
getBinaryStream(String columnName)
6.5.15
getBoolean(int columnIndex)
6.5.16
getBoolean(String columnName)
6.5.17
getByte(int columnIndex)
6.5.18
getByte(String columnName)
6.5.19
getBytes(int columnIndex)
6.5.20
getBytes(String columnName)
6.5.21
getCharacterStream(int columnIndex)
6.5.22
getCharacterStream(String columnName)
6.5.23
getConcurrency()
378
6.5.24
getCursorName()
378
6.5.25
getDate(int columnIndex)
6.5.26
getDate(int columnIndex, Calendar cal)
6.5.27
getDate(String columnName)
6.5.28
getDate(String columnName, Calendar cal)
6.5.29
getDouble(int columnIndex)
6.5.30
getDouble(String columnName)
6.5.31
getFetchDirection()
6.5.32
getFetchSize()
6.5.33
getFloat(int columnIndex)
347
348
348
349
352
352
355
356
357
358
359
360
361
361
363
364
365
366
367
368
370
371
373
374
375
376
377
379
381
382
383
384
386
387
387
Hitachi Advanced Data Binder AP 開発ガイド
388
25
6.5.34
getFloat(String columnName)
390
6.5.35
getHoldability()
6.5.36
getInt(int columnIndex)
6.5.37
getInt(String columnName)
6.5.38
getLong(int columnIndex)
6.5.39
getLong(String columnName)
6.5.40
getMetaData()
6.5.41
getObject(int columnIndex)
6.5.42
getObject(String columnName)
6.5.43
getRow()
6.5.44
getShort(int columnIndex)
6.5.45
getShort(String columnName)
6.5.46
getStatement()
6.5.47
getString(int columnIndex)
6.5.48
getString(String columnName)
6.5.49
getTime(int columnIndex)
6.5.50
getTime(int columnIndex, Calendar cal)
6.5.51
getTime(String columnName)
6.5.52
getTime(String columnName, Calendar cal)
6.5.53
getTimestamp(int columnIndex)
6.5.54
getTimestamp(int columnIndex, Calendar cal)
6.5.55
getTimestamp(String columnName)
6.5.56
getTimestamp(String columnName, Calendar cal)
6.5.57
getType()
6.5.58
getWarnings()
6.5.59
isAfterLast()
6.5.60
isBeforeFirst()
6.5.61
isClosed()
6.5.62
isFirst()
421
6.5.63
isLast()
422
6.5.64
last()
6.5.65
next()
6.5.66
previous()
6.5.67
relative(int rows)
6.5.68
setFetchDirection(int direction)
6.5.69
setFetchSize(int rows)
6.5.70
wasNull()
6.5.71
ResultSet インタフェースでサポートしているフィールド
6.5.72
ResultSet インタフェースに関する注意事項
391
392
394
395
397
398
398
400
401
402
404
405
406
407
408
410
411
412
413
414
415
416
417
418
419
419
420
422
423
424
425
426
426
428
Hitachi Advanced Data Binder AP 開発ガイド
428
429
26
6.6
DatabaseMetaData インタフェース
432
6.6.1
DatabaseMetaData インタフェースのメソッド一覧
6.6.2
allProceduresAreCallable()
6.6.3
allTablesAreSelectable()
6.6.4
autoCommitFailureClosesAllResultSets()
6.6.5
dataDefinitionCausesTransactionCommit()
6.6.6
dataDefinitionIgnoredInTransactions()
6.6.7
deletesAreDetected(int type)
6.6.8
doesMaxRowSizeIncludeBlobs()
6.6.9
getAttributes(String catalog, String schemaPattern, String typeNamePattern, String
attributeNamePattern) 446
6.6.10
getBestRowIdentifier(String catalog, String schema, String table, int scope, boolean
nullable) 447
6.6.11
getCatalogs()
6.6.12
getCatalogSeparator()
6.6.13
getCatalogTerm()
6.6.14
getClientInfoProperties()
6.6.15
getColumnPrivileges(String catalog, String schema, String table, String
columnNamePattern) 451
6.6.16
getColumns(String catalog, String schemaPattern, String tableNamePattern, String
columnNamePattern) 452
6.6.17
getConnection()
6.6.18
getCrossReference(String parentCatalog, String parentSchema, String parentTable,
String foreignCatalog, String foreignSchema, String foreignTable) 455
6.6.19
getDatabaseMajorVersion()
457
6.6.20
getDatabaseMinorVersion()
458
6.6.21
getDatabaseProductName()
459
6.6.22
getDatabaseProductVersion()
6.6.23
getDefaultTransactionIsolation()
6.6.24
getDriverMajorVersion()
460
6.6.25
getDriverMinorVersion()
461
6.6.26
getDriverName()
6.6.27
getDriverVersion()
6.6.28
getExportedKeys(String catalog, String schema, String table)
6.6.29
getExtraNameCharacters()
6.6.30
getFunctionColumns(String catalog, String schemaPattern, String
functionNamePattern, String columnNamePattern) 465
6.6.31
getFunctions(String catalog, String schemaPattern, String functionNamePattern)
6.6.32
getIdentifierQuoteString()
6.6.33
getImportedKeys(String catalog, String schema, String table)
432
441
442
443
443
444
444
445
449
449
450
450
455
459
460
462
Hitachi Advanced Data Binder AP 開発ガイド
462
463
465
467
468
468
27
6.6.34
getIndexInfo(String catalog, String schema, String table, boolean unique, boolean
approximate) 470
6.6.35
getJDBCMajorVersion()
472
6.6.36
getJDBCMinorVersion()
473
6.6.37
getMaxBinaryLiteralLength()
6.6.38
getMaxCatalogNameLength()
6.6.39
getMaxCharLiteralLength()
6.6.40
getMaxColumnNameLength()
6.6.41
getMaxColumnsInGroupBy()
6.6.42
getMaxColumnsInIndex()
6.6.43
getMaxColumnsInOrderBy()
6.6.44
getMaxColumnsInSelect()
477
6.6.45
getMaxColumnsInTable()
478
6.6.46
getMaxConnections()
6.6.47
getMaxCursorNameLength()
6.6.48
getMaxIndexLength()
6.6.49
getMaxProcedureNameLength()
6.6.50
getMaxRowSize()
6.6.51
getMaxSchemaNameLength()
6.6.52
getMaxStatementLength()
6.6.53
getMaxStatements()
6.6.54
getMaxTableNameLength()
6.6.55
getMaxTablesInSelect()
6.6.56
getMaxUserNameLength()
6.6.57
getNumericFunctions()
6.6.58
getPrimaryKeys(String catalog, String schema, String table)
6.6.59
getProcedureColumns(String catalog, String schemaPattern, String
procedureNamePattern, String columnNamePattern) 486
6.6.60
getProcedures(String catalog, String schemaPattern, String procedureNamePattern) 488
6.6.61
getProcedureTerm()
6.6.62
getResultSetHoldability()
6.6.63
getRowIdLifetime()
6.6.64
getSchemas()
6.6.65
getSchemas(String catalog, String schemaPattern)
6.6.66
getSchemaTerm()
6.6.67
getSearchStringEscape()
6.6.68
getSQLKeywords()
493
6.6.69
getSQLStateType()
494
6.6.70
getStringFunctions()
6.6.71
getSuperTables(String catalog, String schemaPattern, String tableNamePattern)
473
474
474
475
475
476
476
478
479
479
480
480
481
481
482
483
483
484
484
485
489
489
490
490
Hitachi Advanced Data Binder AP 開発ガイド
491
492
493
495
495
28
6.6.72
getSuperTypes(String catalog, String schemaPattern, String typeNamePattern)
496
6.6.73
getSystemFunctions()
6.6.74
getTablePrivileges(String catalog, String schemaPattern, String tableNamePattern)
6.6.75
getTables(String catalog, String schemaPattern, String tableNamePattern, String[]
types) 500
6.6.76
getTableTypes()
6.6.77
getTimeDateFunctions()
6.6.78
getTypeInfo()
6.6.79
getUDTs(String catalog, String schemaPattern, String typeNamePattern, int[] types) 504
6.6.80
getURL()
6.6.81
getUserName()
6.6.82
getVersionColumns(String catalog, String schema, String table)
6.6.83
insertsAreDetected(int type)
6.6.84
isCatalogAtStart()
6.6.85
isReadOnly()
6.6.86
locatorsUpdateCopy()
6.6.87
nullPlusNonNullIsNull()
6.6.88
nullsAreSortedAtEnd()
6.6.89
nullsAreSortedAtStart()
6.6.90
nullsAreSortedHigh()
512
6.6.91
nullsAreSortedLow()
512
6.6.92
othersDeletesAreVisible(int type)
6.6.93
othersInsertsAreVisible(int type)
6.6.94
othersUpdatesAreVisible(int type)
6.6.95
ownDeletesAreVisible(int type)
6.6.96
ownInsertsAreVisible(int type)
6.6.97
ownUpdatesAreVisible(int type)
6.6.98
storesLowerCaseIdentifiers()
6.6.99
storesLowerCaseQuotedIdentifiers()
6.6.100
storesMixedCaseIdentifiers()
6.6.101
storesMixedCaseQuotedIdentifiers()
6.6.102
storesUpperCaseIdentifiers()
6.6.103
storesUpperCaseQuotedIdentifiers()
6.6.104
supportsAlterTableWithAddColumn()
6.6.105
supportsAlterTableWithDropColumn()
6.6.106
supportsANSI92EntryLevelSQL()
6.6.107
supportsANSI92FullSQL()
6.6.108
supportsANSI92IntermediateSQL()
6.6.109
supportsBatchUpdates()
497
498
501
502
503
505
506
506
508
508
509
Hitachi Advanced Data Binder AP 開発ガイド
509
510
511
511
513
514
514
515
516
516
517
518
518
519
520
520
521
521
522
522
523
523
29
6.6.110
supportsCatalogsInDataManipulation()
6.6.111
supportsCatalogsInIndexDefinitions()
6.6.112
supportsCatalogsInPrivilegeDefinitions()
6.6.113
supportsCatalogsInProcedureCalls()
6.6.114
supportsCatalogsInTableDefinitions()
6.6.115
supportsColumnAliasing()
6.6.116
supportsConvert()
6.6.117
supportsConvert(int fromType, int toType)
6.6.118
supportsCoreSQLGrammar()
6.6.119
supportsCorrelatedSubqueries()
6.6.120
supportsDataDefinitionAndDataManipulationTransactions()
6.6.121
supportsDataManipulationTransactionsOnly()
6.6.122
supportsDifferentTableCorrelationNames()
6.6.123
supportsExpressionsInOrderBy()
6.6.124
supportsExtendedSQLGrammar()
6.6.125
supportsFullOuterJoins()
6.6.126
supportsGetGeneratedKeys()
6.6.127
supportsGroupBy()
6.6.128
supportsGroupByBeyondSelect()
6.6.129
supportsGroupByUnrelated()
6.6.130
supportsIntegrityEnhancementFacility()
6.6.131
supportsLikeEscapeClause()
537
6.6.132
supportsLimitedOuterJoins()
537
6.6.133
supportsMinimumSQLGrammar()
6.6.134
supportsMixedCaseIdentifiers()
6.6.135
supportsMixedCaseQuotedIdentifiers()
6.6.136
supportsMultipleOpenResults()
6.6.137
supportsMultipleResultSets()
6.6.138
supportsMultipleTransactions()
6.6.139
supportsNamedParameters()
6.6.140
supportsNonNullableColumns()
6.6.141
supportsOpenCursorsAcrossCommit()
6.6.142
supportsOpenCursorsAcrossRollback()
6.6.143
supportsOpenStatementsAcrossCommit()
6.6.144
supportsOpenStatementsAcrossRollback()
6.6.145
supportsOrderByUnrelated()
6.6.146
supportsOuterJoins()
6.6.147
supportsPositionedDelete()
6.6.148
supportsPositionedUpdate()
Hitachi Advanced Data Binder AP 開発ガイド
524
525
525
526
526
527
527
528
529
530
531
531
532
532
533
533
534
534
535
536
536
538
538
539
540
540
541
541
542
542
543
543
544
545
545
546
546
30
6.6.149
supportsResultSetConcurrency(int type, int concurrency)
6.6.150
supportsResultSetHoldability(int holdability)
6.6.151
supportsResultSetType(int type)
6.6.152
supportsSavepoints()
6.6.153
supportsSchemasInDataManipulation()
6.6.154
supportsSchemasInIndexDefinitions()
6.6.155
supportsSchemasInPrivilegeDefinitions()
6.6.156
supportsSchemasInProcedureCalls()
6.6.157
supportsSchemasInTableDefinitions()
6.6.158
supportsSelectForUpdate()
6.6.159
supportsStatementPooling()
6.6.160
supportsStoredFunctionsUsingCallSyntax()
6.6.161
supportsStoredProcedures()
6.6.162
supportsSubqueriesInComparisons()
6.6.163
supportsSubqueriesInExists()
6.6.164
supportsSubqueriesInIns()
6.6.165
supportsSubqueriesInQuantifieds()
557
6.6.166
supportsTableCorrelationNames()
557
6.6.167
supportsTransactionIsolationLevel(int level)
6.6.168
supportsTransactions()
6.6.169
supportsUnion()
6.6.170
supportsUnionAll()
6.6.171
updatesAreDetected(int type)
6.6.172
usesLocalFilePerTable()
6.6.173
usesLocalFiles()
6.7
ResultSetMetaData インタフェース
6.7.1
ResultSetMetaData インタフェースのメソッド一覧
6.7.2
getCatalogName(int column)
6.7.3
getColumnClassName(int column)
6.7.4
getColumnCount()
6.7.5
getColumnDisplaySize(int column)
6.7.6
getColumnLabel(int column)
6.7.7
getColumnName(int column)
6.7.8
getColumnType(int column)
6.7.9
getColumnTypeName(int column)
6.7.10
getPrecision(int column)
6.7.11
getScale(int column)
6.7.12
getSchemaName(int column)
6.7.13
getTableName(int column)
547
548
548
549
550
550
551
551
552
553
553
554
554
555
555
556
558
558
559
560
560
561
561
Hitachi Advanced Data Binder AP 開発ガイド
563
563
564
565
566
567
568
568
569
570
571
572
573
574
31
6.7.14
isAutoIncrement(int column)
6.7.15
isCaseSensitive(int column)
6.7.16
isCurrency(int column)
6.7.17
isDefinitelyWritable(int column)
6.7.18
isNullable(int column)
6.7.19
isReadOnly(int column)
6.7.20
isSearchable(int column)
6.7.21
isSigned(int column)
6.7.22
isWritable(int column)
6.8
SQLException インタフェース
6.9
SQLWarning インタフェース
6.9.1
SQLWarning オブジェクトの生成
582
6.9.2
SQLWarning オブジェクトの解放
582
6.10
サポートしていないインタフェース
7
JDBC 2.1 コア API 584
7.2
バッチ更新機能のサポート範囲
7.2.1
バッチ更新機能を使用できる SQL 文
7.2.2
Statement クラスでのバッチ更新機能
7.2.3
PreparedStatement クラスでのバッチ更新機能
7.2.4
注意事項
7.3
追加されたデータ型
7.4
サポートしていないインタフェース
8
JDBC 2.0 Optional Package 592
7.1
574
575
575
576
577
577
578
579
579
581
582
583
結果セットの拡張機能のサポート範囲
585
586
586
586
586
587
590
591
8.1
JDBC 2.0 Optional Package の追加機能に対する HADB でのサポート範囲
8.2
DataSource インタフェース
8.2.1
DataSource インタフェースのメソッド一覧
8.2.2
getConnection()
8.2.3
getConnection(String username, String password)
8.2.4
getLoginTimeout()
8.2.5
getLogWriter()
8.2.6
setLoginTimeout(int seconds)
597
8.2.7
setLogWriter(PrintWriter out)
598
8.3
ConnectionPoolDataSource インタフェース
8.3.1
ConnectionPoolDataSource インタフェースのメソッド一覧
8.3.2
getLoginTimeout()
8.3.3
getLogWriter()
593
594
594
594
595
596
597
599
599
599
600
Hitachi Advanced Data Binder AP 開発ガイド
32
8.3.4
getPooledConnection()
601
8.3.5
getPooledConnection(String user, String password)
8.3.6
setLoginTimeout(int seconds)
602
8.3.7
setLogWriter(PrintWriter out)
603
8.4
PooledConnection インタフェース
8.4.1
PooledConnection インタフェースのメソッド一覧
8.4.2
addConnectionEventListener(ConnectionEventListener listener)
8.4.3
close()
8.4.4
getConnection()
8.4.5
removeConnectionEventListener(ConnectionEventListener listener)
8.5
接続情報設定および取得インタフェース
8.5.1
接続情報設定および取得インタフェースのメソッド一覧
8.5.2
getApName()
8.5.3
getEncodeLang()
8.5.4
getInterfaceMethodTrace()
8.5.5
getNotErrorOccurred()
8.5.6
getPassword()
8.5.7
getSQLWarningKeep()
8.5.8
getTraceNumber()
8.5.9
getUser()
8.5.10
getHostName()
8.5.11
getPort()
8.5.12
setApName(String name)
8.5.13
setEncodeLang(String lang)
8.5.14
setInterfaceMethodTrace(boolean flag)
8.5.15
setNotErrorOccurred(boolean mode)
8.5.16
setPassword(String password)
8.5.17
setSQLWarningKeep(boolean mode)
8.5.18
setTraceNumber(int num)
8.5.19
setUser(String user)
8.5.20
setHostName(String name)
8.5.21
setPort(int port)
9
JDBC 3.0 API 623
601
604
604
604
605
606
607
608
608
609
609
610
611
611
612
612
613
614
614
615
616
616
617
618
619
619
620
621
621
9.1
JDBC 3.0 API の追加機能に対する HADB でのサポート範囲
9.2
ParameterMetaData インタフェース
9.2.1
ParameterMetaData インタフェースのメソッド一覧
9.2.2
getParameterClassName(int param)
9.2.3
getParameterCount()
Hitachi Advanced Data Binder AP 開発ガイド
624
625
625
626
627
33
9.2.4
getParameterMode(int param)
9.2.5
getParameterType(int param)
9.2.6
getParameterTypeName(int param)
9.2.7
getPrecision(int param)
9.2.8
getScale(int param)
9.2.9
isNullable(int param)
9.2.10
isSigned(int param)
9.3
サポートしていないインタフェース
10
JDBC 4.0 API 635
10.1.1
java.sql.Driver 自動ローディング
10.1.2
ラッパーパターン
10.1.3
SQL 例外拡張
10.1.4
接続管理
10.1.5
スカラ関数追加
10.2
Wrapper インタフェース
10.2.1
Wrapper インタフェースのメソッド一覧
10.2.2
isWrapperFor(Class<?> iface)
10.2.3
unwrap(Class<T> iface)
10.3
SQL 例外拡張機能
10.4
サポートしていないインタフェース
10.1
627
628
629
630
631
632
632
634
JDBC 4.0 API の追加機能に対する HADB でのサポート範囲
636
637
637
637
638
638
639
639
640
640
642
644
第 4 編 AP 作成編【ODBC】
11
AP の作成 645
11.1
HADB が提供している ODBC ドライバ
11.1.1
HADB ODBC が準拠している ODBC ドライバのバージョン
11.1.2
システム構成
11.1.3
文字コード変換について
11.2
HADB ODBC ドライバの環境設定
11.2.1
データソースの設定
11.2.2
レジストリキーの登録
11.2.3
データソースの削除
11.3
データ型の対応
11.3.1
ODBC の SQL データ型と HADB のデータ型の対応
11.3.2
ODBC の SQL データ型と C データ型の対応
11.3.3
データ型変換時の注意事項
11.4
エラー発生時に返却される情報
11.5
制限事項
646
646
646
647
650
650
651
651
653
653
655
656
659
660
Hitachi Advanced Data Binder AP 開発ガイド
34
11.5.1
ROW の指定
11.5.2
AUTOCOMMIT の仕様
11.5.3
最大 SQL 処理リアルスレッド数に関する注意事項
11.6
注意事項
11.6.1
更新操作によるカーソルを使用した検索への影響
12
ODBC 関数 662
12.2
SQLxxx 関数および SQLxxxW 関数の留意事項
12.3
データソースとの接続
12.3.1
SQLAllocHandle
12.3.2
SQLConnect,SQLConnectW
12.3.3
SQLDriverConnect,SQLDriverConnectW
12.3.4
SQLBrowseConnect,SQLBrowseConnectW
12.4
ドライバおよびデータソースの情報取得
12.4.1
SQLDataSources,SQLDataSourcesW
12.4.2
SQLDrivers,SQLDriversW
12.4.3
SQLGetInfo,SQLGetInfoW
12.4.4
SQLGetFunctions
12.4.5
SQLGetTypeInfo,SQLGetTypeInfoW
12.5
ドライバオプションの設定および取得
12.5.1
SQLSetConnectAttr,SQLSetConnectAttrW
12.5.2
SQLGetConnectAttr,SQLGetConnectAttrW
12.5.3
SQLSetEnvAttr
702
12.5.4
SQLGetEnvAttr
703
12.5.5
SQLSetStmtAttr,SQLSetStmtAttrW
12.5.6
SQLGetStmtAttr,SQLGetStmtAttrW
12.6
ディスクリプタ値の設定
12.6.1
SQLGetDescField,SQLGetDescFieldW
12.6.2
SQLGetDescRec,SQLGetDescRecW
12.6.3
SQLSetDescField,SQLSetDescFieldW
12.6.4
SQLSetDescRec
12.6.5
SQLCopyDesc
720
12.7
SQL 要求の作成
722
12.7.1
SQLPrepare,SQLPrepareW
12.7.2
SQLBindParameter
12.7.3
SQLGetCursorName,SQLGetCursorNameW
12.7.4
SQLSetCursorName,SQLSetCursorNameW
12.7.5
SQLDescribeParam
12.1
660
660
660
661
ODBC 関数の一覧
661
663
667
668
668
670
672
679
685
685
687
690
692
694
697
697
700
705
707
709
709
711
715
717
Hitachi Advanced Data Binder AP 開発ガイド
722
724
728
730
732
35
12.7.6
SQLNumParams
734
12.8
SQL の実行
12.8.1
SQLExecute
12.8.2
SQLExecDirect,SQLExecDirectW
12.8.3
SQLNativeSql,SQLNativeSqlW
12.8.4
SQLParamData
12.8.5
SQLPutData
12.9
実行結果および実行結果情報の取得
12.9.1
SQLRowCount
12.9.2
SQLNumResultCols
12.9.3
SQLDescribeCol,SQLDescribeColW
755
12.9.4
SQLColAttribute,SQLColAttributeW
758
12.9.5
SQLBindCol
12.9.6
SQLFetch
12.9.7
SQLFetchScroll
12.9.8
SQLGetData
12.9.9
SQLSetPos
12.9.10
SQLBulkOperations
12.9.11
SQLMoreResults
12.9.12
SQLGetDiagField,SQLGetDiagFieldW
12.9.13
SQLGetDiagRec,SQLGetDiagRecW
12.10
データソースのシステム情報の取得
12.10.1
SQLColumnPrivileges,SQLColumnPrivilegesW
12.10.2
SQLColumns,SQLColumnsW
12.10.3
SQLForeignKeys,SQLForeignKeysW
791
12.10.4
SQLPrimaryKeys,SQLPrimaryKeysW
796
12.10.5
SQLProcedureColumns,SQLProcedureColumnsW
12.10.6
SQLProcedures,SQLProceduresW
12.10.7
SQLSpecialColumns,SQLSpecialColumnsW
12.10.8
SQLStatistics,SQLStatisticsW
12.10.9
SQLTablePrivileges,SQLTablePrivilegesW
12.10.10
SQLTables,SQLTablesW
12.11
SQL 実行の終了
12.11.1
SQLFreeStmt
12.11.2
SQLCloseCursor
12.11.3
SQLCancel
12.11.4
SQLEndTran
12.12
データソースとの切断
12.12.1
SQLDisconnect
736
736
739
742
748
750
753
753
754
762
764
767
769
772
774
776
778
781
784
784
786
799
801
804
807
811
814
819
819
820
822
822
825
825
Hitachi Advanced Data Binder AP 開発ガイド
36
12.12.2
SQLFreeHandle
826
12.13
SQLGetInfo および SQLGetInfoW の InfoType に指定できる情報型
12.14
SQLSetConnectAttr,SQLSetConnectAttrW,SQLGetConnectAttr および
SQLGetConnectAttrW に指定できる属性 853
12.15
SQLSetEnvAttr および SQLGetEnvAttr に指定できる属性
12.16
SQLSetStmtAttr,SQLSetStmtAttrW,SQLGetStmtAttr および SQLGetStmtAttrW に指
定できる属性 858
12.17
SQLGetDescField,SQLGetDescFieldW,SQLSetDescField および
SQLSetDescFieldW に指定できる属性 864
12.18
SQLGetDiagField および SQLGetDiagFieldW の DiagIdentifier に指定できる属性
13
トラブルシュート 877
828
857
13.1
トラブルシュート時に使用する情報
13.1.1
BI ツールや ODBC モジュールの出力するメッセージ
13.1.2
ODBC トレース
13.1.3
HADB ODBC ドライバトレース情報
13.1.4
HADB サーバまたは HADB クライアントが出力するメッセージ
13.1.5
SQL トレース情報
13.2
トラブルシュートの方法
13.2.1
エラーの対処方法
13.2.2
トラブルシュートのポイント
13.3
HADB ODBC ドライバトレース情報を出力するときの設定
887
13.3.1
ODBC データソースアドミニストレーターで設定する方法
887
13.3.2
環境変数で設定する方法
13.3.3
ODBC データソースアドミニストレーターと環境変数の設定値の優先順位
13.4
HADB ODBC ドライバトレース情報に出力される情報
13.4.1
トレースレベルとは
13.4.2
トレースレベル 1 の場合に出力される情報
895
13.4.3
トレースレベル 2 の場合に出力される情報
900
13.5
HADB ODBC ドライバトレース情報に関する注意事項
873
878
878
878
879
879
880
881
881
885
892
893
894
894
907
第 5 編 AP 作成編【CLI 関数】
14
AP の作成 908
14.1.1
AP の処理の流れ
14.1.2
トランザクション制御
14.1.3
?パラメタを使用する際の処理の流れ
14.1.4
更新操作によるカーソルを使用した検索への影響
14.1.5
SQL 文のエラー判定と対処方法
14.2
CLI 関数の使い方
14.1
AP の設計
909
909
909
911
911
912
914
Hitachi Advanced Data Binder AP 開発ガイド
37
14.2.1
HADB サーバへの接続および切り離しをする場合
14.2.2
データを参照する場合
14.2.3
?パラメタを使用する場合
14.2.4
データを追加,更新,または削除する場合
14.2.5
実行中の SQL をキャンセルする場合
14.2.6
CLI 関数を使用する場合の留意事項
14.3
AP のコンパイルとリンケージ
15
CLI 関数 929
914
916
922
924
926
927
928
15.1
CLI 関数の一覧と共通規則
930
15.1.1
CLI 関数の一覧
15.1.2
共通規則
15.2
HADB サーバへの接続および切り離し時に使用する CLI 関数
15.2.1
a_rdb_SQLAllocConnect()(コネクションハンドルの割り当て)
15.2.2
a_rdb_SQLConnect()(コネクションの確立)
15.2.3
a_rdb_SQLSetConnectAttr()(コネクション属性の設定)
15.2.4
a_rdb_SQLDisconnect()(コネクションの終了)
15.2.5
a_rdb_SQLFreeConnect()(コネクションハンドルの解放)
15.3
トランザクションの制御時に使用する CLI 関数
15.3.1
a_rdb_SQLCancel()(SQL のキャンセル)
15.3.2
a_rdb_SQLEndTran()(トランザクションの終了)
15.4
SQL の実行時に使用する CLI 関数
15.4.1
a_rdb_SQLAllocStmt()(文ハンドルの確保)
15.4.2
a_rdb_SQLBindArrayParams()(?パラメタの一括関連づけ)
15.4.3
a_rdb_SQLBindCols()(検索結果列の関連づけ)
15.4.4
a_rdb_SQLBindParams()(?パラメタの関連づけ)
15.4.5
a_rdb_SQLCloseCursor()(カーソルのクローズ)
15.4.6
a_rdb_SQLDescribeCols()(検索結果列の情報取得)
15.4.7
a_rdb_SQLDescribeParams()(?パラメタの情報取得)
15.4.8
a_rdb_SQLExecDirect()(SQL 文の前処理および実行)
15.4.9
a_rdb_SQLExecute()(前処理した SQL 文の実行)
15.4.10
a_rdb_SQLFetch()(行の取り出し)
15.4.11
a_rdb_SQLFreeStmt()(文ハンドルの解放)
15.4.12
a_rdb_SQLNumParams()(?パラメタ数の取得)
15.4.13
a_rdb_SQLNumResultCols()(検索結果列数の取得)
15.4.14
a_rdb_SQLPrepare()(SQL 文の前処理)
15.5
データ型の変換時に使用する CLI 関数
15.5.1
a_rdb_CNV_charBINARY()(BINARY 型データへの変換)
15.5.2
a_rdb_CNV_charDATE()(DATE 型データへの変換)
930
932
Hitachi Advanced Data Binder AP 開発ガイド
934
934
935
936
939
940
942
942
943
945
945
946
948
950
951
952
955
957
959
960
961
962
963
964
967
967
969
38
15.5.3
a_rdb_CNV_charDECIMAL()(DECIMAL 型データへの変換)
971
15.5.4
a_rdb_CNV_charTIME()(TIME 型データへの変換)
15.5.5
a_rdb_CNV_charTIMESTAMP()(TIMESTAMP 型データへの変換)
15.5.6
a_rdb_CNV_charVARBINARY()(VARBINARY 型データへの変換)
15.5.7
a_rdb_CNV_BINARYchar()(BINARY 型データの変換)
15.5.8
a_rdb_CNV_DATEchar()(DATE 型データの変換)
15.5.9
a_rdb_CNV_DECIMALchar()(DECIMAL 型データの変換)
15.5.10
a_rdb_CNV_TIMEchar()(TIME 型データの変換)
15.5.11
a_rdb_CNV_TIMESTAMPchar()(TIMESTAMP 型データの変換)
15.5.12
a_rdb_CNV_VARBINARYchar()(VARBINARY 型データの変換)
15.6
SQL のデータ型との対応
15.6.1
SQL のデータ型と記号定数および値の対応
15.6.2
SQL のデータ型とデータ記述の対応
15.6.3
VARCHAR 型との対応
15.6.4
VARBINARY 型との対応
15.7
CLI 関数で使用するデータ型
15.7.1
a_rdb_SQLColumnInfo_t 構造体(列情報)
995
15.7.2
a_rdb_SQLNameInfo_t 構造体(名称情報)
996
15.7.3
a_rdb_SQLDataType_t 構造体(データ型情報)
15.7.4
a_rdb_SQLInd_t(インジケータ)
15.7.5
a_rdb_SQLParameterInfo_t 構造体(パラメタ情報)
15.7.6
a_rdb_SQLResultInfo_t 構造体(SQL 結果情報)
15.8
CLI 関数の戻り値
973
975
977
979
981
983
985
987
988
991
991
991
993
993
995
997
998
999
1000
1003
付録 1006
付録 A
サンプル AP
付録 A.1
サンプル AP の概要
付録 A.2
サンプル AP を実行するための準備
付録 A.3
SAMPLE 表の作成手順
付録 A.4
サンプル AP の実行手順
付録 B
HADB クライアントのディレクトリの構成
1012
付録 B.1
Windows 版の HADB クライアントの場合
1012
付録 B.2
Linux 版の HADB クライアントの場合
付録 C
HADB クライアントのメモリ所要量の見積もり
付録 C.1
HADB サーバへの接続時に使用するメモリ所要量
付録 C.2
HADB クライアントと HADB サーバの通信時に使用するメモリ所要量
1007
1007
1007
1007
1009
1018
1021
1021
1021
索引 1024
Hitachi Advanced Data Binder AP 開発ガイド
39
第 1 編 環境設定編【共通】
1
AP 開発の概要
この章では,AP 開発の流れ,AP を開発する前に知っておくべき前提条件,および AP の実行形
態について説明します。
Hitachi Advanced Data Binder AP 開発ガイド
40
1.1 AP 開発の流れと前提条件
AP 開発の流れを次の図に示します。
図 1‒1 AP 開発の流れ
AP を開発する前に知っておくべき前提条件について説明します。
1.1.1 AP の記述言語
AP の記述言語は次に示すどれかになります。
• Java 言語
• C 言語
• C++言語
Java 言語の場合,JDBC の API を使用してデータベースにアクセスできます。
C または C++言語の場合,CLI 関数(C または C++言語対応の HADB が提供している API),または
ODBC 関数を使用してデータベースにアクセスできます。
また,ODBC 対応の AP からも,ODBC 関数を使用してデータベースにアクセスできます。
1. AP 開発の概要
Hitachi Advanced Data Binder AP 開発ガイド
41
1.1.2 文字コード
HADB サーバおよび HADB クライアントでは,次に示す文字コードが使用できます。
• UTF-8
• Shift-JIS
1.1.3 AP の開発環境
HADB サーバをインストールしたマシン,または HADB クライアントをインストールしたマシンのどち
らかで AP の開発を行います。
1. AP 開発の概要
Hitachi Advanced Data Binder AP 開発ガイド
42
1.2 AP の実行形態
AP は,HADB クライアントまたは HADB サーバのどちらでも実行できます。
HADB クライアントで AP を実行する形態を図 1-2 に,HADB サーバで AP を実行する形態を図 1-3 に
示します。
図 1‒2 HADB クライアントで AP を実行する形態
注 HADB クライアントの適用 OS は,Linux または Windows です。
1. AP 開発の概要
Hitachi Advanced Data Binder AP 開発ガイド
43
図 1‒3 HADB サーバで AP を実行する形態
1. AP 開発の概要
Hitachi Advanced Data Binder AP 開発ガイド
44
2
HADB クライアントの環境設定
この章では,HADB クライアントのインストールや環境変数の設定など,HADB クライアントの
環境設定方法について説明します。
Hitachi Advanced Data Binder AP 開発ガイド
45
2.1 HADB クライアントの環境設定手順
HADB クライアントの環境設定手順について説明します。
2.1.1 Windows 版の HADB クライアントの場合
HADB サーバ以外のマシンで AP を作成または実行する場合,そのマシンを HADB クライアントとして
運用します。Windows 版の HADB クライアントの環境設定手順を次に示します。
図 2‒1 Windows 版の HADB クライアントの環境設定手順
各作業の手順については,「2.2 HADB クライアントのインストールおよびアンインストール」以降で説
明します。
なお,HADB クライアントをインストールする前に,HADB クライアントのメモリ所要量を計算してく
ださい。HADB クライアントのメモリ所要量の計算式については,「付録 C HADB クライアントのメモ
リ所要量の見積もり」を参照してください。
2.1.2 Linux 版の HADB クライアントの場合
HADB サーバ以外のマシンで AP を作成または実行する場合,そのマシンを HADB クライアントとして
運用します。Linux 版の HADB クライアントの環境設定手順を次に示します。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
46
図 2‒2 Linux 版の HADB クライアントの環境設定手順
各作業の手順については,「2.2 HADB クライアントのインストールおよびアンインストール」以降で説
明します。
なお,HADB クライアントをインストールする前に,HADB クライアントのメモリ所要量を計算してく
ださい。HADB クライアントのメモリ所要量の計算式については,「付録 C HADB クライアントのメモ
リ所要量の見積もり」を参照してください。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
47
2.2 HADB クライアントのインストールおよびアンインストール
HADB クライアントのインストール方法およびアンインストール方法について説明します。
2.2.1 Windows 版の HADB クライアントの場合
ここでは,Windows 版の HADB クライアントのインストールおよびアンインストールについて説明しま
す。
HADB クライアントをインストールまたはアンインストールするには,管理者特権が必要です。
(1) HADB クライアントのインストール
HADB クライアントのインストール手順を次に示します。
手順
1. CD-ROM 中の次の圧縮ファイルをクライアントマシンの任意のフォルダにコピーします。
・Windows が 64 ビット版の場合:hitachi_advanced_data_binder_client.zip
・Windows が 32 ビット版の場合:hitachi_advanced_data_binder_client32.zip
なお,コピー先のフォルダは,パス長が 200 バイト以内のフォルダにしてください。
また,コピー先のフォルダのパス名に使用できる文字については,「はじめに」の「■このマニュア
ルで使用する構文要素記号」の「〈パス名〉」を参照してください。
2. 圧縮ファイルを解凍します。
(例)
D:\hadb_clt 下に hitachi_advanced_data_binder_client.zip をコピーして,解凍します。
D:\hadb_clt\hitachi_advanced_data_binder_client\HADBCL 下に,フォルダおよびファイルが展
開されます。
注 上記フォルダは,圧縮ファイルを解凍したときのデフォルトの解凍先です。
■インストール後の作業
インストール後,次の作業を実施してください。
• 環境変数の設定
設定する必要がある環境変数については,「2.3.1 Windows 版の HADB クライアントの場合」を
参照してください。
なお,環境変数 ADBCLTDIR には,クライアントディレクトリの絶対パスを指定します。上記の
インストールの手順で説明した例の場合,D:\hadb_clt\hitachi_advanced_data_binder_client
\HADBCL がクライアントディレクトリになります。
クライアントディレクトリとは,1 つのクライアントプロセスに関するファイル群を格納したフォ
ルダのことです。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
48
• レジストリキーの登録
環境変数の設定後,次のレジストリ登録コマンドを実行してレジストリキーを登録してください。
・Windows が 64 ビット版の場合:%ADBCLTDIR%\adbreg.reg
・Windows が 32 ビット版の場合:%ADBCLTDIR%\adbreg32.reg
• フォルダへの書き込み権限の付与
HADB クライアント(ODBC ドライバを含む)を使用する可能性がある OS ユーザに対して,次
に示すフォルダへの書き込み権限を与えてください。
・%ADBCLTDIR%\spool
・%ADBODBTRCPATH%
このフォルダは,Windows の 64 ビット版と 32 ビット版で共通です。
(2) HADB クライアントのアンインストール
HADB クライアントをアンインストールする前に次のことをしてください。
• HADB クライアントから実行しているコマンドまたは AP がないか確認してください。コマンドまた
は AP の実行中に HADB クライアントのアンインストールを実行すると,アンインストールが失敗す
るおそれがあります。
• クライアントディレクトリ下に必要なファイルがある場合は,バックアップを取得してください。
HADB クライアントのアンインストール手順を次に示します。
手順
1. HADB クライアントのインストール時にコピーしたすべてのフォルダおよびファイルを削除してく
ださい。また,インストール後に作成したフォルダおよびファイルも削除してください。
2. インストール時に登録したレジストリキーを,次のレジストリ削除コマンドを実行して削除してく
ださい。
・Windows が 64 ビット版の場合:%ADBCLTDIR%\adbunreg.reg
・Windows が 32 ビット版の場合:%ADBCLTDIR%\adbunreg32.reg
2.2.2 Linux 版の HADB クライアントの場合
ここでは,Linux 版の HADB クライアントのインストールおよびアンインストールについて説明します。
HADB クライアントのインストールは,HADB クライアントを管理する OS ユーザが実行します。なお,
インストールを実行する OS ユーザのユーザ名は 32 バイト以内にしてください。
クライアントディレクトリとは,1 つのクライアントプロセスに関するファイル群を格納したディレクト
リのことです。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
49
(1) HADB クライアントのインストール
HADB クライアントのインストール手順を次に示します。
手順
1. インストールデータ(tar.gz ファイル)および adbinstall コマンドを格納するディレクトリを作成
します。格納するディレクトリのパス名を,/home/osuser01/client とした場合の実行例を次に示
します。
mkdir /home/osuser01/client
2. HADB クライアントを管理する OS ユーザが書き込みできるように,インストールデータ(tar.gz
ファイル)および adbinstall コマンドを格納するディレクトリに対して,書き込み権限を付与しま
す。格納するディレクトリのパス名を,/home/osuser01/client とした場合の実行例を次に示しま
す。
chmod 755 /home/osuser01/client
3. CD-ROM ファイルシステムをマウントします。
HADB クライアントのインストールデータ(tar.gz ファイル)およびインストールコマンド
(adbinstall コマンド)が格納されている CD-ROM ファイルシステムを自動マウントしてください。
CD-ROM ファイルシステムが自動マウントされない場合,CD-ROM ファイルシステムをマウン
トする必要があります。次に示す OS のコマンドを入力して,CD-ROM ファイルシステムをマウ
ントしてください。
mount /dev/cdrom /media
下線部分は,CD-ROM ファイルシステムのマウントディレクトリ名です。環境によって異なります。
注意事項
CD-ROM のディレクトリ名やファイル名は,マシンによって記述した内容と表示が異なる
ことがあります。OS の ls コマンドを実行して,表示されたディレクトリ名をそのまま入力
してください。
4. インストールデータ(tar.gz ファイル)およびインストールコマンド(adbinstall コマンド)を,
1.で作成したディレクトリにコピーします。なお,tar.gz ファイルと adbinstall コマンドは,必ず
同じディレクトリにコピーしてください。
cp /media/hitachi_advanced_data_binder_client-$VER.tar.gz /home/osuser01/client
cp /media/adbinstall /home/osuser01/client
$VER は HADB のバージョンおよびリリース番号になります。
5. 4.でコピーしたインストールコマンド(adbinstall コマンド)に HADB クライアントを管理する
OS ユーザの実行権限を付与するため,次に示す OS のコマンドを実行してください。
chmod 777 /home/osuser01/client/adbinstall
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
50
6. インストールコマンド(adbinstall コマンド)を実行します。adbinstall コマンドを実行すると,c オプションに指定したディレクトリ下に,HADB クライアントがインストールされます。この
ディレクトリが,クライアントディレクトリになります。ディレクトリのパス長は,118 バイト以
内になるようにしてください。
クライアントディレクトリのパス名に使用できる文字については,「はじめに」の「■このマニュア
ルで使用する構文要素記号」の「〈パス名〉」を参照してください。
なお,adbinstall コマンドの-c オプションで指定するディレクトリには,必ず HADB クライアン
トを管理する OS ユーザが書き込みできるディレクトリを指定してください。HADB クライアント
を管理する OS ユーザが書き込みできないディレクトリを指定した場合,KFAA91553-E メッセー
ジが出力されてエラーになります。
インストールコマンド(adbinstall コマンド)とインストールデータ(tar.gz ファイル)を格納す
るディレクトリに,HADB クライアントを管理する OS ユーザが書き込みできない場合も,
KFAA91553-E メッセージが出力されてエラーになります。
-c オプションに指定したディレクトリが存在しないときは,adbinstall コマンドを実行すると,自
動的にディレクトリが作成されます。
-c オプションに指定したディレクトリのパス名を,/home/osuser01/clientdir とした場合の実行
例を次に示します。
/home/osuser01/client/adbinstall -c /home/osuser01/clientdir
参考
adbinstall コマンドで HADB クライアントをインストールしたときのクライアントディレクト
リの構成については,「付録 B.2(1) クライアントディレクトリ(インストール時)の構成」を
参照してください。
■インストール後の作業
インストール後,環境変数を設定してください。設定する必要がある環境変数については,「2.3.2 Linux 版の HADB クライアントの場合」を参照してください。
なお,環境変数 ADBCLTDIR には,クライアントディレクトリの絶対パスを指定します。上記のイン
ストールの手順で説明した例の場合,/home/osuser01/clientdir がクライアントディレクトリになり
ます。
(2) HADB クライアントのアンインストール
HADB クライアントのアンインストールは,インストールを実施した OS ユーザが実行してください。
アンインストール前に次のことをしてください。
• HADB クライアントから実行しているコマンドまたは AP がないか確認してください。コマンドまた
は AP の実行中に HADB クライアントのアンインストールを実行すると,アンインストールが失敗す
るおそれがあります。
• クライアントディレクトリ下に必要なファイルがある場合は,バックアップを取得してください。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
51
HADB クライアントのアンインストール手順を次に示します。
手順
1. クライアントディレクトリを削除します。
インストールを実施した OS ユーザで,クライアントディレクトリを削除します。
rm -rf /home/osuser01/clientdir
2. インストールデータ(tar.gz ファイルおよび adbinstall コマンド)を削除します。
インストールを実施した OS ユーザで,HADB クライアントのインストールで使用したインストー
ルデータ(tar.gz ファイルおよび adbinstall コマンド)を削除します。
rm -rf /home/osuser01/client
3. インストール時に設定した環境変数の指定を削除してください。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
52
2.3 環境変数の設定
HADB クライアントで設定する環境変数について説明します。
2.3.1 Windows 版の HADB クライアントの場合
Windows 版の HADB クライアントで次の表に示す環境変数を設定してください。
表 2‒1 環境変数に設定する値
項番
1
環境変数
設定する値
PATH
この環境変数には,次に示すフォルダを追加してください。
Windows が 64 ビット版の場合:
• %ADBCLTDIR%\client\bin
• %ADBCLTDIR%\vclib
Windows が 32 ビット版の場合:
• %ADBCLTDIR%\client\bin
• %ADBCLTDIR%\vclib32
この環境変数はシステム環境変数に設定してください。
2
TZ
この環境変数には,HADB クライアントをインストールするマシンのタイムゾー
ンを設定します。
この環境変数はシステム環境変数に設定してください。
なお,うるう秒対応のタイムゾーンは設定しないでください。
3
ADBCLTDIR
クライアントディレクトリの絶対パスを指定してください。レジストリ登録また
は削除コマンドを実施する前に,この環境変数を必ず設定しておいてください。
パスのうち,最初の 3 文字は次の規則に従って設定してください。
• 1 文字目
ドライブを表す英字
• 2 文字目
:(コロン)
• 3 文字目
/(スラッシュ)または\(バックスラッシュ)
4
ADBCLTLANG
この環境変数には,HADB クライアントで使用する文字コードを指定します。
HADB サーバで使用する文字コードと同じ文字コードを指定してください。
HADB サーバの環境変数 ADBLANG で指定した文字コードと同じ文字コード
を指定します。
• HADB サーバで Unicode(UTF-8)を使用する場合
この環境変数に UTF8 を指定してください。
• HADB サーバで Shift-JIS を使用する場合
この環境変数に SJIS を指定してください。
5
ADBMSGLOGSIZE
この環境変数には,1 ファイル当たりのクライアントメッセージログファイルの
最大容量をメガバイト単位で指定します。指定できる範囲は 1〜2,000 です。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
53
項番
環境変数
設定する値
HADB クライアントには,4 つのクライアントメッセージログファイルが作成
されます。この環境変数を省略した場合,1 つ当たりのクライアントメッセージ
ログファイルの最大容量は 16 メガバイトになります。
なお,1 つのクライアントディレクトリから複数のクライアントプロセスを起動
する場合,この環境変数の指定値は必ず同じ値を指定してください。異なる値で
複数のクライアントプロセスを動作させた場合,クライアントメッセージログ
ファイルが壊れるおそれがあります。
6
CLASSPATH
この環境変数には,次に示す JDBC ドライバの絶対パスを指定してください。
• %ADBCLTDIR%\client\lib\adbjdbc.jar
この環境変数はシステム環境変数に設定してください。
7
ADBODBTRC
HADB ODBC ドライバトレース情報を出力するかどうかを指定します。この環
境変数には,次のどちらかを指定してください。
• YES:HADB ODBC ドライバトレース情報を出力する場合に指定します。
• NO:HADB ODBC ドライバトレース情報を出力しない場合に指定します。
この環境変数を省略した場合,または不正な値を指定した場合は,NO が仮定さ
れます。
8
ADBODBTRCSIZE
この環境変数には,HADB ODBC ドライバトレースファイルの 1 ファイル当た
りのサイズの上限値(単位:メガバイト)を指定します。32〜1,024 の値を指定
できます。
この環境変数を省略した場合,または不正な値を指定した場合は,256 が仮定さ
れます。
9
ADBODBTRCPATH
この環境変数には,HADB ODBC ドライバトレースファイルを格納するフォル
ダを絶対パスで指定します。
237 バイト以下のパス名を指定してください。
次に示す場合は,環境変数 ADBODBTRC に YES を指定していても,HADB
ODBC ドライバトレース情報は出力されません。
• この環境変数を省略した場合
• 不正なフォルダを指定した場合
• 238 バイト以上のパス名を指定した場合
10
ADBODBTRCLV
HADB ODBC ドライバトレース情報を出力する際のトレースレベルを指定しま
す。この環境変数には,次のどちらかを指定してください。
• 1:トレースレベル 1 とする場合に指定します。
• 2:トレースレベル 2 とする場合に指定します。
トレースレベルについては,「13.4.1 トレースレベルとは」を参照してください。
この環境変数を省略した場合,または不正な値を指定した場合は,1 が仮定され
ます。
11
ADBODBAPMODE
この環境変数には,HADB ODBC ドライバのアプリケーションモードを指定し
ます。通常,この環境変数を指定する必要はありません。
この環境変数の指定値によって HADB ODBC ドライバの処理が変わります。
• ACCESS:ODBC3.5 の規格ではなく,Microsoft Access 互換モードで動作
します。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
54
項番
環境変数
設定する値
Microsoft Access を使用して HADB サーバにアクセスする場合に指定しま
す。この環境変数を指定すると,検索結果が#Deleted となる,エラーが発生
するなどの現象を回避できることがあります。
• NORMAL:通常どおり動作します。
この環境変数を省略した場合,または不正な値を指定した場合は,NORMAL が
仮定されます。
2.3.2 Linux 版の HADB クライアントの場合
Linux 版の HADB クライアントで次の表に示す環境変数を設定してください。環境変数の設定は HADB
クライアントを管理する OS ユーザが実行します。
環境変数に設定した値が HADB クライアント使用時のシェルで有効になるようにしてください。設定方法
については,シェルのマニュアルを参照してください。
表 2‒2 環境変数に設定する値
項番
環境変数
設定する値
1
LANG
この環境変数には,OS の文字コードを指定します。HADB サーバの環境変数
LANG の設定値と同じにしてください。
2
LD_LIBRARY_PATH
この環境変数には,次に示すディレクトリを追加してください。
• $ADBCLTDIR/client/lib
3
PATH
この環境変数には,次に示すディレクトリを追加してください。
• $ADBCLTDIR/client/bin
4
TZ
この環境変数には,HADB クライアントをインストールするマシンのタイムゾー
ンを設定します。
なお,うるう秒対応のタイムゾーンは設定しないでください。
5
ADBCLTDIR
この環境変数には,クライアントディレクトリの絶対パスを指定します。
パスの最初の 1 文字目は必ず/(スラッシュ)で始めてください。
6
ADBCLTLANG
この環境変数には,HADB クライアントで使用する文字コードを指定します。
HADB サーバで使用する文字コードと同じ文字コードを指定してください。
HADB サーバの環境変数 ADBLANG で指定した文字コードと同じ文字コード
を指定します。
• HADB サーバで Unicode(UTF-8)を使用する場合
この環境変数に UTF8 を指定してください。
• HADB サーバで Shift-JIS を使用する場合
この環境変数に SJIS を指定してください。
7
ADBMSGLOGSIZE
この環境変数には,1 ファイル当たりのクライアントメッセージログファイルの
最大容量をメガバイト単位で指定します。指定できる範囲は 1〜2,000 です。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
55
項番
環境変数
設定する値
HADB クライアントには,4 つのクライアントメッセージログファイルが作成
されます。この環境変数を省略した場合,1 つ当たりのクライアントメッセージ
ログファイルの最大容量は 16 メガバイトになります。
なお,1 つのクライアントディレクトリから複数のクライアントプロセスを起動
する場合,この環境変数の指定値は必ず同じ値を指定してください。異なる値で
複数のクライアントプロセスを動作させた場合,クライアントメッセージログ
ファイルが壊れるおそれがあります。
8
CLASSPATH
この環境変数には,次に示す JDBC ドライバの絶対パスを指定してください。
• $ADBCLTDIR/client/lib/adbjdbc.jar
9
ADBSQLNULLCHAR
この環境変数には,adbsql コマンドの検索結果にナル値がある場合に,ナル値
を表示する文字列(ナル値表示文字列)を指定します。0〜32 バイトの文字列を
指定できます。0 バイトの文字列を指定した場合は,ナル値の表示は空白になり
ます。
この環境変数を省略した場合,ナル値は*(アスタリスク)で表示されます。
検索データ中に,アスタリスクがある場合や,ナル値を任意の文字で出力したい
場合に,この環境変数を指定してください。
なお,マルチバイト文字を指定すると,検索結果の表示が乱れることがあります。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
56
2.4 クライアント定義の作成
クライアント定義を指定して HADB クライアントの稼働環境を設定します。クライアント定義の作成は
HADB クライアントを管理する OS ユーザが実行します。
2.4.1 クライアント定義の作成方法
クライアント定義の作成手順を次に示します。
手順
1. %ADBCLTDIR%\sample\conf\に格納されているクライアント定義のひな形ファイル
(client.def※)を,%ADBCLTDIR%\conf\にコピーします。
注※ Linux 版の HADB クライアントの場合は,$ADBCLTDIR/sample/conf/client.def になり
ます。
2. コピーしたクライアント定義のファイル(%ADBCLTDIR%\conf\client.def※)をテキストエディ
タで開いてください。
注※ Linux 版の HADB クライアントの場合は,$ADBCLTDIR/conf/client.def になります。
3. クライアント定義の各オペランドを指定してください。オペランドの詳細については,「2.4.2 ク
ライアント定義のオペランドの説明」を参照してください。
4. クライアント定義を作成後,ファイルを上書きしてください。ファイル名は client.def のままにし
てください。
クライアント定義ファイルのパーミッションは,HADB クライアントを管理する OS ユーザに対してだ
け,読み込み権限と書き込み権限を設定するようにしてください。
クライアント定義に指定したオペランドの指定値は,コネクションハンドル割り当て時に KFAA50027-I
メッセージとしてクライアントメッセージログファイルに出力されます。
2.4.2 クライアント定義のオペランドの説明
クライアント定義の各オペランドについて説明します。
注意事項
クライアント定義の各オペランドの指定は,ODBC ドライバまたは CLI 関数を使用する場合に適
用されます。JDBC ドライバを使用する場合は適用されません。JDBC ドライバを使用する場合
は,システムプロパティ,ユーザプロパティ,または接続用の URL のプロパティで,クライアン
ト定義の各オペランドと同じ指定ができます。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
57
システムプロパティについては「5.3.3 システムプロパティの設定」を,ユーザプロパティにつ
いては「5.3.1(2)(d) 引数 info の指定内容(ユーザプロパティの指定)」を,接続用の URL のプ
ロパティについては「5.3.1(2)(a) 引数 url の指定内容(接続用の URL の指定)
」を参照してくだ
さい。
なお,adbsql コマンドで SQL 文を実行する場合は,クライアント定義の各オペランドの指定が適
用されます。
(1) 指定形式
システム構成に関するオペランド
set adb_clt_rpc_srv_host = HADBサーバのホスト名
〔set adb_clt_rpc_srv_port = HADBサーバのポート番号〕
〔set adb_clt_group_name = クライアントグループ名〕
APの状態監視に関するオペランド
〔set adb_clt_rpc_con_wait_time = HADBサーバへの接続処理の完了待ち時間〕
〔set adb_clt_rpc_sql_wait_time = HADBサーバからの応答待ち時間〕
〔set adb_clt_ap_name = AP識別子〕
性能に関するオペランド
〔set adb_clt_fetch_size = FETCH処理時の一括送信行数〕
〔set adb_dbbuff_wrktbl_clt_blk_num = ローカル作業表用バッファのページ数〕
〔set adb_sql_exe_max_rthd_num = 最大SQL処理リアルスレッド数〕
〔set adb_sql_exe_hashgrp_area_size = ハッシュグループ化領域サイズ〕
〔set adb_sql_exe_hashtbl_area_size = ハッシュテーブル領域サイズ〕
SQLに関するオペランド
〔set adb_sql_prep_delrsvd_use_srvdef = {Y|N}〕
〔set adb_clt_trn_iso_lv = {READ_COMMITTED|REPEATABLE_READ}〕
〔set adb_clt_trn_access_mode = {READ_WRITE|READ_ONLY}〕
〔set adb_clt_sql_text_out = {Y|N}〕
〔set adb_clt_sql_order_mode = {BYTE|ISO}〕
(2) オペランドの説明
(a) システム構成に関するオペランド
●adb_clt_rpc_srv_host = HADB サーバのホスト名
〜〈文字列〉((1〜255 バイト))
接続先の HADB サーバのホスト名を指定してください。ここで指定したホスト名は,HADB クライア
ントと HADB サーバ間の通信で使用します。
ホスト名は,ホスト名,ドメイン名,IP アドレスのどれかの形式で指定してください。
このオペランドは必ず指定してください。
コールドスタンバイ構成の場合は,HADB サーバと HADB クライアント間の通信で使用するエイリア
ス IP アドレスを指定してください。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
58
[マルチノード機能]
マルチノード機能を使用している場合,HADB サーバと HADB クライアント間の通信で使用する
エイリアス IP アドレスを指定してください。
●adb_clt_rpc_srv_port = HADB サーバのポート番号
〜〈整数〉((5,001〜65,535))《23,650》
HADB クライアントと HADB サーバ間の通信で使用する,HADB サーバのポート番号を指定してく
ださい。サーバ定義の adb_rpc_port オペランドで指定したポート番号を指定してください。
●adb_clt_group_name = クライアントグループ名
〜〈文字列〉((1〜30 バイト))
このクライアント定義を使用する AP が属するクライアントグループ名を指定します。サーバ定義の
adbcltgrp オペランドに指定したクライアントグループ名を指定してください。
このオペランドを省略した場合,このクライアント定義を使用する AP はクライアントグループに属し
ません。
また,adbcltgrp オペランドで指定していないクライアントグループ名を指定した場合,クライアント
グループに属していない AP と見なされます。
クライアントグループについては,マニュアル「HADB システム構築・運用ガイド」の「クライアン
トグループ機能」を参照してください。
(b) AP の状態監視に関するオペランド
●adb_clt_rpc_con_wait_time = HADB サーバへの接続処理の完了待ち時間
〜〈整数〉((1〜300))《300》(単位:秒)
HADB サーバへの接続処理の完了待ち時間を秒単位で指定します。ここで指定した待ち時間を超えて
も HADB サーバへの接続処理が完了しない場合,HADB サーバへの接続処理を中止し,AP にエラー
リターンします。
通常は,このオペランドを指定する必要はありません。HADB サーバがビジー状態で接続に時間が掛
かる場合に,タイムアウト時間を短くするときに指定してください。
●adb_clt_rpc_sql_wait_time = HADB サーバからの応答待ち時間
〜〈整数〉((0〜65,535))《0》(単位:秒)
HADB クライアントから HADB サーバに処理要求をしてから,応答が戻ってくるまでの待ち時間を秒
単位で指定します。ここで指定した待ち時間を超えても応答がない場合,AP にエラーリターンしま
す。HADB サーバでトランザクション処理中の場合,そのトランザクションはロールバックします。
処理時間が長い SQL を監視する場合などに,このオペランドを指定してください。「2.5 AP の無応
答状態への対策」を参照して,このオペランドに指定する待ち時間を決めてください。
なお,このオペランドを省略した場合,または 0 を指定した場合,待ち時間は設定されません。
●adb_clt_ap_name = AP 識別子
〜〈文字列〉((1〜30 バイト))《********》
HADB サーバに接続する AP の識別情報(AP 識別子)を指定します。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
59
ここで指定した AP 識別子は,コネクションの状態を表示するコマンド(adbls -d cnct)の実行結果,
メッセージ,および SQL トレース情報などに表示されます。どの AP が実行されているかを確認する
ときに必要な情報になります。
AP 識別子は環境変数 ADBCLTLANG の指定に基づいて認識されるため,文字コードに依存しない半
角英数字だけで構成される名称を指定することを推奨します。
(c) 性能に関するオペランド
●adb_clt_fetch_size = FETCH 処理時の一括送信行数
〜〈整数〉((1〜65,535))《1,024》
1 回の FETCH 処理で,HADB サーバから HADB クライアントに送信する検索結果の行数を指定しま
す。
このオペランドの指定値を大きくすると,1 回の FETCH 処理で送信する結果行数が多くなるため性能
向上が見込めますが,その分メモリが必要になります。
●adb_dbbuff_wrktbl_clt_blk_num = ローカル作業表用バッファのページ数
〜〈整数〉((5〜100,000,000))《サーバ定義の adb_dbbuff_wrktbl_clt_blk_num の値》
ローカル作業表用バッファのページ数を指定します。
通常,このオペランドは指定不要です。ローカル作業表を作成する SQL 文の実行時間を短縮したい場
合に,このオペランドを指定してください。詳細については,マニュアル「HADB システム構築・運
用ガイド」の「チューニング」の「バッファの見直しによる SQL 文の実行時間の短縮に関するチュー
ニング」を参照してください。
このオペランドの指定値の見積もりについては,マニュアル「HADB システム構築・運用ガイド」の
「ローカル作業表用バッファのページ数の見積もり」を参照してください。
留意事項を次に示します。
• このオペランドと,サーバ定義 adb_dbbuff_wrktbl_clt_blk_num オペランドを両方指定した場合
は,このオペランドの指定値が優先されます。
• このオペランドで指定したバッファは,SQL 処理リアルスレッドごとに,ローカル作業表を作成す
る SQL 文を実行したときだけ使用されます。ローカル作業表とは,リアルスレッドごとに作成され
る,リアルスレッド固有の作業表です。そのため,HADB サーバはリアルスレッドごとにこのオペ
ランドで指定したページ数分のローカル作業表バッファを確保します。ローカル作業表を作成する
SQL 文については,「3.8.2 SQL を実行した場合に作成される作業表について」を参照してくださ
い。
• このオペランドの指定を適用したコネクションについては,ローカル作業表用バッファのページ数
を adbmodbuff コマンドで変更できません。
• コネクションごとに適用されているローカル作業表用バッファのページ数は,adbls -d lbuf コマン
ドで確認できます。
●adb_sql_exe_max_rthd_num = 最大 SQL 処理リアルスレッド数
〜〈整数〉((0〜4,096))《サーバ定義の adb_sql_exe_max_rthd_num の値,またはグループで使用
できる処理リアルスレッドの最大数》
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
60
SQL 文の実行時に使用する処理リアルスレッド数の最大値を指定します。
サーバ定義の adb_sql_exe_max_rthd_num オペランドで指定した,最大 SQL 処理リアルスレッド数
を変更する場合にこのオペランドを指定します。
■クライアントグループ機能を使用していない場合
• このオペランドを省略した場合,サーバ定義の adb_sql_exe_max_rthd_num オペランドの指
定値が仮定されます。
• サーバ定義の adb_sql_exe_max_rthd_num オペランドの指定値より大きい値をこのオペラン
ドに指定した場合,このオペランドの指定は無視されます。このとき,サーバ定義の
adb_sql_exe_max_rthd_num オペランドの指定値が仮定されます。
■クライアントグループ機能を使用している場合
• このオペランドを省略した場合,グループで使用できる処理リアルスレッドの最大数が仮定され
ます。
• グループで使用できる処理リアルスレッドの最大数より大きい値をこのオペランドに指定した場
合,このオペランドの指定は無視されます。このとき,グループで使用できる処理リアルスレッ
ドの最大数が仮定されます。
クライアントグループ機能については,マニュアル「HADB システム構築・運用ガイド」の「ク
ライアントグループ機能」を参照してください。
このオペランドを指定する場合は,マニュアル「HADB システム構築・運用ガイド」の「サーバ定義
のオペランドの内容」の adb_sql_exe_max_rthd_num オペランドの説明を参照してください。
●adb_sql_exe_hashgrp_area_size = ハッシュグループ化領域サイズ
〜〈整数〉((0,4〜1,000,000))《サーバ定義の adb_sql_exe_hashgrp_area_size の値》(単位:キ
ロバイト)
ハッシュグループ化領域の大きさをキロバイト単位で指定します。
サーバ定義の adb_sql_exe_hashgrp_area_size オペランドで指定した,ハッシュグループ化領域サイ
ズを変更する場合にこのオペランドを指定します。
このオペランドを指定する場合は,マニュアル「HADB システム構築・運用ガイド」の「サーバ定義
のオペランドの内容」の adb_sql_exe_hashgrp_area_size オペランドの説明を参照してください。
●adb_sql_exe_hashtbl_area_size = ハッシュテーブル領域サイズ
〜〈整数〉((0〜4,194,304))《サーバ定義の adb_sql_exe_hashtbl_area_size の値》(単位:メガバ
イト)
ハッシュテーブル領域サイズをメガバイト単位で指定します。
サーバ定義の adb_sql_exe_hashtbl_area_size オペランドで指定した,ハッシュグループ化領域サイ
ズを変更する場合にこのオペランドを指定します。
このオペランドを指定する場合は,マニュアル「HADB システム構築・運用ガイド」の「サーバ定義
のオペランドの内容」の adb_sql_exe_hashtbl_area_size オペランドの説明を参照してください。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
61
なお,このオペランドの指定値がサーバ定義の adb_sql_exe_hashtbl_area_size オペランドの指定値
より大きい場合は,サーバ定義の指定値が仮定されます。また,このオペランドを省略した場合も,
サーバ定義の指定値が仮定されます。
(d) SQL に関するオペランド
●adb_sql_prep_delrsvd_use_srvdef={Y | N}
サーバ定義の adb_sql_prep_delrsvd_words オペランドの指定に従って予約語を削除するかどうかを
指定します。
削除される予約語については,サーバ定義の adb_sql_prep_delrsvd_words オペランドの指定を確認
してください。
Y:
サーバ定義の adb_sql_prep_delrsvd_words オペランドの指定を有効にします(サーバ定義の
adb_sql_prep_delrsvd_words オペランドに指定した予約語を削除します)。
N:
サーバ定義の adb_sql_prep_delrsvd_words オペランドの指定を無効にします(サーバ定義の
adb_sql_prep_delrsvd_words オペランドに指定した予約語は削除されません)。
●adb_clt_trn_iso_lv = {READ_COMMITTED | REPEATABLE_READ}
適用するトランザクション隔離性水準を指定します。トランザクション隔離性水準については,マニュ
アル「HADB システム構築・運用ガイド」の「HADB がサポートしているトランザクション隔離性
水準」を参照してください。
READ_COMMITTED:
トランザクション隔離性水準に READ COMMITTED を適用します。
REPEATABLE_READ:
トランザクション隔離性水準に REPEATABLE READ を適用します。
このオペランドを省略した場合,サーバ定義の adb_sys_trn_iso_lv オペランドに指定したトランザク
ション隔離性水準が適用されます。
●adb_clt_trn_access_mode = {READ_WRITE | READ_ONLY}
トランザクションアクセスモードを指定します。トランザクションアクセスモードについては,マニュ
アル「HADB システム構築・運用ガイド」の「トランザクションアクセスモード」を参照してくださ
い。
READ_WRITE:
トランザクションアクセスモードを読み書き可能モードにします。この場合,トランザクションは
読み書き可能トランザクションになり,すべての SQL 文を実行できます。
READ_ONLY:
トランザクションアクセスモードを読み取り専用モードにします。この場合,トランザクションは
読み取り専用トランザクションになるため,更新系 SQL および定義系 SQL は実行できません。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
62
なお,ここで設定したトランザクションアクセスモードを,次のコネクション属性の設定で変更するこ
とができます。
• ODBC 関数の場合:SQLSetConnectAttr または SQLSetConnectAttrW
• CLI 関数の場合:a_rdb_SQLSetConnectAttr()
このオペランドおよびコネクション属性の両方のトランザクションアクセスモードの指定を省略した場
合,トランザクションアクセスモードは読み書き可能モードになります。
[マルチノード機能]
マルチノード機能を使用している場合,読み取り専用トランザクションは,マスタノードだけでな
くスレーブノードに対しても処理が割り当てられます。スレーブノードのリソースを活用したい場
合は,このオペランドに READ_ONLY を指定することを推奨します。
ただし,マルチノード機能を使用している場合は,読み書き可能トランザクションと,読み取り専
用トランザクションを同時に実行できません。また,一部のコマンドと,読み取り専用トランザク
ションを同時に実行できません。
そのため,データを更新したい場合や,読み取り専用トランザクションと同時に実行できないコマ
ンドを実行したい場合は,読み取り専用トランザクションが実行されていない状態にする必要があ
ります。adbchgsrvmode コマンドで,HADB サーバの稼働モードをオフラインモードに変更する
などしてください。
●adb_clt_sql_text_out ={Y | N}
HADB クライアントが発行した SQL 文を,クライアントメッセージログファイルおよびサーバメッ
セージログファイルに出力するかどうかを指定します。
なお,出力される各 SQL 文の長さの上限は 2,048 バイトです。
Y:
SQL 文をクライアントメッセージログファイルおよびサーバメッセージログファイルに出力します。
N:
SQL 文をクライアントメッセージログファイルおよびサーバメッセージログファイルに出力しませ
ん。
サーバ定義の adb_sql_text_out オペランドとの関係を次の表に示します。
表 2‒3 サーバ定義の adb_sql_text_out オペランドとの関係
サーバ定義の adb_sql_text_out オペランドの
指定
クライアント定義の adb_clt_sql_text_out オペランドの指定
Y
N
Y
◎
○
N
◎
×
(凡例)
◎:SQL 文をサーバメッセージログファイルおよびクライアントメッセージログファイルの両方に出力します。
○:SQL 文をサーバメッセージログファイルにだけ出力します。
×:SQL 文をどちらのメッセージログファイルにも出力しません。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
63
また,このオペランドを指定すると,トランザクションの正常終了を示す KFAA81002-I メッセージ
がサーバメッセージログファイルに出力されるようになります。クライアントメッセージログファイル
には出力されません。
●adb_clt_sql_order_mode = {BYTE | ISO}
ORDER BY 句を指定した SELECT 文の文字データの並び替え順序を指定します。
BYTE:
文字データをバイトコード順に並び替えます。
ISO:
文字データをソートコード順(ISO/IEC14651 準拠)に並び替えます。
ただし,環境変数 ADBCLTLANG に SJIS を指定した場合は,このオペランドに ISO は指定でき
ません。
なお,文字データの並び替え順序は,サーバ定義 adb_sql_order_mode オペランド,およびコネクショ
ン属性でも指定できます。それぞれ指定した場合は,次の表に示す優先順位に従って指定が決まります
(優先順位の番号が小さいほど,優先順位が高くなります)。
表 2‒4 文字データの並び替え順序の優先順位
優先順位
文字データの並び替え順序の指定個所
1
コネクション属性
2
クライアント定義 adb_clt_sql_order_mode オペランド
3
サーバ定義 adb_sql_order_mode オペランド
[説明]
例えば,クライアント定義 adb_clt_sql_order_mode オペランドに BYTE を指定し,サーバ定義 adb_sql_order_mode
オペランドに ISO を指定した場合,AP から実行する SELECT 文(ORDER BY 句を指定)には,BYTE が適用されます。
なお,表中のすべての個所で指定を省略した場合は,BYTE が仮定されます。
(3) オペランドの指定規則
オペランドの指定規則は,サーバ定義と同じです。サーバ定義の指定規則については,マニュアル
「HADB システム構築・運用ガイド」の「サーバ定義の文法規則」を参照してください。
2.4.3 クライアント定義変更時の注意事項
クライアント定義の指定を変更する場合は,該当するクライアント定義ファイルを使用している AP を
HADB サーバから切り離したあとに行ってください。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
64
2.4.4 クライアント定義の選択
CLI 関数の a_rdb_SQLAllocConnect()の引数 ClientDefPath に,クライアント定義ファイルのパスを指
定できます。クライアント定義を複数作成しておき,使用するクライアント定義ファイルをコネクション
ハンドルの割り当て時に選択できます。
なお,引数 ClientDefPath の指定を省略した場合,%ADBCLTDIR%\conf\client.def※が指定されたと
仮定されます。a_rdb_SQLAllocConnect()については,「15.2.1 a_rdb_SQLAllocConnect()(コネク
ションハンドルの割り当て)」を参照してください。
注※ Linux 版の HADB クライアントの場合は,$ADBCLTDIR/conf/client.def になります。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
65
2.5 AP の無応答状態への対策
通信障害,瞬断を含む一時的な障害,またはディスク障害などによって,AP が無応答状態になることが
あります。無応答状態の AP が発生した場合,その影響によってほかの AP やコマンドの処理が停滞する
ことがあります。
そこで,無応答状態の AP が発生したときに,その影響をなるべく小さくするために,クライアント定義
で次に示すオペランドを指定してください。
• adb_clt_rpc_sql_wait_time オペランド
このオペランドには,HADB クライアントから HADB サーバに処理要求をしてから,応答が戻ってくる
までの待ち時間を指定します。ここで指定した待ち時間を超えても応答がない場合,処理中のトランザク
ションをロールバックしたあとに,HADB サーバとの接続を切り離します。AP には-732 の SQLCODE
を返却します。
adb_clt_rpc_sql_wait_time オペランドによる待ち時間の監視イメージを次の図に示します。
図 2‒3 adb_clt_rpc_sql_wait_time オペランドによる待ち時間の監視イメージ
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
66
[説明]
HADB クライアントから HADB サーバに処理要求をしてから,応答が戻ってくるまでの待ち時間を監
視しています。例えば,adb_clt_rpc_sql_wait_time オペランドに 600 秒を指定した場合,各監視区
間に対して 600 秒の待ち時間が設定されます。したがって,処理時間がいちばん長い SQL の処理時間
を目安にして,待ち時間を指定します。待ち時間には,AP が無応答状態になった可能性が高いと考え
られる時間を指定してください。
adb_clt_rpc_sql_wait_time オペランドについては,「2.4.2 クライアント定義のオペランドの説明」を
参照してください。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
67
2.6 HADB クライアントのバージョンアップ
HADB クライアントのバージョンアップ方法について説明します。
2.6.1 HADB クライアントのバージョンアップ前に実施すること
バージョンアップ前に,次の内容を必ず実行してください。
(1) 環境変数の確認
HADB クライアントをバージョンアップすると,環境変数の値が変更になることがあります。詳細は,
「2.3 環境変数の設定」を参照してください。
(2) クライアント定義の確認
HADB クライアントをバージョンアップすると,クライアント定義のデフォルト値が変更されることがあ
ります。クライアント定義の各オペランドをデフォルト値で設定している場合は,「2.4.2 クライアント
定義のオペランドの説明」を参照して,変更がないかどうかを確認してください。
また,バージョン 03-00 以降では,クライアント定義の次のオペランドは指定できません。次のオペラン
ドを指定している場合は削除してください。
• adb_clt_rpc_open_wait_time
(3) クライアントディレクトリのバックアップ
HADB クライアントをバージョンアップする前に,クライアントディレクトリのバックアップを取得して
ください。
取得したバックアップは,新バージョンの動作確認後に削除してください。
2.6.2 バージョンアップ時の注意事項
HADB クライアントのバージョンアップ時の注意事項について説明します。
1. バージョンアップをしているときに,OS ユーザを変更しないでください。正しくバージョンアップで
きないことがあります。
2. バージョンアップをしているときに,環境変数 ADBCLTLANG に設定した値は変更しないでくださ
い。正しくバージョンアップできないことがあります。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
68
2.6.3 バージョンアップ手順
HADB クライアントをバージョンアップする手順を次に示します。
(1) HADB クライアント(Windows 版)のバージョンアップ
HADB クライアントのバージョンアップは,HADB クライアントを管理する OS ユーザが実行します。
次の手順に従って,HADB クライアントをバージョンアップしてください。
手順
1. HADB クライアントを管理する OS ユーザでログインします。
2. インストール媒体に格納されている zip 形式ファイルを任意のフォルダにコピーします。
3. 環境変数 ADBCLTDIR に指定したクライアントディレクトリ下に,zip 形式ファイルを展開します。
なお,クライアントディレクトリ下以外に zip 形式ファイルを展開した場合は,3.のあとに次の手
順を実施してください。
・環境変数 ADBCLTDIR に指定している,クライアントディレクトリのパスを変更します。
(2) HADB クライアント(Linux 版)のバージョンアップ
次の手順に従って,HADB クライアントをバージョンアップしてください。
手順
1. HADB クライアントを管理する OS ユーザでログインします。
2. インストールデータ(tar.gz ファイル)および adbinstall コマンドを格納するディレクトリを作成
します。格納するディレクトリのパス名を,/home/osuser01/client とした場合の実行例を次に示
します。
mkdir /home/osuser01/client
3. HADB クライアントを管理する OS ユーザが書き込みできるように,インストールデータ(tar.gz
ファイル)および adbinstall コマンドを格納するディレクトリに対して,書き込み権限を付与しま
す。格納するディレクトリのパス名を,/home/osuser01/client とした場合の実行例を次に示しま
す。
chmod 755 /home/osuser01/client
4. インストール媒体に格納されている tar.gz 形式ファイルおよびインストールコマンド(adbinstall
コマンド)を任意のディレクトリにコピーします。任意のディレクトリのパス名を,/home/
osuser01/client とした場合の実行例を次に示します。
cp /media/hitachi_advanced_data_binder_client-$VER.tar.gz /home/osuser01/client
cp /media/adbinstall /home/osuser01/client
$VER は HADB のバージョンおよびリリース番号になります。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
69
5. 4.でコピーしたインストールコマンド(adbinstall コマンド)に HADB クライアントを管理する
OS ユーザの実行権限を付与するため,次に示す OS のコマンドを実行してください。
chmod 777 /home/osuser01/client/adbinstall
6. インストールコマンド(adbinstall コマンド)を実行します。また,クライアントディレクトリの
パスには任意のディレクトリ,または環境変数 ADBCLTDIR に指定したパスを指定します。
なお,adbinstall コマンドの-c オプションで指定するディレクトリには,必ず HADB クライアン
トを管理する OS ユーザが書き込みできるディレクトリを指定してください。HADB クライアント
を管理する OS ユーザが書き込みできないディレクトリを指定した場合,KFAA91553-E メッセー
ジが出力されてエラーになります。
インストールコマンド(adbinstall コマンド)とインストールデータ(tar.gz ファイル)を格納す
るディレクトリに,HADB クライアントを管理する OS ユーザが書き込みできない場合も,
KFAA91553-E メッセージが出力されてエラーになります。
任意のディレクトリのパス名を,/home/osuser01/clientdir とした場合の実行例を次に示します。
/home/osuser01/client/adbinstall -c /home/osuser01/clientdir
また,環境変数 ADBCLTDIR に指定したパス以外にクライアントディレクトリのパスを指定した
場合は,このあとに次の手順を実施してください。
・環境変数 ADBCLTDIR に指定している,クライアントディレクトリのパスを変更します。
参考
adbinstall コマンドの実行方法および規則については,マニュアル「HADB コマンドリファ
レンス」の「adbinstall(HADB サーバおよび HADB クライアントのインストール)」を参照
してください。
2.6.4 バージョンアップ後に実施すること
HADB クライアントのバージョンアップが正しく実施できたか次の手順で確認してください。
(1) HADB クライアント(Windows 版)
次に示すファイルのプロパティで,ファイルバージョンが新しいバージョンになっていることを確認して
ください。
• Windows が 64 ビット版の場合:%ADBCLTDIR%client\bin\adbclt.dll
• Windows が 32 ビット版の場合:%ADBCLTDIR%client\bin\adbclt32.dll
(2) HADB クライアント(Linux 版)
次に示す手順で正しくバージョンアップが実施できたか確認してください。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
70
手順
1. adbsql コマンドを実行して HADB サーバに接続します。
2. クライアントのメッセージログファイルに出力される KFAA70003-I メッセージに,新しいバー
ジョンが出力されていることを確認してください。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
71
2.7 HADB クライアントのバージョンダウン(旧バージョンに戻す方法)
ここでは,HADB クライアントをバージョンダウンする方法について説明します。
HADB サーバをバージョンダウンした場合は,HADB クライアントもバージョンダウンしてください
(HADB サーバと HADB クライアントのバージョンを合わせてください)。
参考
HADB サーバのバージョンダウンについては,マニュアル「HADB システム構築・運用ガイド」
の「システム構築」の「HADB サーバのバージョンダウン(旧バージョンに戻す方法)
」を参照し
てください。
2.7.1 バージョンダウン前に実施すること
HADB クライアントをバージョンダウンする前に,次に示す指定値を確認してください。
• 環境変数
• クライアント定義
バージョンアップした際に各指定値を変更している場合は,バージョンダウンするときに,旧バージョン
の指定値に戻す必要があります。
2.7.2 バージョンダウン時の注意事項
HADB クライアントをバージョンダウンするときの注意事項について説明します。
1. バージョンダウンをしているときに,OS ユーザを変更しないでください。正しくバージョンダウンで
きないことがあります。
2. バージョンダウンをしているときに,環境変数 ADBCLTLANG に設定した値は変更しないでくださ
い。正しくバージョンダウンできないことがあります。
2.7.3 バージョンダウン手順
HADB クライアントをバージョンダウンする手順を次に示します。
HADB クライアントのバージョンダウンは,HADB クライアントを管理する OS ユーザが実行します。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
72
(1) HADB クライアント(Windows 版)のバージョンダウン
次の手順に従って,HADB クライアントをバージョンダウンしてください。
手順
1. HADB クライアントを管理する OS ユーザでログインします。
2. インストール媒体に格納されている zip 形式ファイルを,任意のフォルダにコピーします。
3. 環境変数 ADBCLTDIR に指定したクライアントディレクトリ下に,zip 形式ファイルを展開します。
なお,クライアントディレクトリ下以外に zip 形式ファイルを展開した場合は,手順 3.のあとに次の手
順を実施してください。
• 環境変数 ADBCLTDIR に指定している,クライアントディレクトリのパスを変更します。
(2) HADB クライアント(Linux 版)のバージョンダウン
次の手順に従って,HADB クライアントをバージョンダウンしてください。
手順
1. HADB クライアントを管理する OS ユーザでログインします。
2. インストールデータ(tar.gz ファイル)および adbinstall コマンドを格納するディレクトリを作成し
ます。
格納するディレクトリのパス名を,/home/osuser01/client とした場合の実行例を次に示します。
mkdir /home/osuser01/client
3. HADB クライアントを管理する OS ユーザが書き込みできるように,インストールデータ(tar.gz ファ
イル)および adbinstall コマンドを格納するディレクトリに対して,書き込み権限を付与します。
格納するディレクトリのパス名を,/home/osuser01/client とした場合の実行例を次に示します。
chmod 755 /home/osuser01/client
4. インストール媒体に格納されているインストールデータ(tar.gz ファイル)およびインストールコマン
ド(adbinstall コマンド)を任意のディレクトリにコピーします。
任意のディレクトリのパス名を,/home/osuser01/client とした場合の実行例を次に示します。
cp /media/hitachi_advanced_data_binder_client-$VR.tar.gz /home/osuser01/client
cp /media/adbinstall /home/osuser01/client
下線部分は,CD-ROM ファイルシステムのマウントディレクトリ名です。環境によって異なります。
また,$VR は,HADB のバージョンおよびリリース番号を示します。
5. 手順 4.でコピーしたインストールコマンド(adbinstall コマンド)に HADB クライアントを管理する
OS ユーザの実行権限を付与するため,次に示す OS のコマンドを実行してください。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
73
chmod 777 /home/osuser01/client/adbinstall
6. インストールコマンド(adbinstall コマンド)を実行します。また,クライアントディレクトリのパス
には任意のディレクトリ,または環境変数 ADBCLTDIR に指定したパスを指定します。
なお,adbinstall コマンドの-c オプションで指定するディレクトリには,必ず HADB クライアントを
管理する OS ユーザが書き込みできるディレクトリを指定してください。HADB クライアントを管理
する OS ユーザが書き込みできないディレクトリを指定した場合,KFAA91553-E メッセージが出力
されてエラーになります。
インストールコマンド(adbinstall コマンド)とインストールデータ(tar.gz ファイル)を格納する
ディレクトリに,HADB クライアントを管理する OS ユーザが書き込みできない場合も,KFAA91553E メッセージが出力されてエラーになります。
任意のディレクトリのパス名を,/home/osuser01/clientdir とした場合の実行例を次に示します。
/home/osuser01/client/adbinstall -c /home/osuser01/clientdir
また,環境変数 ADBCLTDIR に指定したパス以外にクライアントディレクトリのパスを指定した場合
は,このあとに次の手順を実施してください。
• 環境変数 ADBCLTDIR に指定している,クライアントディレクトリのパスを変更します。
参考
adbinstall コマンドの実行方法および規則については,マニュアル「HADB コマンドリファ
レンス」の「adbinstall(HADB サーバおよび HADB クライアントのインストール)」を参照
してください。
2.7.4 バージョンダウン後に実施すること
HADB クライアントのバージョンダウンが正しく実施できたかについて,次の手順で確認してください。
(1) HADB クライアント(Windows 版)
次に示すファイルのプロパティで,ファイルバージョンが旧バージョンになっていることを確認してくだ
さい。
• Windows が 64 ビット版の場合:%ADBCLTDIR%client\bin\adbclt.dll
• Windows が 32 ビット版の場合:%ADBCLTDIR%client\bin\adbclt32.dll
(2) HADB クライアント(Linux 版)
次に示す手順で正しくバージョンダウンが実施できたか確認してください。
手順
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
74
1. adbsql コマンドを実行して HADB サーバに接続します。
2. クライアントメッセージログファイルに出力される KFAA70003-I メッセージに,旧バージョンが出
力されていることを確認してください。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
75
2.8 クライアントマシンの OS の時刻変更
ここでは,HADB クライアントがインストールされているクライアントマシンの OS の時刻を変更する場
合の手順について説明します。
クライアントマシンの OS の時刻を変更する場合,必ず「2.8.1 注意事項(OS の時刻変更)
」を読んだあ
とで,次のどちらかに従って OS の時刻を変更してください。
• 「2.8.2 クライアントマシンの OS の時刻を進める方法」
• 「2.8.3 クライアントマシンの OS の時刻を戻す方法」
2.8.1 注意事項(OS の時刻変更)
クライアントマシンの OS の時刻を変更する場合の注意事項を,次に示します。
• クライアントマシンの OS の時刻を変更する場合,必ず HADB サーバに接続するすべての AP が停止
しているときに実施してください。HADB サーバに接続中の AP がある場合に,クライアントマシン
の OS の時刻を変更してしまうと,HADB サーバおよび HADB クライアントが予期しない動作をする
おそれがあります。
• クライアントマシンの OS の時刻を変更した場合,次に示す時刻表示などは,変更後の OS の時刻にな
ります。そのため,時刻を意識する AP がある場合は,影響を受けるおそれがあります。
• コマンドを実行した時刻
• クライアントメッセージログファイル内のメッセージログのタイムスタンプ
2.8.2 クライアントマシンの OS の時刻を進める方法
「2.8.1 注意事項(OS の時刻変更)
」を読んだあとで,次に示す手順に従って,HADB クライアントがイ
ンストールされているクライアントマシンの OS の時刻を進めてください。
1. HADB サーバに接続する AP を停止する
HADB クライアントから,HADB サーバに接続するすべての AP を停止してください。
2. クライアントマシンの OS の時刻を進める
すべての AP を停止したら,HADB クライアントがインストールされているクライアントマシンの OS
の時刻を進めてください。
3. HADB サーバに接続する AP を開始する
クライアントマシンの OS の時刻を進めたら,停止した AP を開始してください。
これで,クライアントマシンの OS の時刻を進められます。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
76
2.8.3 クライアントマシンの OS の時刻を戻す方法
「2.8.1 注意事項(OS の時刻変更)
」を読んだあとで,次に示す手順に従って,HADB クライアントがイ
ンストールされているクライアントマシンの OS の時刻を戻してください。
1. HADB サーバに接続する AP を停止する
HADB クライアントから,HADB サーバに接続するすべての AP を停止してください。
2. クライアントマシンの OS の時刻を戻す
すべての AP を停止したら,HADB クライアントがインストールされているクライアントマシンの OS
の時刻を戻してください。
3. HADB サーバに接続する AP を開始する
クライアントマシンの OS の時刻を戻したら,停止した AP を開始してください。
これで,クライアントマシンの OS の時刻を戻せます。
2. HADB クライアントの環境設定
Hitachi Advanced Data Binder AP 開発ガイド
77
第 2 編 AP 作成編【共通】
3
AP の性能向上に関する設計
この章では,AP の性能向上に関する設計について説明します。
Hitachi Advanced Data Binder AP 開発ガイド
78
3.1 表の検索方式
表の検索方式には,次の 3 つがあります。
• テーブルスキャン
• インデクススキャン
• キースキャン
表の検索方式は,HADB が自動的に決定します。SQL 文を実行した結果,どの検索方式が適用されたか
を,アクセスパスで確認することができます。アクセスパスについては,次に示す個所を参照してください。
• アクセスパスの確認方法
「4.1.2 アクセスパスを確認するには」を参照してください。
• アクセスパスに表示される内容
「4.1.4(15) 表の検索方式」を参照してください。
参考
インデクス指定で表の検索方式を指定することができます。インデクス指定については,マニュア
ル「HADB SQL リファレンス」の「インデクス指定の指定形式および規則」を参照してください。
なお,ここでいう表とは,実表を意味しています。
3.1.1 テーブルスキャンとは
テーブルスキャンとは,B-tree インデクスおよびテキストインデクスを使用しないで表を検索する方式の
ことです。次の場合にテーブルスキャンが実行されます。
• B-tree インデクスおよびテキストインデクスが表に定義されていない場合
• B-tree インデクスおよびテキストインデクスを有効に利用できる探索条件が指定されていない場合
• インデクス指定に WITHOUT INDEX が指定されている場合
テーブルスキャンの例を次の図に示します。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
79
図 3‒1 テーブルスキャンの例
[説明]
探索条件中に指定されている C3 列はインデクス構成列ではないため,上記の SELECT 文を実行した
場合,B-tree インデクス IDX_C1C2 は使用されません。そのため,テーブルスキャンが実行されて,
データページ内のすべての行にアクセスします。
なお,表にレンジインデクスが定義されている場合,レンジインデクスが使用されることがあります。
参考
インデクス指定に,B-tree インデクスまたはテキストインデクスを使用しない指定をした場合,
テーブルスキャンが実行されます。
ポイント
テーブルスキャンが実行された場合は,表にレンジインデクスを定義することを推奨します。レン
ジインデクスが使用されることで性能が向上することがあります。レンジインデクスが使用される
条件については,「3.3 検索時に使用されるレンジインデクス」を参照してください。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
80
3.1.2 インデクススキャンとは
インデクススキャンとは,B-tree インデクスまたはテキストインデクスを使用して探索条件の評価を行
い,探索条件を満たす行をデータページから取り出す方式のことです。次の場合にインデクススキャンが
実行されます。
• B-tree インデクスまたはテキストインデクスが表に定義されていて,これらのインデクスを有効に利
用できる探索条件が指定されている場合
• 検索に使用する B-tree インデクスまたはテキストインデクスが,インデクス指定で指定されている
場合
インデクススキャンの例を次の図に示します。
図 3‒2 インデクススキャンの例
[説明]
B-tree インデクス IDX_C1C2 を使用して探索条件の評価を行い,C3 列の値を取り出すためにデータ
ページにアクセスします。
なお,表にレンジインデクスが定義されている場合,レンジインデクスも使用されることがあります。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
81
3.1.3 キースキャンとは
キースキャンとは,B-tree インデクスを使用して探索条件の評価を行い,探索条件を満たす行の列値をイ
ンデクスページから取り出す方式のことです。B-tree インデクスのインデクス構成列(キー)から列値を
直接取り出すため,参照するページ数を削減できます。ただし,次のどちらかの条件を満たす場合は,デー
タページを参照することがあります。
• 行を追加,更新,または削除したことがある表を検索する場合
• 文字列の末尾が半角空白であるデータを含む VARCHAR 型の列を検索する場合
SQL 文中に指定されているすべての列が,インデクス構成列である B-tree インデクスが定義されていて,
かつ次のどちらかの条件を満たす場合に,キースキャンが実行されます。
• B-tree インデクスが表に定義されていて,B-tree インデクスを有効に利用できる探索条件が指定され
ている場合
• 検索に使用する B-tree インデクスが,インデクス指定で指定されている場合
キースキャンの例を次の図に示します。
図 3‒3 キースキャンの例
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
82
[説明]
B-tree インデクス IDX_C1C2 を使用して探索条件の評価を行います。C1 列および C2 列の値をイン
デクスページから直接取り出すため,データページにはアクセスしません。
参考
テキストインデクスの場合は,キースキャンが実行されることはありません。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
83
3.2 検索時に使用される B-tree インデクスおよびテキストインデクス
B-tree インデクスおよびテキストインデクスは性能に大きな影響を及ぼすため,探索条件に合った B-tree
インデクスおよびテキストインデクスを定義する必要があります。
ここでは,検索時に使用される B-tree インデクスおよびテキストインデクスの決定方法と,検索時に使用
されるインデクスを確認する方法について説明します。
なお,この節では,インデクスと表記されている場合,B-tree インデクスおよびテキストインデクスの両
方を意味しています。
留意事項
• この節で説明しているインデクスの決定方法は,内部導出表の展開後の問合せ式,または探索条件
の等価変換によって変換された探索条件に対して適用されます。内部導出表の展開については,マ
ニュアル「HADB SQL リファレンス」の「内部導出表」を参照してください。探索条件の等価変
換機能については,
「3.9 探索条件の等価変換」を参照してください。
• 探索条件中に指定した値式で,スカラ演算中に定数だけを指定している場合,そのスカラ演算を定
数と見なすことがあります。定数と等価なスカラ演算については,マニュアル「HADB SQL リ
ファレンス」の「値式の指定形式および規則」の表「定数と等価な値式となる条件」を参照してく
ださい。
• インデクス指定がある場合,ここで説明するインデクスの優先順位や選択規則とは関係なく,イン
デクス指定に従って使用されるインデクスが決定されます。インデクス指定については,マニュア
ル「HADB SQL リファレンス」の「インデクス指定の指定形式および規則」を参照してください。
• 表を結合する際,表の結合方式によっては結合条件の評価時にインデクスを使用しないことがあり
ます。表の結合方式については,「3.5 表の結合方式」を参照してください。
3.2.1 検索時に使用されるインデクスの優先順位と選択規則
表に複数のインデクスが定義されている場合,WHERE 句の探索条件や,結合表の ON 探索条件に指定さ
れた条件に従って,使用されるインデクスが決定されます。
ここでは,検索時に使用されるインデクスの優先順位と選択規則について説明します。
(1) 検索時に使用されるインデクスの優先順位
探索条件に指定した述語が次の表に示す形式で指定されている場合に,表の検索時にインデクスが使用さ
れます。
また,表の検索時に使用されるインデクスは 1 つだけのため,表に複数のインデクスが定義されている場
合,次の表に示す優先順位に従って,使用されるインデクスが決定されます。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
84
表 3‒1 検索時に使用されるインデクスの優先順位
優先順位
1
インデクスの条件
この優先順位に該当する指定例(C1 はインデク
スが定義されている列)
= 条件中にすべてのインデクス構成列が指定されているユニー
クインデクス(B-tree インデクス)
"C1"=100
"C1"=100+?
"T1"."C1"=CAST("T2"."C1" AS INTEGER)
2
= 条件中にインデクス構成列が指定されている B-tree インデ
クス
"C1"=100
"C1"=100+?
"T1"."C1"=CAST("T2"."C1" AS INTEGER)
3
IS NULL 条件中にインデクス構成列が指定されている B-tree
インデクス
"C1" IS NULL
4
次のすべての条件を満たす LIKE 述語中に,インデクス構成列
が指定されている B-tree インデクス
"C1" LIKE 'ABC%'
• パターン文字列に定数を指定している
"C1" LIKE 'AB\%C%' ESCAPE '\'
• 特殊文字%を指定した前方一致検索である
エスケープ文字を指定する場合は,エスケープ文字を定数で指
定している必要があります。
5
次のすべての条件を満たす LIKE 述語中に,インデクス構成列
が指定されている B-tree インデクス
• パターン文字列に定数を指定している
• 優先順位 4 の指定方法以外の前方一致検索である
"C1" LIKE 'ABC__'
"C1" LIKE 'ABC%E'
"C1" LIKE 'AB\_C%E' ESCAPE '\'
エスケープ文字を指定する場合は,エスケープ文字を定数で指
定している必要があります。
パターン文字列に定数を指定した完全一致検索の LIKE 述語中
に,インデクス構成列が指定されている B-tree インデクス
エスケープ文字を指定する場合は,エスケープ文字を定数で指
定している必要があります。
パターン文字列にユーザ情報取得関数を指定した LIKE 述語中
に,インデクス構成列が指定されている B-tree インデクス
エスケープ文字を指定する場合は,エスケープ文字を定数で指
定している必要があります。
パターン文字列に?パラメタを指定した LIKE 述語中に,イン
デクス構成列が指定されている B-tree インデクス
エスケープ文字を指定する場合は,エスケープ文字を定数で指
定している必要があります。
エスケープ文字に?パラメタを指定した LIKE 述語中に,イン
デクス構成列が指定されている B-tree インデクス
パターン文字列は,定数,ユーザ情報取得関数,または?パラ
メタのどれかを指定している必要があります。
"C1" LIKE 'ABCDE'
"C1" LIKE 'AB\_CDE' ESCAPE '\'
"C1" LIKE CURRENT_USER
"C1" LIKE CURRENT_USER ESCAPE '\'
"C1" LIKE ?
"C1" LIKE ? ESCAPE '\'
"C1" LIKE 'AB\%C%' ESCAPE ?
"C1" LIKE CURRENT_USER ESCAPE ?
"C1" LIKE ? ESCAPE ?
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
85
優先順位
6
インデクスの条件
この優先順位に該当する指定例(C1 はインデク
スが定義されている列)
LIKE 述語中にインデクス構成列が指定されているテキストイ
"C1" LIKE 'ABC'
ンデクス※1
"C1" LIKE 'ABC%'
"C1" LIKE '%ABC%'
"C1" LIKE '%ABC'
"C1" LIKE ?
7
8
比較値に値指定だけを指定した IN 述語中に,インデクス構成
列が指定されている B-tree インデクス
"C1" IN (10,20,30)
比較値にスカラ演算を含む値指定だけを指定した IN 述語中
に,インデクス構成列が指定されている B-tree インデクス
"C1" IN (10,20,30+?)
BETWEEN 述語中にインデクス構成列が指定されている Btree インデクス
"C1" BETWEEN 20 AND 40
"T1"."C1" IN (CASE WHEN 100=? THEN 10
ELSE 20 END,30,40)
"C1" BETWEEN 20 AND 40+?
"T1"."C1" BETWEEN "T2"."C1"-6 MONTH
AND "T2"."C1"
9
2 つの比較述語を組み合わせた範囲条件に,インデクス構成列
が指定されている B-tree インデクス
"C1">=20 AND "C1"<=40
次の条件を満たす IN 述語中にインデクス構成列が指定されて
いる B-tree インデクス
"C1" IN (SELECT "C1" FROM "T2")
• 比較値に外への参照列を含まない副問合せを指定している
外への参照列を含まない副問合せを指定した=ANY 条件に,
インデクス構成列が指定されている B-tree インデクス
"C1"=ANY(SELECT "C1" FROM "T2")
外への参照列を含まない副問合せを指定した=SOME 条件に, "C1"=SOME(SELECT "C1" FROM "T2")
インデクス構成列が指定されている B-tree インデクス
10
>,>=,<,または<=の条件に,インデクス構成列が指定さ
れている B-tree インデクス
"C1">50
"C1"<=200
"C1">=50+?
"T1"."C1" <"T2"."C1"||'X'
11
12
比較値に列指定を含む IN 述語中に,インデクス構成列が指定
されている B-tree インデクス
"T1"."C1" IN (10,"T2"."C1")
論理演算子 OR を指定した条件に,インデクス構成列が指定
"C1"<20 OR "C1">40
されている B-tree
13
"T1"."C1" IN (10,"T2"."C1"+?,50)
インデクス※2
次のすべての条件を満たす LIKE 述語中に,インデクス構成列
が指定されている B-tree
インデクス※3
• パターン文字列に定数を指定している
"C1" LIKE '%BCD%'
"C1" LIKE '%B\_CD%' ESCAPE '\'
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
86
優先順位
インデクスの条件
この優先順位に該当する指定例(C1 はインデク
スが定義されている列)
• 前方一致以外の検索である
次の条件を満たす LIKE 述語中に,インデクス構成列が指定さ
れている B-tree インデクス
"T1"."C1" LIKE "T2"."C2" || '%'
• パターン文字列に列指定を含む値式を指定している
次の条件を満たす LIKE 述語中に,インデクス構成列が指定さ
れている B-tree インデクス
"C1" LIKE CURRENT_USER || '%'
• パターン文字列にスカラ演算を含む値式を指定している
次の条件を満たす LIKE 述語中に,インデクス構成列が指定さ
れている B-tree インデクス
• エスケープ文字に列指定を含む値式を指定している
次の条件を満たす LIKE 述語中に,インデクス構成列が指定さ
れている B-tree インデクス
"T1"."C1" LIKE 'A\%B@_C%'
ESCAPE "T2"."C1"
"C1" LIKE 'A\%B@_C%' ESCAPE CASE
WHEN 10=? THEN '\' ELSE '@' END
• エスケープ文字にスカラ演算を含む値式を指定している
注
• 複数列インデクスの場合,B-tree インデクスの第 1 構成列から順に,上記の表に示す優先順位が適
用されます。
• 基本的には,上記の表に示す優先順位に従って,使用されるインデクスが決まります。ただし,探
索条件の指定内容によっては,上記の表に示す優先順位では,有効な評価ができないことがありま
す。この場合,上記の表の優先順位に従わないインデクスが使用されることがあります。検索時に
実際に使用されたインデクスを確認したい場合は,「3.2.5 検索時に使用されるインデクスを確認
する方法」を参照してください。
注※1
次に示す形式のパターン文字列を指定した場合は,この条件に該当しません。
• パターン文字列に特殊文字の%だけを指定している場合
(例)"C1" LIKE '%'
• パターン文字列に空文字だけを指定している場合
(例)"C1" LIKE ''
• パターン文字列に特殊文字以外の文字を 2 文字以上連続して指定していない場合
(例)"C1" LIKE '%A%',"C1" LIKE '%A%B%'
• 一致値に指定した列と同じ表の列をパターン文字列に指定している場合
(例)"T1"."C1" LIKE "T1"."C2"
注※2
論理演算子 OR に含まれるすべての列は,選択対象となる B-tree インデクスのインデクス構成列に含
まれている必要があります。また,論理演算子 OR に指定される述語の数や条件の形式によっては,イ
ンデクスの優先順位が上下することがあります。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
87
注※3
LIKE 条件を指定するインデクス構成列のデータ型が可変長文字列型で,かつ次に示す形式のパターン
文字列の場合はこの条件に該当しません。
• 末尾に特殊文字%(パーセント)が指定されていない場合
(例 1)"C1" LIKE '%BCD'
(例 2)"C1" LIKE '%BCD_'
• 末尾の特殊文字%(パーセント)の前に半角空白,または特殊文字_(下線)が指定されている場合
(例 1)"C1" LIKE '%BCD△%'
(例 2)"C1" LIKE '%BCD_%'
(凡例)△:半角空白
(2) 検索時に使用されるインデクスの選択規則
検索時に使用されるインデクスは,「3.2.1(1) 検索時に使用されるインデクスの優先順位」で説明したイ
ンデクスの優先順位だけでは決まりません。ここで説明する条件なども加えて,使用されるインデクスが
総合的に決定されます。
(a) B-tree インデクスの選択規則
B-tree インデクスの選択規則を次の表に示します。
なお,選択規則は,1 番目の規則で判定できなければ 2 番目の規則を適用するというように,1 番目から
順に判定されます。
表 3‒2 B-tree インデクスの選択規則
選択規則
条件指定方法
1
ユニークインデクスのすべての列に=条件を指定している
2
B-tree インデクスの第 1 構成列にサーチ条件が指定されているインデクス同士の場合は,そのサーチ条件の
優先順位に従う
3
サーチ条件の数が多い方を優先する
4
キー条件の数が多い方を優先する
5
インデクス構成列数が少ない方を優先する(ただし,選択規則 1 に該当するインデクス同士の場合は,イン
デクス構成列数が多い方を優先する)
6
SQL 文上で前に指定された条件をサーチ条件に使用している方を優先する
7
作業表を作らない方を優先する
8
ユニークインデクスを優先する(ただし,サーチ条件が指定されていないインデクス同士の場合は,非ユ
ニークインデクスを優先する)
9
インデクスのキー長が短い方を優先する
10
「選択規則 1 から 9」以外は内部処理に依存して B-tree インデクスが選択される
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
88
サーチ条件とキー条件については,「3.4.1 B-tree インデクスによる評価方式」を参照してください。
(b) テキストインデクスの選択規則
テキストインデクスの選択規則を次の表に示します。
なお,選択規則は,1 番目の規則で判定できなければ 2 番目の規則を適用するというように,1 番目から
順に判定されます。
表 3‒3 テキストインデクスの選択規則
選択規則
条件指定方法
1
テキストインデクスで評価できる LIKE 述語の指定数が多い方を優先する
2
パターン文字列が長い方を優先する
3
インデクス構成列の定義長が短い方を優先する
4
「選択規則 1 から 3」以外は,内部処理に依存してインデクスが選択される
(c) 留意事項
• 取得したコスト情報などから,HADB がインデクスを有効に利用できないと判断したときは,ここで
説明した選択規則とは異なる扱いをすることがあります。
• WHERE 句の探索条件や,結合表の ON 探索条件に,否定の述語だけしか指定されていない場合など,
HADB がインデクスを有効に利用できないと判断したときは,インデクスが使用されないことがあり
ます。
3.2.2 検索時に使用されるインデクスの例
検索時に使用されるインデクスの例を説明します。
(1) 例 1(B-tree インデクス(単一列インデクス)の場合)
B-tree インデクスの定義例:
CREATE INDEX "IDX_C1"
ON "T1" ("C1")
IN "DBAREA01"
EMPTY
実行する SELECT 文の例:
SELECT "C1","C2","C3" FROM "T1"
WHERE "C1"=100
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
89
SELECT "C1","C2","C3" FROM "T1"
WHERE "C1">100 AND "C2"='U0100'
上記の SELECT 文を実行した場合,B-tree インデクス IDX_C1 が使用されます。
■B-tree インデクスが使用されないケース
次に示す場合は,B-tree インデクスは使用されません。
B-tree インデクスの定義例:
CREATE INDEX "IDX_C1"
ON "T1" ("C1")
IN "DBAREA01"
EMPTY
実行する SELECT 文の例:
SELECT "C1","C2","C3" FROM "T1"
WHERE "C1">100 OR "C2"='U0100'
OR 条件の場合,C1 列だけ(または C2 列だけ)に B-tree インデクスが定義されていても,その Btree インデクスは使用されません。そのため,上記の SELECT 文を実行した場合,B-tree インデクス
IDX_C1 は使用されません。
また,C1 列と C2 列の両方にそれぞれ B-tree インデクスが定義されていても,それらの B-tree イン
デクスは使用されません。
(2) 例 2(B-tree インデクス(複数列インデクス)の場合)
B-tree インデクスの定義例:
CREATE INDEX "IDX_C2C1"
ON "T1" ("C2","C1")
IN "DBAREA01"
EMPTY
実行する SELECT 文の例:
SELECT "C1","C2","C3" FROM "T1"
WHERE "C1"=100
SELECT "C1","C2","C3" FROM "T1"
WHERE "C2"='U0100'
SELECT "C1","C2","C3" FROM "T1"
WHERE "C1">100 AND "C2"='U0100'
SELECT "C1","C2","C3" FROM "T1"
WHERE "C1">100 OR "C2"='U0100'
上記の SELECT 文を実行した場合,B-tree インデクス IDX_C2C1 が使用されます。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
90
(3) 例 3(テキストインデクスの場合)
テキストインデクスの定義例:
CREATE INDEX "IDX_TXT_C1"
ON "T1" ("C1")
IN "DBAREA01"
EMPTY
INDEXTYPE TEXT
実行する SELECT 文の例:
SELECT "C1","C2","C3" FROM "T1"
WHERE "C1" LIKE '%XYZ%'
SELECT "C1","C2","C3" FROM "T1"
WHERE "C1" LIKE '%XYZ%' AND "C2"='U0100'
上記の SELECT 文を実行した場合,テキストインデクス IDX_TXT_C1 が使用されます。
■テキストインデクスが使用されないケース
次に示す場合は,テキストインデクスは使用されません。
テキストインデクスの定義例:
CREATE INDEX "IDX_TXT_C1"
ON "T1" ("C1")
IN "DBAREA01"
EMPTY
INDEXTYPE TEXT
実行する SELECT 文の例:
SELECT "C1","C2","C3" FROM "T1"
WHERE "C1" LIKE '%XYZ%' OR "C2"='U0100'
OR 条件の場合,C1 列だけ(または C2 列だけ)にテキストインデクスが定義されていても,そのテ
キストインデクスは使用されません。そのため,上記の SELECT 文を実行した場合,テキストインデ
クス IDX_TXT_C1 は使用されません。
なお,(1)〜(3)で説明しているインデクスが使用される例と使用されない例は代表的な例です。また,上
記で説明しているインデクスが使用される例であっても,探索条件の書き方によってはインデクスが使用
されないことがあります。検索時に実際に使用されるインデクスを確認したい場合は,「3.2.5 検索時に
使用されるインデクスを確認する方法」を参照してください。
3.2.3 検索時に使用されるインデクスの例(インデクスの優先順位の例)
表に複数のインデクスが定義されている場合,「表 3-1 検索時に使用されるインデクスの優先順位」に示
す優先順位に従って,使用されるインデクスが決定されます。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
91
ここでは,検索時に使用されるインデクスの優先順位の例(代表的な例)を説明します。
検索時に実際に使用されるインデクスを確認したい場合は,「3.2.5 検索時に使用されるインデクスを確
認する方法」を参照してください。
(1) 例 1(単一列インデクス同士の優先順位)
B-tree インデクス(単一列インデクス)同士の優先順位の例を説明します。
B-tree インデクスの定義例:
CREATE INDEX "IDX_C1"
ON "T1" ("C1")
IN "DBAREA01"
EMPTY
CREATE INDEX "IDX_C2"
ON "T1" ("C2")
IN "DBAREA01"
EMPTY
実行する SELECT 文の例:
SELECT "C1","C2","C3" FROM "T1"
WHERE "C1">100 AND "C2"='U0100'
この場合,B-tree インデクス IDX_C1 の優先順位は 10 になり,B-tree インデクス IDX_C2 の優先順位
は 2 になります。したがって,B-tree インデクス IDX_C2 が検索時に使用されます。
ポイント
上記のケースで,優先順位に従ってどちらかの B-tree インデクスだけが使用される場合,絞り込
みがより効く B-tree インデクスが使用されるように,可能ならば探索条件を変更してください。
絞り込みが効く B-tree インデクスを使用した方が性能向上が見込めます。
(2) 例 2(単一列インデクス同士の優先順位)
B-tree インデクス(単一列インデクス)同士の優先順位の例を説明します。
B-tree インデクスの定義例:
CREATE INDEX "IDX_C1"
ON "T1" ("C1")
IN "DBAREA01"
EMPTY
CREATE INDEX "IDX_C2"
ON "T1" ("C2")
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
92
IN "DBAREA01"
EMPTY
実行する SELECT 文の例:
SELECT * FROM "T1"
WHERE "C2"='U0100' AND "C1"=100
この場合,B-tree インデクス IDX_C1 と,B-tree インデクス IDX_C2 の優先順位はどちらも 2 になりま
す。この場合,探索条件で先に書いた列の B-tree インデクスが優先されるため,B-tree インデクス IDX_C2
が検索時に使用されます。
(3) 例 3(複数列インデクス同士の優先順位)
B-tree インデクス(複数列インデクス)同士の優先順位の例を説明します。
B-tree インデクスの定義例:
CREATE INDEX "IDX_C1C2"
ON "T1" ("C1","C2")
IN "DBAREA01"
EMPTY
CREATE INDEX "IDX_C2C3"
ON "T1" ("C2","C3")
IN "DBAREA01"
EMPTY
実行する SELECT 文の例:
SELECT "C1","C2","C3" FROM "T1"
WHERE "C2"='U0100'
この場合,B-tree インデクス IDX_C2C3 が使用されます。
IDX_C1C2 は C2 列がインデクス第 2 構成列のため,C2 列がインデクス第 1 構成列の IDX_C2C3 が使
用されます。
(4) 例 4(単一列インデクスと複数列インデクスの優先順位)
B-tree インデクスの単一列インデクスと複数列インデクスの優先順位の例を説明します。
B-tree インデクスの定義例:
CREATE INDEX "IDX_C1"
ON "T1" ("C1")
IN "DBAREA01"
EMPTY
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
93
CREATE INDEX "IDX_C3C2"
ON "T1" ("C3","C2")
IN "DBAREA01"
EMPTY
実行する SELECT 文の例:
SELECT "C1","C2","C3" FROM "T1"
WHERE "C1">100 AND "C2"='U0100'
この場合,B-tree インデクス IDX_C1 が使用されます。
IDX_C3C2 は C2 列がインデクス第 2 構成列のため,C1 列をインデクス構成列とする IDX_C1 が使用さ
れます。
(5) 例 5(単一列インデクスと複数列インデクスの優先順位)
B-tree インデクスの単一列インデクスと複数列インデクスの優先順位の例を説明します。
B-tree インデクスの定義例:
CREATE INDEX "IDX_C1"
ON "T1" ("C1")
IN "DBAREA01"
EMPTY
CREATE INDEX "IDX_C2C3"
ON "T1" ("C2","C3")
IN "DBAREA01"
EMPTY
実行する SELECT 文の例:
SELECT "C1","C2","C3" FROM "T1"
WHERE "C1">100 AND "C2"='U0100'
この場合,B-tree インデクス IDX_C1 の優先順位は 10 になり,B-tree インデクス IDX_C2C3 の優先順
位は 2 になります。したがって,B-tree インデクス IDX_C2C3 が使用されます。
C1 列をインデクス構成列とする IDX_C1 と,C2 列をインデクス第 1 構成列とする IDX_C2C3 は,「表
3-1 検索時に使用されるインデクスの優先順位」に示す優先順位の比較対象になります。
(6) 例 6(テキストインデクスと B-tree インデクスの優先順位)
テキストインデクスと B-tree インデクス(単一列インデクス)の優先順位の例を説明します。
インデクスの定義例:
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
94
CREATE INDEX "IDX_TXT_C1"
ON "T1" ("C1")
IN "DBAREA01"
EMPTY
INDEXTYPE TEXT
←テキストインデクスの定義
CREATE INDEX "IDX_C2"
ON "T1" ("C2")
IN "DBAREA01"
EMPTY
←B-treeインデクスの定義
実行する SELECT 文の例:
SELECT "C1","C2","C3" FROM "T1"
WHERE "C1" LIKE '%XYZ%' AND "C2" LIKE 'ABC%'
この場合,テキストインデクス IDX_TXT_C1 の優先順位は 6 になり,B-tree インデクス IDX_C2 の優
先順位は 4 になります。したがって,B-tree インデクス IDX_C2 が検索時に使用されます。
ポイント
上記のケースで,優先順位に従ってどちらかのインデクスだけが使用される場合,絞り込みがより
効くインデクスが使用されるように,可能ならば探索条件を変更してください。絞り込みが効くイ
ンデクスを使用した方が性能向上が見込めます。
(7) 検索時に使用されるインデクスを変更したい場合
検索時に使用されるインデクスを変更する方法について説明します。
(a) 優先順位が同じ場合は,使用したいインデクス構成列を先に書く
「3.2.3(2) 例 2(単一列インデクス同士の優先順位)
」で説明したとおり,優先順位が同じ場合,探索条件
で先に書いた列の B-tree インデクスが優先されます。これを利用して,使用する B-tree インデクスを変
更できます。例えば,次のように探索条件の指定を変更したとします。
<変更前>
SELECT * FROM "T1"
WHERE "C3"='A001' AND "C2"='U0100'
<変更後>
SELECT * FROM "T1"
WHERE "C2"='U0100' AND "C3"='A001'
変更前は C3 列に定義した B-tree インデクス IDX_C3 が使用されていましたが,変更後は C2 列に定義し
た B-tree インデクス IDX_C2 が使用されます。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
95
(b) 現在使用されているインデクスの優先順位を下げる
現在使用されているインデクスの優先順位を下げて,もう一方のインデクスを使用するようにします。例
えば,次のように探索条件の指定を変更したとします。
<変更前>
SELECT * FROM "T1"
WHERE "C1"=100 AND "C2" LIKE 'ABC%'
<変更後>
SELECT * FROM "T1"
WHERE "C1" BETWEEN 100 AND 100 AND "C2" LIKE 'ABC%'
変更前は IDX_C1 の優先順位は 2,IDX_C2 の優先順位は 4 でしたが,変更後は IDX_C1 の優先順位が
8 になります。そのため,変更前は B-tree インデクス IDX_C1 が使用されていましたが,変更後は B-tree
インデクス IDX_C2 が使用されます。
(c) インデクス指定を使用する
検索時に使用するインデクスをインデクス指定で指定できます。例を次に示します。
<変更前>
SELECT * FROM "T1"
WHERE "C1"=100 AND "C2" LIKE 'ABC%'
C1 列に定義した B-tree インデクス IDX_C1 の優先順位は 2,C2 列に定義した B-tree インデクス
IDX_C2 の優先順位は 4 のため,IDX_C1 が使用されます。
<変更後>
SELECT * FROM "T1" /*>> WITH INDEX (IDX_C2) <<*/
WHERE "C1"=100 AND "C2" LIKE 'ABC%'
下線部分のインデクス指定で,検索時に使用するインデクスを指定できます。上記の SELECT 文を実
行した場合,IDX_C2 が使用されます。
インデクス指定の詳細については,マニュアル「HADB SQL リファレンス」の「インデクス指定」を参
照してください。
3.2.4 インデクスが使用されないケース
探索条件に次の条件を指定している場合,検索時にインデクスが使用されません。なお,例に示す C1,
C2 は表の列名を意味しています。
• 否定の条件を指定している場合
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
96
次に示す例のように,否定の条件を探索条件に指定している場合,C1 列をインデクス構成列とするイ
ンデクスが定義されていても,そのインデクスは使用されません。
(例)
WHERE
WHERE
WHERE
WHERE
WHERE
"C1"<>100
"C1" IS NOT NULL
"C1" NOT LIKE 'ABC%'
"C1" NOT IN (10,20,30)
"C1" NOT BETWEEN 20 AND 40
• 論理演算子 NOT を指定している場合
(例)
NOT ("C1"=100)
• 四則演算や CASE 式などのスカラ演算を含む条件を指定している場合
次に示す例のように,四則演算や CASE 式などのスカラ演算を含む条件を探索条件に指定している場
合,C1 列をインデクス構成列とするインデクスが定義されていても,そのインデクスは使用されません。
(例)
WHERE C1+100=200
なお,スカラ演算の中に定数だけを指定している場合,定数として扱うことがあります。定数と等価な
スカラ演算については,マニュアル「HADB SQL リファレンス」の「値式の指定形式および規則」
の「定数と等価な値式となる条件」を参照してください。
• 外への参照列を含む副問合せが指定されている IN 副問合せを指定している場合
(例)
WHERE "T1"."C1" IN (SELECT "C1" FROM "T2" WHERE "C2"="T1"."C2")
• 外への参照列を含む副問合せが指定されている=ANY の限定述語を指定している場合
(例)
WHERE "T1"."C1"=ANY(SELECT "C1" FROM "T2" WHERE "C2"="T1"."C2")
• 外への参照列を含む副問合せが指定されている=SOME の限定述語を指定している場合
(例)
WHERE "T1"."C1"=SOME(SELECT "C1" FROM "T2" WHERE "C2"="T1"."C2")
• =ANY または=SOME を除く限定述語を指定している場合
(例)
WHERE "C1"<>ANY(SELECT "C1" FROM "T2")
WHERE "C1"<>SOME(SELECT "C1" FROM "T2")
WHERE "C1"=ALL(SELECT "C1" FROM "T2")
• EXISTS 述語を指定している場合
(例)
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
97
WHERE EXISTS(SELECT * FROM "T2")
• LIKE 述語のパターン文字列に次の指定をしている場合
・パターン文字列に特殊文字の%だけを指定している場合
(例)
"C1" LIKE '%'
・パターン文字列に空文字だけを指定している場合
(例)
"C1" LIKE ''
・パターン文字列に,特殊文字以外の文字を 2 文字以上連続して指定していない場合
(例)
"C1" LIKE '%A%'
"C1" LIKE '%A%B%'
・一致値に指定した列と同じ表の列をパターン文字列に指定している場合
(例)
"T1"."C1" LIKE "T1"."C2"
上記の例のような指定をしている場合,C1 列をインデクス構成列とするテキストインデクスが定義さ
れていても,そのテキストインデクスは使用されません。
3.2.5 検索時に使用されるインデクスを確認する方法
検索時に使用されるインデクスは,アクセスパスで確認できます。アクセスパスについては,次に示す個
所を参照してください。
• アクセスパスの確認方法
「4.1.2 アクセスパスを確認するには」を参照してください。
• アクセスパスに表示される内容
「4.1.5(1)(b) インデクスに関する情報」を参照してください。
アクセスパスを確認して,意図したとおりにインデクスが使用されているかどうかを確認してください。
検索対象表にインデクスが定義されている場合,指定した探索条件に基づいてインデクスを使用した検索
が行われます。ただし,指定した探索条件によっては,インデクスが使用されなかったり,期待したイン
デクスとは異なるインデクスが使用されたりすることがあります。上記の方法で確認した結果,意図した
とおりにインデクスが使用されていない場合,探索条件とインデクスの定義が合っていない可能性があり
ます。この場合,インデクスの定義の変更を検討するか,または探索条件の変更を検討してみてください。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
98
なお,インデクスの定義を変更する必要がある場合,AP 開発者は HADB のシステム設計者またはシステ
ム管理者に,インデクスの定義を変更するよう依頼をしてください。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
99
3.3 検索時に使用されるレンジインデクス
ここでは,検索時にレンジインデクスが使用される条件と,検索時に使用されたレンジインデクスを確認
する方法について説明します。
3.3.1 検索時にレンジインデクスが使用される条件
表にレンジインデクスが定義されている場合,WHERE 句に指定された探索条件,結合表の ON 探索条
件,および検索時に使用される B-tree インデクスまたはテキストインデクスによって,検索時にレンジイ
ンデクスが使用されるかどうかが決まります。
ここでは,チャンクのスキップに使用するレンジインデクスの決定方法と,セグメントのスキップに使用
するレンジインデクスの決定方法について説明します。
留意事項
• ここで説明している検索時にレンジインデクスが使用される条件は,内部導出表の展開後の問合せ
式,または探索条件の等価変換によって変換された探索条件に対して適用されます。内部導出表の
展開については,マニュアル「HADB SQL リファレンス」の「内部導出表」を参照してくださ
い。探索条件の等価変換機能については,「3.9 探索条件の等価変換」を参照してください。
• 探索条件中に指定した値式で,スカラ演算中に定数だけを指定している場合,そのスカラ演算を定
数と見なすことがあります。定数と等価なスカラ演算については,マニュアル「HADB SQL リ
ファレンス」の「値式の指定形式および規則」の表「定数と等価な値式となる条件」を参照してく
ださい。
• 表を結合する際,表の結合方式によっては結合条件の評価時にレンジインデクスを使用しないこと
があります。表の結合方式については,「3.5 表の結合方式」を参照してください。
(1) チャンクのスキップに使用するレンジインデクス
表の検索時,
「表 3-4 検索時にレンジインデクスが使用される条件」の項番 1〜5 に示す条件をすべて満
たす場合,探索条件に合わないチャンクをスキップするためにレンジインデクスが使用されます。表に複
数のレンジインデクスが定義されている場合,「表 3-4 検索時にレンジインデクスが使用される条件」の
項番 1〜5 に示す条件をすべて満たす複数のレンジインデクスが使用されます。
なお,チャンクのスキップに使用できるレンジインデクスかどうかを確認する場合は,マニュアル
「HADB システム構築・運用ガイド」の「レンジインデクスの確認(チャンクのスキップの可否)」を参
照してください。
(2) セグメントのスキップに使用するレンジインデクス
表の検索時,「表 3-4 検索時にレンジインデクスが使用される条件」の項番 1〜6 に示す条件をすべて満
たす場合,探索条件に合わないセグメントをスキップするためにレンジインデクスが使用されます。表に
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
100
複数のレンジインデクスが定義されている場合,「表 3-4 検索時にレンジインデクスが使用される条件」
の項番 1〜6 に示す条件をすべて満たす複数のレンジインデクスが使用されます。
なお,表の検索時にテキストインデクスが使用される場合は,レンジインデクスを使用したセグメントの
スキップは行われません。
表 3‒4 検索時にレンジインデクスが使用される条件
項番
1
レンジインデクスが使用される条件
対応する例
WHERE 句に指定した探索条件,または結合表の ON 探索条件で,次に示すどれかの述語に,
レンジインデクスの構成列が指定されている必要があります。
• 比較述語
−
(例 1)
ただし,比較演算子の左側と右側に同じ表の列が指定されている場合は,レンジインデクス (例 2)
は使用されません。
(例 3)
• BETWEEN 述語
ただし,値式 1 と同じ表の列が,値式 2 または値式 3 に指定されている場合は,レンジイ
ンデクスは使用されません。
• IN 述語
(例 4)
(例 5)
(例 6)
ただし,値式 1 と同じ表の列が,値式 2 以降の値式に指定されている場合は,レンジインデ (例 7)
クスは使用されません。
• LIKE 述語
(例 8)
LIKE 指定の場合は,次に示すどれかの条件に該当している必要があります。なお,LIKE 述 (例 9)
語中に ESCAPE を指定している場合は,エスケープ文字が,定数または?パラメタで指定
されている必要があります。
・パターン文字列にユーザ情報取得関数だけが指定されている
・パターン文字列に?パラメタだけが指定されている
・パターン文字列に,'文字列%'(%は特殊文字)を先頭から含む定数だけが指定されている
・パターン文字列に,'文字列_'(_は特殊文字)を先頭から含む定数だけが指定されている
・パターン文字列に特殊文字(%,_ )を含まない定数だけが指定されている(完全一致)
NOT LIKE 指定の場合は,次に示すどれかの条件に該当している必要があります。
・パターン文字列に?パラメタだけが指定されている
・パターン文字列に,'文字列%'(%は特殊文字)を先頭から含む定数だけが指定されている
2
項番 1 で説明している述語が,論理演算子 OR または NOT を使用した条件中に指定されてい (例 10)
る場合は,レンジインデクスは使用されません。
3
項番 1 で説明している述語中に,レンジインデクスの構成列を含むスカラ演算がある場合は, (例 11)
レンジインデクスは使用されません。
4
項番 1 で説明している述語中に,3 つ以上の異なる表の列を指定している場合は,レンジイン
デクスは使用されません。
5
項番 1 で説明している述語中に,外への参照列がある場合は,外への参照列をインデクス構成 (例 13)
列とするレンジインデクスは使用されません。
6
レンジインデクスのインデクス構成列が,検索時に使用される B-tree インデクスのインデクス (例 14)
構成列に含まれている場合は,レンジインデクスは使用されません。
(例 15)
(例 12)
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
101
項番
レンジインデクスが使用される条件
対応する例
検索時に使用される B-tree インデクスについては,「3.2 検索時に使用される B-tree インデ
クスおよびテキストインデクス」を参照してください。
3.3.2 検索時に使用されるレンジインデクスの例
(1) 例 1
レンジインデクスの定義
CREATE INDEX "RIDX1" ON "T1"("C1") IN "DBAREA01" EMPTY INDEXTYPE RANGE
SQL 文の例
SELECT * FROM "T1" WHERE "C1">10
[説明]
この例の場合,条件に合致するデータを含まないチャンクおよびセグメントをスキップするために,レ
ンジインデクス RIDX1 が使用されます。
(2) 例 2
レンジインデクスの定義
CREATE INDEX "RIDX1" ON "T1"("C1") IN "DBAREA01" EMPTY INDEXTYPE RANGE
CREATE INDEX "RIDX2" ON "T1"("C2") IN "DBAREA01" EMPTY INDEXTYPE RANGE
CREATE INDEX "RIDX3" ON "T1"("C3") IN "DBAREA01" EMPTY INDEXTYPE RANGE
SQL 文の例
SELECT * FROM "T1" WHERE "C1"=10 AND "C2">20 AND "C3">30
[説明]
この例の場合,条件に合致するデータを含まないチャンクおよびセグメントをスキップするために,レ
ンジインデクス RIDX1,RIDX2 および RIDX3 が使用されます。
(3) 例 3(レンジインデクスが使用されない例)
レンジインデクスの定義
CREATE INDEX "RIDX1" ON "T1"("C1") IN "DBAREA01" EMPTY INDEXTYPE RANGE
SQL 文の例
SELECT * FROM "T1" WHERE "C1">"C2"
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
102
[説明]
比較演算子の左側と右側に同じ表の列が指定されている場合は,レンジインデクスは使用されません
(条件に合致するデータを含まないチャンクおよびセグメントはスキップされません)。この例の場合,
C1,C2 は表 T1 の列のため,レンジインデクス RIDX1 は使用されません。
(4) 例 4
レンジインデクスの定義
CREATE INDEX "RIDX1" ON "T1"("C1") IN "DBAREA01" EMPTY INDEXTYPE RANGE
SQL 文の例
SELECT * FROM "T1" WHERE "C1" BETWEEN 10 AND 30
[説明]
この例の場合,条件に合致するデータを含まないチャンクおよびセグメントをスキップするために,レ
ンジインデクス RIDX1 が使用されます。
(5) 例 5(レンジインデクスが使用されない例)
レンジインデクスの定義
CREATE INDEX "RIDX1" ON "T1"("C1") IN "DBAREA01" EMPTY INDEXTYPE RANGE
SQL 文の例
SELECT * FROM "T1" WHERE "C1" BETWEEN "C2" AND "C3"
[説明]
値式 1 と同じ表の列が,値式 2 または値式 3 に指定されている場合は,レンジインデクスは使用され
ません(条件に合致するデータを含まないチャンクおよびセグメントはスキップされません)。この例
の場合,C1,C2,C3 は表 T1 の列のため,レンジインデクス RIDX1 は使用されません。
(6) 例 6
レンジインデクスの定義
CREATE INDEX "RIDX1" ON "T1"("C1") IN "DBAREA01" EMPTY INDEXTYPE RANGE
SQL 文の例
SELECT * FROM "T1" WHERE "C1" IN (10,20,30)
[説明]
この例の場合,条件に合致するデータを含まないチャンクおよびセグメントをスキップするために,レ
ンジインデクス RIDX1 が使用されます。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
103
(7) 例 7(レンジインデクスが使用されない例)
レンジインデクスの定義
CREATE INDEX "RIDX1" ON "T1"("C1") IN "DBAREA01" EMPTY INDEXTYPE RANGE
SQL 文の例
SELECT * FROM "T1" WHERE "C1" IN ("C2",20,30)
[説明]
値式 1 と同じ表の列が,値式 2 以降の値式に指定されている場合は,レンジインデクスは使用されま
せん(条件に合致するデータを含まないチャンクおよびセグメントはスキップされません)。この例の
場合,C1,C2 は表 T1 の列のため,レンジインデクス RIDX1 は使用されません。
(8) 例 8
レンジインデクスの定義
CREATE INDEX "RIDX1" ON "T1"("C1") IN "DBAREA01" EMPTY INDEXTYPE RANGE
SQL 文の例
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
FROM
FROM
FROM
FROM
FROM
FROM
FROM
FROM
FROM
FROM
FROM
FROM
FROM
FROM
FROM
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
WHERE
WHERE
WHERE
WHERE
WHERE
WHERE
WHERE
WHERE
WHERE
WHERE
WHERE
WHERE
WHERE
WHERE
WHERE
"C1"
"C1"
"C1"
"C1"
"C1"
"C1"
"C1"
"C1"
"C1"
"C1"
"C1"
"C1"
"C1"
"C1"
"C1"
LIKE CURRENT_USER
LIKE ?
LIKE 'ABC%'
LIKE 'ABC%E'
LIKE 'ABC%E%'
LIKE 'ABC%E%G'
LIKE 'ABC_'
LIKE 'ABC_E'
LIKE 'ABC_E_'
LIKE 'ABC_E_G'
LIKE 'ABC'
NOT LIKE ?
NOT LIKE 'ABC%'
LIKE 'AB\_C%' ESCAPE '\'
NOT LIKE 'AB\_C%' ESCAPE '\'
[説明]
上記の例の場合,どの SELECT 文を実行しても,条件に合致するデータを含まないチャンクおよびセ
グメントをスキップするために,レンジインデクス RIDX1 が使用されます。
LIKE 述語に?パラメタを指定した場合はレンジインデクスが使用されますが,次に示す条件に該当し
ないパターン文字列を指定した場合は,レンジインデクスの効果はありません。
• LIKE の場合
・'文字列%'(%は特殊文字)を先頭から含むパターン文字列
・'文字列_'(_は特殊文字)を先頭から含むパターン文字列
・%または_の特殊文字を含まないパターン文字列(完全一致)
• NOT LIKE の場合
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
104
・'文字列%'(%は特殊文字)のパターン文字列
(9) 例 9(レンジインデクスが使用されない例)
レンジインデクスの定義
CREATE INDEX "RIDX1" ON "T1"("C1") IN "DBAREA01" EMPTY INDEXTYPE RANGE
SQL 文の例
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
SELECT
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
FROM
FROM
FROM
FROM
FROM
FROM
FROM
FROM
FROM
FROM
FROM
FROM
FROM
FROM
FROM
FROM
FROM
FROM
FROM
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
"T1"
WHERE "C1" LIKE '%ABC%'
WHERE "C1" LIKE '%ABC'
WHERE "C1" LIKE '_ABC_'
WHERE "C1" LIKE '_ABC'
WHERE "C1" NOT LIKE CURRENT_USER
WHERE "C1" NOT LIKE 'ABC%E'
WHERE "C1" NOT LIKE 'ABC%E%'
WHERE "C1" NOT LIKE 'ABC%E%G'
WHERE "C1" NOT LIKE '%ABC%'
WHERE "C1" NOT LIKE '%ABC'
WHERE "C1" NOT LIKE 'ABC_'
WHERE "C1" NOT LIKE 'ABC_E'
WHERE "C1" NOT LIKE 'ABC_E_'
WHERE "C1" NOT LIKE 'ABC_E_G'
WHERE "C1" NOT LIKE '_ABC_'
WHERE "C1" NOT LIKE '_ABC'
WHERE "C1" NOT LIKE 'ABC'
WHERE "C1" LIKE '%AB\_C%' ESCAPE '\'
WHERE "C1" LIKE 'A\%B@_C%'
ESCAPE CASE WHEN 10=? THEN '\' ELSE '@' END
SELECT * FROM "T1" WHERE "C1" NOT LIKE '%AB\_C%' ESCAPE '\'
[説明]
上記のすべての SELECT 文は,「表 3-4 検索時にレンジインデクスが使用される条件」の項番 1 の
「LIKE 述語」の条件を満たしません。したがって,レンジインデクス RIDX1 は使用されません(条件
に合致するデータを含まないチャンクおよびセグメントはスキップされません)。
(10) 例 10(レンジインデクスが使用されない例)
レンジインデクスの定義
CREATE INDEX "RIDX1" ON "T1"("C1") IN "DBAREA01" EMPTY INDEXTYPE RANGE
SQL 文の例
SELECT * FROM "T1" WHERE "C1"=10 OR "C2"=20
SELECT * FROM "T1" WHERE NOT("C1"=10)
[説明]
論理演算子 OR または NOT を使用した条件中に指定されている場合は,レンジインデクスは使用され
ません(条件に合致するデータを含まないチャンクおよびセグメントはスキップされません)。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
105
(11) 例 11(レンジインデクスが使用されない例)
レンジインデクスの定義
CREATE INDEX "RIDX1" ON "T1"("C1") IN "DBAREA01" EMPTY INDEXTYPE RANGE
SQL 文の例
SELECT * FROM "T1" WHERE "T1"."C1"+10=20
[説明]
レンジインデクスの構成列を含むスカラ演算を使用している場合は,レンジインデクスは使用されませ
ん(条件に合致するデータを含まないチャンクおよびセグメントはスキップされません)。
(12) 例 12(レンジインデクスが使用されない例)
レンジインデクスの定義
CREATE INDEX "RIDX1" ON "T1"("C1") IN "DBAREA01" EMPTY INDEXTYPE RANGE
SQL 文の例
SELECT * FROM "T1","T2","T3" WHERE "T1"."C1" BETWEEN "T2"."C2" AND "T3"."C3"
SELECT * FROM "T1","T2","T3" WHERE "T1"."C1" IN ("T2"."C2","T3"."C3")
[説明]
述語中に 3 つ以上の異なる表の列を指定している場合は,レンジインデクスは使用されません(条件に
合致するデータを含まないチャンクおよびセグメントはスキップされません)。
(13) 例 13
レンジインデクスの定義
CREATE INDEX "RIDX1" ON "T1"("C2") IN "DBAREA01" EMPTY INDEXTYPE RANGE
CREATE INDEX "RIDX2" ON "T1"("C3") IN "DBAREA01" EMPTY INDEXTYPE RANGE
CREATE INDEX "RIDX3" ON "T2"("C1") IN "DBAREA01" EMPTY INDEXTYPE RANGE
SQL 文の例
SELECT * FROM "T1" "X"
WHERE "X"."C1"=ANY(SELECT "T2"."C1" FROM "T2"
WHERE "X"."C2"=10 AND "X"."C3"="T2"."C1")
[説明]
レンジインデクス RIDX1 および RIDX2 のインデクス構成列(表 T1 の C2 列,C3 列)は,外への参
照列のため,レンジインデクス RIDX1 および RIDX2 は使用されません。
レンジインデクス RIDX3 は,表 T2 の C1 列(外への参照列ではない列)をインデクス構成列とし,
条件に合致するデータを含まないチャンクおよびセグメントをスキップするために使用されます。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
106
(14) 例 14
レンジインデクスの定義
CREATE
CREATE
CREATE
CREATE
INDEX
INDEX
INDEX
INDEX
"BIDX1"
"RIDX1"
"RIDX2"
"RIDX3"
ON
ON
ON
ON
"T1"("C1","C2") IN "DBAREA01" EMPTY
"T1"("C1") IN "DBAREA01" EMPTY INDEXTYPE RANGE
"T1"("C2") IN "DBAREA01" EMPTY INDEXTYPE RANGE
"T1"("C3") IN "DBAREA01" EMPTY INDEXTYPE RANGE
SQL 文の例
SELECT * FROM "T1" WHERE "C1"=10 AND "C2">20 AND "C3">30
[説明]
レンジインデクスのインデクス構成列が,検索時に使用される B-tree インデクスのインデクス構成列
に含まれている場合は,チャンクをスキップするときに使用されるレンジインデクスと,セグメントを
スキップするときに使用されるレンジインデクスが異なります。
この例の場合,B-tree インデクス BIDX1 のインデクス構成列が C1 および C2 です。このとき,条件
に合致するデータを含まないチャンクをスキップするためにレンジインデクス RIDX1,RIDX2 および
RIDX3 が使用されます。しかし,条件に合致するデータを含まないセグメントをスキップするときは,
レンジインデクス RIDX3 だけが使用されます。
(15) 例 15
B-tree インデクスおよびレンジインデクスの定義
CREATE INDEX "BIDX1" ON "T1"("C1","C2") IN "DBAREA01" EMPTY
CREATE INDEX "RIDX1" ON "T1"("C1") IN "DBAREA01" EMPTY INDEXTYPE RANGE
SQL 文の例
SELECT * FROM "T1" /*>> WITHOUT INDEX <<*/ WHERE "C1"=10
[説明]
この場合,インデクス指定(WITHOUT INDEX)が指定されているため,B-tree インデクス BIDX1
は使用されません。レンジインデクス RIDX1 だけが使用され,チャンクおよびセグメントのスキップ
に使用されます。
なお,インデクス指定がない場合は,B-tree インデクス BIDX1 とレンジインデクス RIDX1 の両方が
使用されます。ただし,レンジインデクス RIDX1 は,「表 3-4 検索時にレンジインデクスが使用され
る条件」の項番 6 の条件(レンジインデクスのインデクス構成列が,検索時に使用される B-tree イン
デクスのインデクス構成列に含まれている場合)に該当するため,セグメントのスキップには使用され
ません。レンジインデクス RIDX1 は,チャンクのスキップにだけ使用されます。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
107
3.3.3 検索時に使用されるレンジインデクスを確認する方法
検索時に使用されるレンジインデクスは,アクセスパスで確認できます。アクセスパスについては,次に
示す個所を参照してください。
• アクセスパスの確認方法
「4.1.2 アクセスパスを確認するには」を参照してください。
• アクセスパスに表示される内容
「4.1.5(1)(b) インデクスに関する情報」を参照してください。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
108
3.4 インデクスを使用した探索条件の評価方式
インデクスを使用した探索条件の評価方式には,次の 2 つがあります。
• B-tree インデクスによる評価方式
• レンジインデクスによる評価方式
WHERE 句または ON 条件に指定された探索条件を,インデクスを使用して評価する際の評価方式につい
て説明します。
3.4.1 B-tree インデクスによる評価方式
B-tree インデクスを使用して探索条件を評価する場合,サーチ条件とキー条件に従って評価されます。
(1) サーチ条件とは
B-tree インデクスによる検索範囲を特定する条件をサーチ条件といいます。主に次の条件が該当します。
• =,不等号,IS NULL,LIKE 述語の前方一致指定(定数指定),LIKE 述語の?パラメタ指定,IN 述
語,BETWEEN 述語,限定述語(=ANY,=SOME)
サーチ条件による評価方式の例を次の図に示します。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
109
図 3‒4 サーチ条件による評価方式の例
[説明]
この場合,サーチ条件は 50≦C1≦100 になります。サーチ条件に該当する行のデータページにアクセ
スします。
(2) キー条件とは
B-tree インデクスのインデクス構成列だけで評価できる条件をキー条件といいます。サーチ条件のように
B-tree インデクスによる検索範囲を絞ることはできませんが,B-tree インデクスのインデクスページだけ
で条件を評価できるため,データページを参照する回数を減らすことができ,その分検索性能が向上します。
キー条件による評価方式の例を次の図に示します。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
110
図 3‒5 キー条件による評価方式の例
[説明]
この場合,各条件は次のようになります。
• サーチ条件:40≦C1≦60
• キー条件:C2 IN(1,2)
サーチ条件で検索範囲を絞り込み,キー条件に該当する行のデータページにだけアクセスします。
3.4.2 レンジインデクスによる評価方式
レンジインデクスを使用して探索条件を評価する場合,次の 2 つのレンジインデクス条件に従って評価さ
れます。
• チャンクのスキップにレンジインデクスを使用する条件
レンジインデクスを使用して,探索条件に該当するデータを含まないチャンクをスキップするための条
件です。アクセスするチャンクが減ることで,参照するデータページの量を減らすことができ,その分
検索性能が向上します。
この条件は,チャンクのスキップが使用できるレンジインデクスの場合だけ使用されます。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
111
チャンクのスキップに使用できるレンジインデクスかどうかを確認する場合は,マニュアル「HADB システム構築・運用ガイド」の「ディクショナリ表の検索」の「チャンクのスキップができるインデク
スかどうかを調べる場合」を参照してください。
• セグメントのスキップにレンジインデクスを使用する条件
レンジインデクスを使用して,探索条件に該当するデータを含まないセグメントをスキップするための
条件です。アクセスするセグメントが減ることで,参照するデータページの量を減らすことができ,そ
の分検索性能が向上します。
レンジインデクス条件による評価方式の例を次の図に示します。
図 3‒6 レンジインデクス条件による評価方式の例
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
112
[説明]
この場合,各条件は次のようになります。
• チャンクのスキップに使用するレンジインデクス条件:100≦C1≦300,C2 IN(1,2),C3<300
• サーチ条件:100≦C1≦300
• キー条件:C2 IN(1,2)
• セグメントのスキップに使用するレンジインデクス条件:C3<300
チャンクにアクセスする前にチャンクのスキップに使用するレンジインデクス条件によって評価されま
す。次に,B-tree インデクスによって評価され,そのあとデータページにアクセスする前にセグメン
トのスキップに使用するレンジインデクス条件によって評価されます。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
113
3.5 表の結合方式
表の結合方式には次の 2 種類があります。
• ネストループジョイン
• ハッシュジョイン
この節では,各結合方式とその特徴について説明します。
表の結合方式は,HADB が自動的に決定します。SQL 文を実行した結果,どの結合方式が適用されたか
を,アクセスパスで確認することができます。アクセスパスについては,次に示す個所を参照してください。
• アクセスパスの確認方法
「4.1.2 アクセスパスを確認するには」を参照してください。
• アクセスパスに表示される内容
「4.1.4(21) 表の結合方式」を参照してください。
参考
結合表の場合は,結合方式指定で表の結合方式を指定することができます。結合方式指定について
は,マニュアル「HADB SQL リファレンス」の「結合方式指定の指定形式および規則」を参照
してください。
3.5.1 ネストループジョインとは
外表の結合列の値を使用して,内表の結合列をサーチして突き合わせます。この処理を外表の行数分繰り
返して表を結合します。この結合方式をネストループジョインといいます。
外表と内表を結合するための結合条件に指定した列に,インデクスが定義されている場合,結合条件の評
価時にインデクスを使用して,内表の検索範囲を絞り込めることがあります。
次の SELECT 文を実行した際にネストループジョインが適用された場合を例にして,ネストループジョイ
ンによる結合方式を説明します。
(例)
SELECT * FROM "T1","T2" WHERE "T1"."C2">10 AND "T1"."C1">"T2"."C1"
結合対象の表のうち,どちらを外表,内表にするかは,HADB が決定します。この例では,表 T1 を外
表,表 T2 を内表として説明します。また,下線部分の結合条件に指定している T1.C1 列と T2.C1 列が
結合列となります。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
114
図 3‒7 ネストループジョインによる結合方式
[説明]
外表の結合列の値(B3)を取り出し,内表の結合列の値と突き合わせます。次に,外表の結合列の値
(A1)を取り出し,内表の結合列の値と突き合わせます。この処理を外表の行数分繰り返します。
表 T1 を外表,表 T2 を内表とするネストループジョインの場合,結合条件に指定した列("T1"."C1"お
よび"T2"."C1")にインデクスが定義されていると,結合条件("T1"."C1">"T2"."C1")の評価時にイ
ンデクスを使用して,内表の検索範囲を絞り込めることがあります。
参考
結合表の場合は,結合方式指定によって外表を指定することができます。結合方式指定について
は,マニュアル「HADB SQL リファレンス」の「結合方式指定の指定形式および規則」を参照
してください。
3.5.2 ハッシュジョインとは
外表の結合列を基に作成したハッシュテーブルと,内表の結合列をハッシングした結果を突き合わせて表
を結合します。この結合方式をハッシュジョインといいます。
外表と内表を結合するための結合条件に指定した列に,インデクスが定義されている場合でも,結合条件
の評価時にインデクスは使用されません(ハッシュを使用して結合条件を評価します)。
次の SELECT 文を実行した際にハッシュジョインが適用された場合を例にして,ハッシュジョインによる
結合方式を説明します。
(例)
SELECT * FROM "T1","T2" WHERE "T1"."C2">10 AND "T1"."C1"="T2"."C1"
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
115
結合対象の表のうち,どちらを外表,内表にするかは,HADB が決定します。この例では,表 T1 を外
表,表 T2 を内表として説明します。また,下線部分の結合条件に指定している T1.C1 列と T2.C1 列が
結合列となります。
図 3‒8 ハッシュジョインによる結合方式
[説明]
1. 外表(表 T1)の結合列の値を基にハッシュテーブルを作成します。
2. 内表(表 T2)の結合列の値をハッシングした結果と,ハッシュテーブルを突き合わせて,表の結合
を行います。
表 T1 を外表,表 T2 を内表とするハッシュジョインの場合,結合条件に指定した列("T1"."C1"およ
び"T2"."C1")にインデクスが定義されている場合でも,結合条件("T1"."C1"="T2"."C1")の評価時
にインデクスは使用されません。
"T1"."C2"にインデクスが定義されている場合は,「"T1"."C2">10」の評価時にインデクスが使用され
ることがあります。
ハッシュテーブルは,ハッシュテーブル領域に作成されます。ハッシュテーブル領域サイズは,サーバ定
義またはクライアント定義の adb_sql_exe_hashtbl_area_size オペランドで指定します。
なお,次に示すどれかの条件に該当する場合は,結合方式にハッシュジョインが適用されることはありま
せん。
• サーバ定義またはクライアント定義の adb_sql_exe_hashtbl_area_size オペランドに 0 が指定されて
いる場合
• サーバ定義の adb_sys_uthd_num オペランドに 0 が指定されている場合
• サーバ定義またはクライアント定義の adb_sql_exe_max_rthd_num オペランドに 0 が指定されてい
る場合
• 結合する表の間に=結合条件が存在しない場合
• =結合条件の左右に単独の列指定以外が指定されている場合
• =結合条件の左右に指定された列のデータ型,データ長が異なる場合
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
116
• 選択式に ROW を指定した問合せの場合
• 外への参照列が指定された副問合せの場合
• 更新系 SQL に指定された問合せの場合
参考
結合表の場合は,結合方式指定によって外表を指定することができます。結合方式指定について
は,マニュアル「HADB SQL リファレンス」の「結合方式指定の指定形式および規則」を参照
してください。
3.5.3 各結合方式の特徴
各結合方式の特徴を次の表に示します。
表 3‒5 表の結合方式の特徴
結合方式
初回のデータの
取り出し速度
長所
短所
ネストループ
ジョイン
速い
内表の結合列を B-tree インデ
クスまたはテキストインデク
スで絞り込める場合は,高速
に検索できます。
外表のヒット行数が多い場合は,処理性能が低下します。
ハッシュジョ
イン
遅い
外表のヒット行数が少なく,
内表のヒット行数が多い場合
は,高速に検索できます。
外表のヒット行数が多い場合は,使用するハッシュテー
ブル領域サイズが大きくなります。
ハッシュテーブル領域が不足した場合,いったん作業表
に退避するため,処理性能が低下します。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
117
3.6 副問合せの処理方式
副問合せの処理方式には次の 2 種類があります。
• 外への参照列を含まない副問合せの処理方式
• 外への参照列を含む副問合せの処理方式
この節では,各副問合せの処理方式とその特徴について説明します。
なお,SQL 文を実行した結果,どの処理方式が適用されたかを,アクセスパスで確認することができま
す。アクセスパスについては,次に示す個所を参照してください。
• アクセスパスの確認方法
「4.1.2 アクセスパスを確認するには」を参照してください。
• アクセスパスに表示される内容
「4.1.4(2) 副問合せの処理方式」を参照してください。
外への参照列については,マニュアル「HADB SQL リファレンス」の「副問合せの指定形式および規
則」を参照してください。
3.6.1 外への参照列を含まない副問合せの処理方式とは
外への参照列を含まない副問合せの処理方式には,次の 4 種類があります。
• 作業表実行
• 行値実行
• 作業表行値実行
• ハッシュ実行
各処理方式について説明します。
(1) 作業表実行
次に示す場合,作業表実行が適用されて副問合せの処理が実行されることがあります。
• 限定述語を指定した場合
• IN 述語中に表副問合せを指定した場合
作業表実行の適用例を次に示します。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
118
■実行する SELECT 文
SELECT "T1"."C1" FROM "T1"
WHERE "T1"."C2"=ANY(SELECT "T2"."C2" FROM "T2")
表 T1 の C2 列には,B-tree インデクスおよびテキストインデクスが定義されていないものとします。
図 3‒9 作業表実行の処理方式
[説明]
1. 副問合せの結果を作業表に格納します。
この例の場合,副問合せ中に指定した表 T2 を検索して,表 T2 の C2 列の値を作業表に格納します。
2. 副問合せの外側の問合せが実行されます。このとき,副問合せの外側の問合せを 1 行検索するごと
に副問合せの結果(作業表)と突き合わせて探索条件を評価します。
この例の場合,表 T1 から 1 行ずつ取り出し,表 T1 の C2 列の値と,作業表に格納された表 T2 の
C2 列の値を突き合わせて探索条件を評価します。
(2) 行値実行
次に示す場合,行値実行が適用されて副問合せの処理が実行されることがあります。
• スカラ副問合せを指定した場合
• EXISTS 述語を指定した場合
行値実行の適用例を次に示します。
■実行する SELECT 文
SELECT "T1"."C1" FROM "T1"
WHERE "T1"."C2"< (SELECT MAX("T2"."C2") FROM "T2")
図 3‒10 行値実行の処理方式
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
119
[説明]
1. 副問合せの結果を求めます。
この例の場合,副問合せ中に指定した表 T2 を検索して,MAX("T2"."C2")を求めます。
2. 副問合せの結果を使用して,副問合せの外側の問合せの副問合せを含む条件を評価します。比較述
語の場合は,副問合せの外側の問合せを実行する際に,B-tree インデクスまたはテキストインデク
スを使用することがあります。
この例の場合,1.で求めた MAX("T2"."C2")を条件値として,表 T1 を検索します。条件によって
は,B-tree インデクスまたはテキストインデクスを使用して検索します。
(3) 作業表行値実行
次に示す場合,作業表行値実行が適用されて副問合せの処理が実行されることがあります。
• 限定述語を指定した場合
• IN 述語中に表副問合せを指定した場合
作業表行値実行の適用例を次に示します。
■実行する SELECT 文
SELECT "T1"."C1" FROM "T1"
WHERE "T1"."C2"=ANY(SELECT "T2"."C2" FROM "T2")
表 T1 の C2 列には,B-tree インデクスが定義されているものとします。
図 3‒11 作業表行値実行の処理方式
[説明]
1. 副問合せの結果を作業表に格納します。
この例の場合,副問合せ中に指定した表 T2 を検索して,表 T2 の C2 列の値を作業表に格納します。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
120
2. 作業表から行値を 1 行ずつ取り出して副問合せの外側の問合せを実行し,探索条件を評価します。
このとき,B-tree インデクスを使用します。テキストインデクスが定義されている場合は,テキス
トインデクスを使用します。
この例の場合,作業表から表 T2 の C2 列の値を 1 行ずつ取り出して,表 T1 の C2 列に定義した
B-tree インデクスを使用して表 T1 を検索します。
(4) ハッシュ実行
次に示す場合,ハッシュ実行が適用されて副問合せの処理が実行されることがあります。
• 限定述語を指定した場合
• IN 述語中に表副問合せを指定した場合
ハッシュ実行の適用例を次に示します。
■実行する SELECT 文
SELECT "T1"."C1" FROM "T1"
WHERE "T1"."C2"=ANY(SELECT "T2"."C2" FROM "T2")
図 3‒12 ハッシュ実行の処理方式
[説明]
1. 副問合せの結果を基にハッシュテーブルを作成します。
この例の場合,副問合せ中に指定した表 T2 を検索して,表 T2 の C2 列の値からハッシュテーブル
を作成します。
2. 副問合せの外側の問合せを実行し,限定述語および IN 述語の左側に指定した列の値でハッシング
し,ハッシュテーブルと突き合わせて検索します。
この例の場合,表 T1 から 1 行ずつ取り出し,表 T1 の C2 列の値でハッシュ値を求め,ハッシュ
テーブルを使用して突き合わせます。
ハッシュテーブルはハッシュテーブル領域に作成されます。ハッシュテーブル領域サイズは,サーバ定義
またはクライアント定義の adb_sql_exe_hashtbl_area_size オペランドで指定します。なお,
adb_sql_exe_hashtbl_area_size オペランドに 0 を指定した場合,ハッシュ実行は適用されません。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
121
3.6.2 外への参照列を含まない副問合せの各処理方式の特徴
外への参照列を含まない副問合せの,各処理方式の特徴を次の表に示します。
表 3‒6 外への参照列を含まない副問合せの各処理方式
項番
処理方式
長所
短所
1
作業表実行
作業表を必要とするすべての副問合せの条
件に対して適用できます。
副問合せの外側の問合せの件数が多い場合
は,処理性能が低下します。
2
行値実行
副問合せの外側の問合せに対して,B-tree
インデクスまたはテキストインデクスを使
用できます。したがって,副問合せの外側
の問合せの件数が多い場合,B-tree インデ
クスまたはテキストインデクスを使用して
検索範囲を絞り込めるときは高速に検索で
きます。
副問合せの外側の問合せの件数が多く,Btree インデクスまたはテキストインデクス
を使用して副問合せを含む述語を絞り込め
ない場合は,処理性能が低下します。
3
作業表行値実行
副問合せの外側の問合せに対して,B-tree
インデクスまたはテキストインデクスを使
用できます。したがって,副問合せのヒッ
ト件数が少なく,かつ副問合せの外側の問
合せの件数が多い場合に,B-tree インデク
スまたはテキストインデクスを使用して検
索範囲を絞り込めるときは高速に検索でき
ます。
副問合せの結果の行数分,副問合せの外側
の問合せに対して,B-tree インデクスまた
はテキストインデクスを使用して検索する
ため,副問合せのヒット件数が多い場合は
処理性能が低下します。
4
ハッシュ実行
処理を実行するために必要なすべてのデー
タがハッシュテーブル領域に格納できる場
合は,高速に検索できます。
ハッシュテーブルに格納するデータが多い
場合は,使用するハッシュテーブル領域サ
イズが大きくなります。ハッシュテーブル
領域が不足した場合は,いったん作業表に
すべてのデータを退避するため,処理性能
が低下します。
3.6.3 外への参照列を含む副問合せの処理方式とは
外への参照列を含む副問合せの処理方式には,次の 3 種類があります。
• ネストループ作業表実行
• ネストループ行値実行
• ハッシュ実行
ネストループ行値実行の場合,副問合せの実行回数を減らすために,副問合せの結果を格納するキャッシュ
を作成することがあります。
各処理方式について説明します。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
122
(1) ネストループ作業表実行
次に示す場合,ネストループ作業表実行が適用されて副問合せの処理が実行されることがあります。
• 限定述語を指定した場合
• IN 述語中に表副問合せを指定した場合
ネストループ作業表実行の適用例を次に示します。
■実行する SELECT 文
SELECT "T1"."C1" FROM "T1"
WHERE "T1"."C1"=ANY(SELECT "T2"."C1" FROM "T2"
WHERE "T2"."C2"="T1"."C2")
図 3‒13 ネストループ作業表実行の処理方式
[説明]
1. 副問合せの外側の問合せを実行します。
この例の場合,表 T1 を検索します。
2. 副問合せの外側の問合せを 1 行取り出すごとに,外への参照列の値を使用して副問合せを実行します。
この例の場合,表 T1 の検索結果 1 行ごとに,外への参照列("T1"."C2")の値を条件値に使用して
表 T2 を検索します。
3. 実行した副問合せの結果を基に作業表を作成します。
この例の場合,表 T2 を検索して"T2"."C1"の値を作業表に格納します。
4. 作成した作業表を使用して,副問合せの外側の副問合せを含む条件を評価します。
この例の場合,表 T1 の検索結果 1 行ごとに,対応する作業表の"T2"."C1"の値と突き合わせて副問
合せを含む条件を評価します。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
123
(2) ネストループ行値実行
次に示す場合,ネストループ行値実行が適用されて副問合せの処理が実行されることがあります。
• スカラ副問合せを指定した場合
• EXISTS 述語を指定した場合
ネストループ行値実行の適用例を次に示します。
■実行する SELECT 文
SELECT "T1"."C1" FROM "T1"
WHERE "T1"."C1"=(SELECT MAX("T2"."C1") FROM "T2"
WHERE "T2"."C2"="T1"."C2")
図 3‒14 ネストループ行値実行の処理方式
[説明]
1. 副問合せの外側の問合せを実行します。
この例の場合,表 T1 を検索します。
2. 副問合せの外側の問合せを 1 行取り出すごとに,外への参照列の値を使用して副問合せを実行します。
この例の場合,表 T1 の検索結果 1 行ごとに外への参照列("T1"."C2")の値を使用して,副問合せ
の結果 MAX("T2"."C1")を求めます。
3. 実行した副問合せの結果を求めます(作業表は作成しません)
。副問合せの結果を使用して,副問合
せの外側の副問合せを含む条件を評価します。
この例の場合,表 T1 の検索結果 1 行ごとに,対応する MAX("T2"."C1")の値を使用して条件を評
価します。
(3) ハッシュ実行
次に示す場合,ハッシュ実行が適用されて副問合せの処理が実行されることがあります。
• EXISTS 述語を指定した場合
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
124
• スカラ副問合せを指定した場合
ハッシュ実行の適用例を次に示します。
■実行する SELECT 文
SELECT "T1"."C1" FROM "T1"
WHERE "T1"."C3"<(SELECT "T2"."C3" FROM "T2"
WHERE "T2"."C1"='A' AND "T2"."C2"="T1"."C2")
図 3‒15 ハッシュ実行の処理方式
[説明]
1. 外への参照列を含む条件を取り除いて副問合せを実行し,その結果を基にハッシュテーブルを作成
します。
この例の場合,外への参照列を含む条件(上記の例では"T2"."C2"="T1"."C2")を除いて表 T2 を
検索し,ハッシュテーブルを作成します。
2. 副問合せの外側の問合せを実行して外への参照列でハッシュ値を求めて,ハッシュテーブルと突き
合わせます。
この例の場合,表 T1 を検索し,外への参照列("T1"."C2")からハッシュ値を求めて,ハッシュ
テーブルと突き合わせをし,条件を評価します。
ハッシュテーブルはハッシュテーブル領域に作成されます。ハッシュテーブル領域サイズは,サーバ定義
またはクライアント定義の adb_sql_exe_hashtbl_area_size オペランドで指定します。なお,
adb_sql_exe_hashtbl_area_size オペランドに 0 を指定した場合,ハッシュ実行は適用されません。
3.6.4 外への参照列を含む副問合せの各処理方式の特徴
外への参照列を含む副問合せの,各処理方式の特徴を次の表に示します。
表 3‒7 外への参照列を含む副問合せの各処理方式の特徴
項番
処理方式
長所
短所
1
ネストループ作業表実行
2
ネストループ行値実行
副問合せの探索条件のうち,外への参照列
を含む条件に対して,B-tree インデクスま
たはテキストインデクスを使用できます。
したがって,副問合せの探索条件が,B-
副問合せの外側の問合せのヒット件数が多
い場合は,処理性能が低下します。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
125
項番
処理方式
長所
短所
tree インデクスまたはテキストインデクス
を使用して検索範囲を絞り込める場合は,
高速に検索できます。
3
ハッシュ実行
処理を実行するために必要なすべてのデー
タがハッシュテーブル領域に格納できる場
合は,高速に検索できます。
ハッシュテーブルに格納するデータが多い
場合は,使用するハッシュテーブル領域サ
イズが大きくなります。ハッシュテーブル
領域が不足した場合は,いったん作業表に
すべてのデータを退避するため,処理性能
が低下します。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
126
3.7 グループ化の処理方式
グループ化の処理方式には次の 2 種類があります。
• ハッシュグループ化
• ソートグループ化
GROUP BY 句または DISTINCT 集合関数を指定した場合,グループ化の処理が実行されます。ここで
は,各処理方式について説明します。
グループ化の処理方式は,HADB が自動的に決定します。SQL 文を実行した結果,どの処理方式が適用
されたかを,アクセスパスで確認することができます。アクセスパスについては,次に示す個所を参照し
てください。
• アクセスパスの確認方法
「4.1.2 アクセスパスを確認するには」を参照してください。
• アクセスパスに表示される内容
「4.1.4(10) グループ化の処理方式」を参照してください。
参考
グループ化方式指定を指定することによって,グローバルハッシュグループ化の適用を抑止するこ
とができます。グループ化方式指定については,マニュアル「HADB SQL リファレンス」の
「GROUP BY 句の指定形式および規則」を参照してください。
3.7.1 ハッシュグループ化とは
ハッシュグループ化とは,グループ化列の値をハッシングしてハッシュテーブルを作成しながらグループ
化する処理方式のことです。ハッシュグループ化の処理方式を次の図に示します。
図 3‒16 ハッシュグループ化の処理方式
ハッシュグループ化には次の 2 種類があります。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
127
(1) ローカルハッシュグループ化
最初に SQL 処理リアルスレッドごとにハッシュテーブルを作成し,グループ化します。次に,各 SQL 処
理リアルスレッドでグループ化した結果を集めて,全体をグループ化します。この処理方式をローカルハッ
シュグループ化といいます。
ハッシュテーブルは,SQL 処理リアルスレッドごとにハッシュグループ化領域に作成されます。ハッシュ
テーブル 1 つ当たりのハッシュグループ化領域サイズは,サーバ定義またはクライアント定義の
adb_sql_exe_hashgrp_area_size オペランドで指定します。
(2) グローバルハッシュグループ化
SQL 処理リアルスレッド間で共有するハッシュテーブルを作成し,グループ化します。この処理方式をグ
ローバルハッシュグループ化といいます。
ハッシュテーブルは,ハッシュテーブル領域に作成されます。ハッシュテーブル領域サイズは,サーバ定
義またはクライアント定義の adb_sql_exe_hashtbl_area_size オペランドで指定します。なお,
adb_sql_exe_hashtbl_area_size オペランドに 0 を指定した場合,グローバルハッシュグループ化は適用
されません。
DISTINCT 集合関数を含む SQL 文を実行した場合に,検索結果の重複を排除するためにグローバルハッ
シュグループ化が適用されることがあります。
3.7.2 ソートグループ化とは
ソートグループ化とは,ソートしたあとにグループ化する処理方式のことです。
最初に SQL 処理リアルスレッドごとに作業表を作成します。次に,作業表のデータをグループ化列の値で
ソートし,最後に各 SQL 処理リアルスレッドのソートされたデータを集めて,グループ化します。
DISTINCT 集合関数を含む SQL 文を実行した場合に,検索結果の重複を排除するためにソートグループ
化が適用されることがあります。
ソートグループ化の処理方式を次の図に示します。
図 3‒17 ソートグループ化の処理方式
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
128
3.7.3 各グループ化の特徴
各グループ化の特徴を次の表に示します。
表 3‒8 各グループ化の特徴
項番
1
グループ化の種類
ハッシュグルー
プ化
2
3
長所
短所
ローカルハッシュ
グループ化
グループの数が少ない場合など,グ
ループ化に必要なデータが SQL 処理
リアルスレッドごとのハッシュグルー
プ化領域に収まるときは,高速にグ
ループ化されます。
グループの数が多い場合は,処理性
能が低下します。
グローバルハッ
シュグループ化
グループ化に必要なデータがハッシュ
テーブル領域に収まる場合に,高速
にグループ化されます。
グループ化に必要なデータ量が多く,
ハッシュテーブル領域が不足した場
合は,いったんデータを作業表に格
納するため,処理性能が低下します。
ハッシュグループ化領域,およびハッ
シュテーブル領域を確保しない場合
でも,グループ化できます。
検索結果の件数が多い場合は,作業
表に格納されるデータ量が多くなり
ます。作業表に格納したデータをソー
トしたあとにグループ化するため,
処理性能が低下します。
ソートグループ化
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
129
3.8 作業表が作成される SQL を実行する際の考慮点
SQL 文に ORDER BY 句や GROUP BY 句などを指定した場合,データのソート処理が行われるため,作
業表用 DB エリアに作業表が作成されます。作業表にはソートしたデータが一時的に格納されます。この
ため,大量のデータをソートすると,作業表を作成する処理による負荷によって,十分な性能が得られな
いことがあります。
ポイント
性能低下を抑えるためには,作業表用 DB エリアの容量見積もりを正しく行う必要があります。作
業表が作成される SQL が当初の見積もり時より多く実行される場合,AP 開発者は HADB のシス
テム設計者またはシステム管理者に,作業表用 DB エリアの容量を見積もり直すよう依頼をしてく
ださい。
3.8.1 作業表の種類
作業表には,グローバル作業表とローカル作業表があります。
(1) グローバル作業表
グローバル作業表は,1 つの SQL を複数のリアルスレッドで処理するときに,作業表のデータを複数のリ
アルスレッド間で共有するための作業表です。表を結合するための作業表や副問合せのための作業表など
に利用されます。
また,グローバル作業表が使用するグローバルバッファのページ数を,サーバ定義の
adb_dbbuff_wrktbl_glb_blk_num オペランドで指定します。adb_dbbuff_wrktbl_glb_blk_num オペラ
ンドについては,マニュアル「HADB システム構築・運用ガイド」の「サーバ定義のオペランドの内容」
を参照してください。
(2) ローカル作業表
ローカル作業表は,SQL を処理するリアルスレッドごとに作成される作業表です。ORDER BY 句を指定
した場合に作成される作業表や,グループ化の処理方式としてローカルハッシュグループ化が選択された
ときのグループ分けの作業表などに利用されます。
また,ローカル作業表が使用するローカル作業表用バッファのページ数は,サーバ定義の
adb_dbbuff_wrktbl_clt_blk_num オペランド,クライアント定義の adb_dbbuff_wrktbl_clt_blk_num オ
ペランド,またはエクスポートオプション adb_export_wrktbl_blk_num(adbexport コマンド実行時)
で指定します。なお,対象のオペランドおよびオプションについては,次を参照してください。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
130
• サーバ定義の adb_dbbuff_wrktbl_clt_blk_num オペランドの場合:マニュアル「HADB システム構
築・運用ガイド」の「システム構築」の「サーバ定義のオペランド」の「サーバ定義のオペランドの内
容」
• クライアント定義の adb_dbbuff_wrktbl_clt_blk_num オペランドの場合:
「2.4.2 クライアント定義
のオペランドの説明」
• エクスポートオプション adb_export_wrktbl_blk_num の場合:マニュアル「HADB コマンドリファ
レンス」の「adbexport(データのエクスポート)」の「adbexport コマンドの指定形式」
3.8.2 SQL を実行した場合に作成される作業表について
次の表に示す SQL を実行した場合に作業表が作成されます。
表 3‒9 作業表が作成される SQL
項番
1
作業表が作成される SQL
作業表の用途
ORDER BY
句を指定した
場合
検索結果のソート処理に使わ
れます。
集合演算の結
果をソート
キーとする
場合
問合せ指定の
結果をソート
キーとする
場合
作業表の構成列
• 問合せ式から導出される結
果の列の値を格納するため
の列
作業表の種類
ローカル作業表
• ORDER BY 句のソート
キーに指定した値式の結果
を格納するための列
• 実表の検索結果行に対する
行 ID を格納するための列
(FROM 句に実表を指定し
た場合)※1
• 導出表の問合せ式本体から
導出された結果の列の値を
格納するための列
(FROM 句に導出表を指定
した場合)※6
• ビュー定義の問合せ式本体
から導出される結果の列の
値を格納するための列
(FROM 句にビュー表を指
定した場合)※6
• WITH 句の問合せ式本体
から導出される結果の列の
値を格納するための列
(FROM 句に問合せ名を指
定した場合)※6
• 表関数導出表に指定した
ADB_CSVREAD 関数に
よって導出される結果の列
の値を格納するための列
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
131
項番
作業表が作成される SQL
作業表の用途
作業表の構成列
作業表の種類
(FROM 句に表関数導出表
を指定した場合)
2
GROUP BY
句を指定した
場合
グループ化の
処理方式がグ
ローバルハッ
シュグループ
化の場合※2
グループ分けの結果を保持す
るために使われます。なお,
この作業表は,ハッシュテー
ブル領域が不足した場合に使
われます。
ハッシュテーブル領域は,
サーバ定義またはクライアン
ト定義の
adb_sql_exe_hashtbl_area
_size オペランドで指定しま
す。
グループ化の
処理方式がグ
ローバルハッ
シュグループ
化以外の場合
※2
グループ化の処理方式にロー
カルハッシュグループ化が選
択された場合,グループ分け
のソート処理に使います。な
お,この作業表は,ハッシュ
グループ化領域が不足した場
合に使われます。ハッシュグ
ループ化領域は,サーバ定義
またはクライアント定義の
adb_sql_exe_hashgrp_area
_size オペランドで指定しま
す。
• GROUP BY 句のグループ
化列に指定した値式の結果
の値を格納するための列
ローカル作業表
• 集合関数の結果を格納する
ための列
• GROUP BY 句のグループ
化列に指定した値式の結果
の値を格納するための列
• 集合関数の引数に指定した
列を格納するための列
グループ化の処理方式にソー
トグループ化が選択された場
合,グループ分けのソート処
理に使われます。
3
SELECT DISTINCT を指定
した場合
検索結果を重複排除するため
の処理に使われます。
• 選択式の結果の列の値を格
納するための列
ローカル作業表
4
DISTINCT
集合関数また
は逆分布関数
を指定した
場合
重複排除された集合関数の入
力値を保持するために使われ
ます。なお,この作業表は,
ハッシュテーブル領域が不足
した場合に使われます。ハッ
シュテーブル領域は,サーバ
定義またはクライアント定義
の
adb_sql_exe_hashtbl_area
_size オペランドで指定しま
す。
• GROUP BY 句のグループ
化列に指定した値式の結果
の値を格納するための列
ローカル作業表
グループ化の
処理方式がグ
ローバルハッ
シュグループ
化の場合※2
グループ化の
処理方式がグ
ローバルハッ
シュグループ
集合関数の入力値を重複排除
するための処理,または集合
関数の入力値をソートするた
めの処理に使われます。
• ALL 集合関数の引数に指
定した列の値を格納するた
めの列
• DISTINCT 集合関数の引
数に指定した値式の結果を
格納するための列
• 逆分布関数の WITHIN グ
ループ指定のソートキーに
指定した値式の結果を格納
するための列
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
132
項番
作業表が作成される SQL
作業表の用途
化以外の場合
作業表の構成列
作業表の種類
• 逆分布関数 MEDIAN の
引数に指定した値式の結果
を格納するための列
※2
5
ウィンドウ関数を指定した
場合
ウィンドウ関数の結果を求め
るためのソート処理に使われ
ます。
• FROM 句に指定した表の
列の値を格納するための列
ローカル作業表
6
FROM 句に
複数の表参照
を指定した
場合
表の結合処理で,結合対象と
なる表参照の結果を保持する
ために使われます。なお,こ
の作業表は,ハッシュテーブ
ル領域が不足した場合に使わ
れます。ハッシュテーブル領
域は,サーバ定義またはクラ
イアント定義の
adb_sql_exe_hashtbl_area
_size オペランドで指定しま
す。
• FROM 句に指定した表の
列の値を格納するための列
ローカル作業表
表の結合方式
がハッシュ
ジョインの
場合※3
表の結合方式
がネストルー
プジョインの
表の結合処理で,結合対象と
なる表参照の結果を保持する
ために使われます。
グローバル作業表
場合※3
7
8
9
導出表を指定した場合
ビュー表を指定した場合
WITH 句を指定した場合
導出表に対応する問合せ式本
体の結果を保持するために使
われます。
• 導出表の問合せ式本体から
導出される結果の列の値を
ビュー表に対応する問合せ式
本体の結果を保持するために
使われます。
• ビュー定義の問合せ式本体
から導出される結果の列の
問合せ名に対応する問合せ式
本体の結果を保持するために
使われます。
• WITH 句中の問合せ式本
体から導出される結果の列
の値を格納するための列
グローバル作業表
格納するための列※6
グローバル作業表
値を格納するための列※6
グローバル作業表
※6
10
表関数導出表を指定した場合
表関数導出表を導出する
ADB_CSVREAD 関数の結果
を保持するために使われます。
• ADB_CSVREAD 関数の
結果の列の値を格納するた
めの列
グローバル作業表
11
結合表を指定した場合
結合表の結果を保持するため
に使われます。
• 結合表の列の値を格納する
ための列
グローバル作業表
• 副問合せの選択式の結果の
列の値を格納するための列
ローカル作業表
なお,結合表の結果を求める
ための作業表については,項
番 6 の「FROM 句に複数の
表参照を指定した場合」を参
照してください。
12
副問合せを指
定した場合
副問合せの処
理方式がハッ
副問合せの結果を保持するた
めに使われます。なお,この
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
133
項番
作業表が作成される SQL
シュ実行の
場合※4
副問合せの処
理方式がハッ
シュ実行以外
作業表の用途
作業表は,ハッシュテーブル
領域が不足した場合に使われ
ます。ハッシュテーブル領域
は,サーバ定義またはクライ
アント定義の
adb_sql_exe_hashtbl_area
_size オペランドで指定しま
す。
作業表の構成列
作業表の種類
• 副問合せに含まれる外への
参照列の値を格納するため
の列※5
• 副問合せに含まれる集合関
数の結果を格納するため
の列
副問合せの結果を保持するた
めに使われます。
• 副問合せの選択式の結果の
列の値を格納するための列
グローバル作業表
検索結果をソート,重複排除
するための処理に使われます。
• 問合せ指定に指定した選択
式の結果の列の値を格納す
るための列
ローカル作業表
の場合※4
13
集合演算を指定した場合
注※1
行 ID とは,行の格納位置を示す値のことをいいます。行 ID のデータ型は CHAR(16)です。
注※2
グループ化の処理方式については,「3.7 グループ化の処理方式」を参照してください。
注※3
表の結合方式については,「3.5 表の結合方式」を参照してください。
注※4
副問合せの処理方式については,「3.6 副問合せの処理方式」を参照してください。
注※5
外への参照列については,マニュアル「HADB SQL リファレンス」の「副問合せの指定形式および
規則」を参照してください。
注※6
内部導出表の展開によって実表として扱われることがあります。内部導出表の展開については,マニュ
アル「HADB SQL リファレンス」の「内部導出表」を参照してください。
SQL を実行した結果,作業表が作成されたかどうかを,アクセスパスで確認することができます。アクセ
スパスについては,次に示す個所を参照してください。
• アクセスパスの確認方法
「4.1.2 アクセスパスを確認するには」を参照してください。
• アクセスパスに表示される内容
「4.1.4(6) 作業表の作成情報」を参照してください。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
134
3.8.3 作成される作業表の個数
SQL 文の実行時に作成される作業表の個数を例を使って説明します。なお,ここで説明する作業表の数
は,SQL 文から想定される値です。実際に SQL 文実行時に作成される作業表の数は,サーバ定義または
クライアント定義の最大 SQL 処理リアルスレッド数(adb_sql_exe_max_rthd_num オペランド),操作
対象のデータ件数などに影響されます。
(1) 例 1(ORDER BY 句を指定している場合)
SQL 文の例
SELECT "C1","C2","C3" FROM "T1" ORDER BY "C1" ASC
[説明]
ORDER BY 句のソート処理で使う作業表が 1 つ作成されます。
(2) 例 2(GROUP BY 句を指定している場合)
SQL 文の例
SELECT "C1","C2" FROM "T1" GROUP BY "C1","C2"
[説明]
GROUP BY 句のソート処理で使う作業表が 1 つ作成されます。
(3) 例 3(SELECT DISTINCT を指定している場合)
SQL 文の例
SELECT DISTINCT "C1","C2","C3" FROM "T1"
[説明]
SELECT DISTINCT のソート処理で使う作業表が 1 つ作成されます。
(4) 例 4(DISTINCT 集合関数を指定している場合)
SQL 文の例
SELECT COUNT(DISTINCT "C1") FROM "T1"
[説明]
DISTINCT 集合関数,または逆分布関数のソート処理で使う作業表が 1 つ作成されます。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
135
(5) 例 5(ウィンドウ関数(RANK)を指定している場合)
SQL 文の例
SELECT "C1",RANK() OVER (PARTITION BY "C2" ORDER BY "C3" ASC) FROM "T1"
[説明]
ウィンドウ関数(RANK)の処理で使う作業表が 1 つ作成されます。
(6) 例 6(GROUP BY 句と ORDER BY 句を指定している場合)
SQL 文の例
SELECT "C1","C2" FROM "T1" GROUP BY "C1","C2" ORDER BY "C1" ASC
[説明]
• グループ化の処理方式にグローバルハッシュグループ化が適用される場合
GROUP BY 句のソート処理で使う作業表が 1 つ,ORDER BY 句のソート処理で使う作業表が 1
つ,合計 2 つの作業表が作成されます。
• グループ化の処理方式にグローバルハッシュグループ化が適用されない場合
GROUP BY 句のソート処理で使う作業表が 1 つ作成されます。GROUP BY 句と ORDER BY 句
で必要なソート処理が 1 回で済むため,作成される作業表は 1 つになります。
グループ化の処理方式については,「3.7 グループ化の処理方式」を参照してください。
(7) 例 7(GROUP BY 句と ORDER BY 句を指定している場合)
SQL 文の例
SELECT "C1","C2",COUNT(*) "DC1" FROM "T1"
GROUP BY "C1","C2" ORDER BY "DC1" ASC
[説明]
GROUP BY 句のソート処理と,ORDER BY 句のソート処理で使う作業表が 2 つ作成されます。
この例の場合,GROUP BY 句と ORDER BY 句では,ソート処理の対象が異なる指定のため,作成さ
れる作業表は 2 つになります。
(8) 例 8(SELECT DISTINCT と ORDER BY 句を指定している場合)
SQL 文の例
SELECT DISTINCT "C1","C2","C3" FROM "T1" ORDER BY "C1" ASC
[説明]
SELECT DISTINCT のソート処理で使う作業表が 1 つ作成されます。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
136
この例の場合,SELECT DISTINCT と ORDER BY 句に必要なソート処理が 1 回で済むため,作成さ
れる作業表は 1 つになります。
(9) 例 9(GROUP BY 句と DISTINCT 集合関数を指定している場合)
SQL 文の例
SELECT "C1",COUNT(DISTINCT "C2") FROM "T1" GROUP BY "C1"
[説明]
• グループ化の処理方式にグローバルハッシュグループ化が適用される場合
GROUP BY 句のソート処理で使う作業表が 1 つ,集合関数の処理で使う作業表が 1 つ,合計 2 つ
の作業表が作成されます。
• グループ化の処理方式にグローバルハッシュグループ化が適用されない場合
GROUP BY 句のソート処理で使う作業表が 1 つ作成されます。GROUP BY 句と集合関数で必要
なソート処理が 1 回で済むため,作成される作業表は 1 つになります。
グループ化の処理方式については,「3.7 グループ化の処理方式」を参照してください。
(10) 例 10(表を結合している場合)
SQL 文の例
SELECT "T1"."C1","T1"."C2","T2"."C1","T2"."C2" FROM "T1","T2"
WHERE "T1"."C1"="T2"."C1"
[説明]
結合処理で使用する作業表が 3 つ作成されます。
(11) 例 11(FROM 句に複数の表参照を指定している場合)
SQL 文の例
SELECT "DT1"."C1","DT2"."C1"
FROM (SELECT COUNT("T1"."C1") FROM "T1") AS "DT1"("C1"),
(SELECT COUNT("T2"."C1") FROM "T2") AS "DT2"("C1")
WHERE "DT1"."C1">"DT2"."C1"
[説明]
表の結合処理で使う作業表が 1 つ作成されます。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
137
(12) 例 12(副問合せを指定している場合)
SQL 文の例
SELECT "T1"."C1","T1"."C2","T1"."C3"
FROM "T1" WHERE "T1"."C1"=(SELECT "T2"."C1" FROM "T2"
WHERE "T2"."C2"="T1"."C2")
[説明]
• 副問合せの処理方式にハッシュ実行が適用される場合
外への参照列を含む副問合せの処理で使う作業表が 2 つ作成されます。
• 副問合せの処理方式にハッシュ実行が適用されない場合
外への参照列を含む副問合せの処理で使う作業表は作成されません。
副問合せの処理方式については,「3.6 副問合せの処理方式」を参照してください。
(13) 例 13(IN 副問合せを指定している場合)
SQL 文の例
SELECT "C1","C2","C3" FROM "T1" WHERE "C1" IN (SELECT "C1" FROM "T2")
[説明]
• 副問合せの処理方式にハッシュ実行が適用される場合
IN 述語に指定した副問合せの処理で使う作業表が 2 つ作成されます。
• 副問合せの処理方式にハッシュ実行が適用されない場合
IN 述語に指定した副問合せの処理で使う作業表が 1 つ作成されます。
副問合せの処理方式については,「3.6 副問合せの処理方式」を参照してください。
(14) 例 14(限定述語を指定している場合)
SQL 文の例
SELECT "C1","C2","C3" FROM "T1" WHERE "C1"=ANY(SELECT "C1" FROM "T2")
[説明]
• 副問合せの処理方式にハッシュ実行が適用される場合
限定述語に指定した副問合せの処理で使う作業表が 2 つ作成されます。
• 副問合せの処理方式にハッシュ実行が適用されない場合
限定述語に指定した副問合せの処理で使う作業表が 1 つ作成されます。
副問合せの処理方式については,「3.6 副問合せの処理方式」を参照してください。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
138
(15) 例 15(EXISTS 述語を指定している場合)
SQL 文の例
SELECT "T1"."C1","T1"."C2","T1"."C3" FROM "T1"
WHERE EXISTS(SELECT * FROM "T2" WHERE "T2"."C2"="T1"."C2")
[説明]
• 副問合せの処理方式にハッシュ実行が適用された場合
EXISTS 述語に指定した副問合せの処理で使う作業表が 2 つ作成されます。
• 副問合せの処理方式にハッシュ実行が適用されない場合
EXISTS 述語に指定した副問合せの処理で使う作業表は作成されません。
副問合せの処理方式については,「3.6 副問合せの処理方式」を参照してください。
(16) 例 16(表関数導出表を指定している場合)
SQL 文の例
SELECT "C1","C2","C3"
FROM TABLE(ADB_CSVREAD(MULTISET (SELECT "FNAME" FROM "TFILE"),
'COMPRESSION_FORMAT=GZIP;
FIELD_NUM=1,2,3;'))
AS "T1"("C1" INTEGER,"C2" CHAR(10),"C3" DATE)
[説明]
マルチ集合値式に指定した表副問合せの結果を保持するための作業表が 1 つ作成されます。マルチ集合
値式については,マニュアル「HADB SQL リファレンス」の「マルチ集合値式の指定形式および規
則」を参照してください。
(17) 例 17(ビュー表を指定している場合)
SQL 文の例
CREATE VIEW "VT1"("C1","C2")
AS SELECT "T1"."C1","T2"."C1" FROM "T1","T2"
WHERE "T1"."C2"<="T2"."C2"
SELECT * FROM "VT1" AS "XT1","VT1" AS "XT2"
WHERE "XT1"."C1">"XT2"."C1"
[説明]
ビュー表の処理で使う作業表が 1 つ作成されます。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
139
(18) 例 18(WITH 句を指定している場合)
SQL 文の例
WITH "QT1"("C1","C2") AS (SELECT "T1"."C1","T2"."C1" FROM "T1","T2"
WHERE "T1"."C2"<="T2"."C2")
SELECT * FROM "QT1" WHERE "C1"=(SELECT MAX("C1") FROM "QT1")
[説明]
WITH 句の処理で使う作業表が 1 つ作成されます。
(19) 例 19(集合演算を指定している場合)
SQL 文の例
SELECT "C1","C2" FROM "T1" UNION SELECT "C1","C2" FROM "T2"
[説明]
集合演算の処理で使う作業表が 2 つ作成されます。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
140
3.9 探索条件の等価変換
探索条件に指定された条件を効率的に評価するために,指定された探索条件を HADB が変換して評価する
ことがあります。これを探索条件の等価変換といいます。探索条件が等価変換された場合,検索時に使用
されるインデクスは等価変換後の探索条件を基に決定されます。検索時に使用されるインデクスの決定方
法については,「3.2 検索時に使用される B-tree インデクスおよびテキストインデクス」および「3.3 検索時に使用されるレンジインデクス」を参照してください。
HADB は,探索条件に指定された条件を次の順序で等価変換します。
1. IN 述語を = 条件または <> 条件に等価変換する
2. OR 条件中の条件を,OR 条件の外側に抜き出す等価変換を行う
3. OR 条件中の = 条件から作成した IN 条件を,OR 条件の外側に追加する等価変換を行う
4. HAVING 句の探索条件を WHERE 句の探索条件に等価変換する
5. 導出問合せを指定した SQL 文の WHERE 句に指定された探索条件を,導出問合せの WHERE 句に移
動する等価変換を行う
ここでは,上記の各等価変換について説明します。
3.9.1 IN 述語に関する等価変換
IN 条件の比較値の指定が 1 つだけの場合,指定した探索条件が等価変換されます。探索条件が等価変換さ
れた場合,検索時に使用されるインデクスは等価変換後の探索条件を基に決定されます。
等価変換の例を次に示します。例中の C1 は列名を意味しています。
(1) 例 1
[説明]
IN 条件の比較値の指定が 1 つだけの場合,=条件に等価変換されます。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
141
(2) 例 2
[説明]
NOT IN 条件の比較値の指定が 1 つだけの場合,<>条件に等価変換されます。
3.9.2 OR 条件に関する等価変換(OR 条件の外側への抜き出し)
OR 条件中に同じ条件が指定されている場合,同じ条件を OR 条件の外側に抜き出す等価変換が実行され
ます。同じ条件を OR 条件の外側に抜き出すと,検索範囲を絞り込むための条件として有効に利用できる
ことがあります。また,OR 条件中の同じ条件が 1 つに集約されるため,条件評価の負荷が軽減されるこ
とがあります。
WHERE 句の探索条件,結合表の ON 探索条件,および HAVING 句の探索条件に指定した OR 条件が
等価変換の対象になります。
探索条件が等価変換された場合,検索時に使用されるインデクスは等価変換後の探索条件を基に決定され
ます。
等価変換の例を次に示します。例中の C1,C2,C3 は列名を意味しています。
(1) 等価変換される例
(a) 例 1
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
142
[説明]
OR 条件の両側に「"C1" = 100」という同じ条件があるため,「"C1" = 100」が OR 条件の外側に抜
き出されます。
(b) 例 2
[説明]
OR 条件の両側に「"C1" < CURRENT_DATE」という同じ条件があるため,「"C1" <
CURRENT_DATE」が OR 条件の外側に抜き出されます。
(c) 例 3
[説明]
OR 条件の両側に「"T1"."C1" = "T2"."C1"」という同じ条件があるため,「"T1"."C1" = "T2"."C1"」
が OR 条件の外側に抜き出されます。
(d) 例 4
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
143
[説明]
OR 条件の両側に「"C1" IS NULL」という同じ条件があるため,「"C1" IS NULL」が OR 条件の外側
に抜き出されます。
(e) 例 5
[説明]
OR 条件の両側に「"C1" IN (100,200,300)」という同じ条件があるため,「"C1" IN (100,200,300)」
が OR 条件の外側に抜き出されます。
(f) 例 6
[説明]
OR 条件中に指定した条件がすべて「"C1" = 100」のため,=条件に等価変換されます。
(g) 例 7
[説明]
OR 条件中に指定した条件がすべて「"C1" <> 100」のため,<>条件に等価変換されます。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
144
(2) 等価変換されない例
(a) 例 1
[説明]
「"T1"."C1" = "T2"."C1"」と「"T2"."C1" = "T1"."C1"」は,異なる条件と見なされるため,等価変換
されません。
(b) 例 2
[説明]
OR 条件の両側に「"C1" = 100」という同じ条件がありますが,NOT 条件中に指定された OR 条件
の場合は,等価変換されません。
(c) 例 3
[説明]
OR 条件の両側に「"C1" = 100 OR "C1" > 200」という同じ条件がありますが,AND 条件に指定さ
れた OR 条件の場合は,等価変換されません。
(3) 等価変換の規則
1. 比較述語で次に示す形式の場合は,OR 条件中の条件を OR 条件の外側に抜き出します。
• 列指定 比較述語 定数
列指定と定数が逆に指定されている場合でも,等価変換されます。
• 列指定 比較述語 日時情報取得関数(またはユーザ情報取得関数)
列指定と日時情報取得関数(またはユーザ情報取得関数)が逆に指定されている場合でも,等価変
換されます。
• 列指定 比較述語 列指定
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
145
列指定の列が逆に指定されている場合は,異なる条件と見なされて等価変換されません(
「3.9.2(2)
(a) 例 1」を参照)。
2. NULL 述語で次に示す形式の場合は,OR 条件中の条件を OR 条件の外側に抜き出します。
• 列指定 IS NULL
• 列指定 IS NOT NULL
3. IN 述語で次に示す形式の場合は,OR 条件中の条件を OR 条件の外側に抜き出します。
• 列指定 IN(値式,…)
値式に,定数,日時情報取得関数,またはユーザ情報取得関数だけが指定されている場合に等価変
換されます。
• 列指定 NOT IN(値式,…)
値式に,定数,日時情報取得関数,またはユーザ情報取得関数だけが指定されている場合に等価変
換されます。
4. 次に示す場合は等価変換されません。
• NOT 条件中に指定された OR 条件の場合(「3.9.2(2)(b) 例 2」を参照)
• AND 条件に指定された OR 条件の場合(「3.9.2(2)(c) 例 3」を参照)
3.9.3 OR 条件に関する等価変換(IN 条件への変換)
OR 条件中に同じ列に対する=条件が指定されている場合,次に示す等価変換が実行されます。
• 同じ列に対する=条件を IN 条件に変換する
• 同じ列に対する=条件を IN 条件に変換して,OR 条件の外側に追加する
IN 条件に変換して OR 条件の外側に追加すると,検索範囲を絞り込むための条件として有効に利用できる
ことがありますが,IN 条件を追加すれば条件評価の負荷が増えることもあります。
WHERE 句の探索条件,結合表の ON 探索条件,および HAVING 句の探索条件に指定した OR 条件が
等価変換の対象になります。
探索条件が等価変換された場合,検索時に使用されるインデクスは等価変換後の探索条件を基に決定され
ます。
等価変換の例を次に示します。例中の C1,C2,C3 は列名を意味しています。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
146
(1) 等価変換される例
(a) 例 1
[説明]
OR 条件中に指定されているすべての条件が,C1 列に対する=条件のため,IN 条件に等価変換されま
す。
(b) 例 2
[説明]
OR 条件中に指定されている C1 列に対する=条件を,IN 条件に変換して OR 条件の外側に追加します。
(2) 等価変換されない例
(a) 例 1
[説明]
OR 条件中に指定されているすべての条件が,C1 列に対する=条件ですが,NOT 条件中に指定されて
いるため,等価変換されません。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
147
(b) 例 2
[説明]
OR 条件の両側に「"C1" = 100」と「"C1" = 200」という IN 条件に等価変換される条件があります
が,AND 条件に指定された OR 条件の場合は等価変換されません。
(3) 等価変換の規則
1. 比較述語で次に示す形式の場合は,OR 条件の外側に IN 条件を追加します。ただし,列指定に指定す
る列が外への参照列の場合は,等価変換されません。外への参照列については,マニュアル「HADB SQL リファレンス」の「副問合せの指定形式および規則」を参照してください。
• 列指定 = 定数
列指定と定数が逆に指定されている場合でも,等価変換されます。
• 列指定 = 日時情報取得関数(またはユーザ情報取得関数)
列指定と日時情報取得関数(またはユーザ情報取得関数)が逆に指定されている場合でも,等価変
換されます。
• 列指定 = ?パラメタ
列指定と?パラメタが逆に指定されている場合でも,等価変換されます。
2. 次に示す場合は等価変換されません。
• NOT 条件中に指定された OR 条件の場合(「3.9.3(2)(a) 例 1」を参照)
• AND 条件に指定された OR 条件の場合(「3.9.3(2)(b) 例 2」を参照)
3.9.4 HAVING 句に関する等価変換(WHERE 句への変換)
HAVING 句の探索条件が,WHERE 句の探索条件に等価変換されることがあります。WHERE 句の探索
条件に等価変換されると,グループ化の処理でむだな入力行を削減できたり,表の検索にインデクスが利
用できたりすることがあります。
WHERE 句の探索条件に等価変換される条件の形式を,次に示します。探索条件が等価変換された場合,
検索時に使用されるインデクスは等価変換後の探索条件を基に決定されます。
等価変換される条件の形式
• 比較述語
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
148
・列指定 比較演算子 {定数|?パラメタ|日時情報取得関数|ユーザ情報取得関数}
・{定数|?パラメタ|日時情報取得関数|ユーザ情報取得関数} 比較演算子 列指定
• BETWEEN 述語
列指定 〔NOT〕 BETWEEN {定数|?パラメタ|日時情報取得関数|ユーザ情報取得関数}
AND {定数|?パラメタ|日時情報取得関数|ユーザ情報取得関数}
• IN 述語
列指定 〔NOT〕 IN ({定数|?パラメタ|日時情報取得関数|ユーザ情報取得関数}
〔,{定数|?パラメタ|日時情報取得関数|ユーザ情報取得関数}〕…)
• LIKE 述語
列指定 〔NOT〕 LIKE パターン文字列 〔ESCAPE エスケープ文字〕
パターン文字列 ::={定数|?パラメタ|日時情報取得関数|ユーザ情報取得関数}
エスケープ文字 ::={定数|?パラメタ}
• NULL 述語
列指定 IS 〔NOT〕 NULL
留意事項
• 論理演算の OR 条件の中に指定された条件の場合は,この等価変換の対象になりません。
ただし,この論理演算の OR 条件に対して,次に示す等価変換が適用できるときは,これらの等価
変換の結果に対して,HAVING 句に関する等価変換が適用されます。
・OR 条件の中の条件を OR 条件の外側に抜き出す等価変換
・OR 条件の中の=条件から作成した IN 条件を OR の外側に追加する等価変換
OR 条件に関する等価変換については,「3.9.2 OR 条件に関する等価変換(OR 条件の外側への抜
き出し)」および「3.9.3 OR 条件に関する等価変換(IN 条件への変換)」を参照してください。
• 論理演算の NOT の中に指定された条件,および副問合せを含む条件の場合は,この等価変換の対
象になりません。
• 列指定の列が外への参照列の場合,この等価変換の対象になりません。外への参照列については,
マニュアル「HADB SQL リファレンス」の「副問合せの指定形式および規則」を参照してくださ
い。
• スカラ演算の中に定数だけを指定している場合,定数として扱われることがあります。定数と等価
なスカラ演算については,マニュアル「HADB SQL リファレンス」の「値式の指定形式および規
則」の表「定数と等価な値式となる条件」を参照してください。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
149
3.9.5 導出問合せを指定した SQL 文の探索条件に関する等価変換(導出問合
せの WHERE 句への移動)
導出問合せを指定した SQL 文の WHERE 句に指定された探索条件を,導出問合せの WHERE 句に移動す
る等価変換を行います。導出問合せについては,マニュアル「HADB SQL リファレンス」の「導出問合
せおよび導出問合せ名」を参照してください。
等価変換の例を次に示します。例中の C1,C2,C3 は列名を意味しています。
(1) 等価変換される例
(a) 例 1(導出問合せが問合せ指定の場合)
[説明]
導出問合せを指定した SQL 文の WHERE 句に指定された条件左側の列指定は,導出問合せに指定され
た問合せ指定の選択式"T1"."C1"を基に導出された導出列"D1"."C1"です。この条件を導出問合せの
WHERE 句に移動する等価変換を行います。
(b) 例 2(導出問合せが問合せ式の場合)
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
150
[説明]
導出問合せを指定した SQL 文の WHERE 句に指定された条件左側の列指定は,導出問合せに指定され
た問合せ式の選択式"T1"."C1"および"T2"."C1"を基に導出された導出列"D1"."C1"です。この条件を導
出問合せの WHERE 句に移動する等価変換を行います。
(2) 等価変換される条件の形式
等価変換される条件の形式を次に示します。
• 比較述語の場合
・列指定 比較演算子 {定数|?パラメタ|日時情報取得関数|ユーザ情報取得関数}
・{定数|?パラメタ|日時情報取得関数|ユーザ情報取得関数} 比較演算子 列指定
• BETWEEN 述語の場合
列指定 〔NOT〕 BETWEEN {定数|?パラメタ|日時情報取得関数|ユーザ情報取得関数}
AND {定数|?パラメタ|日時情報取得関数|ユーザ情報取得関数}
• IN 述語の場合
列指定 〔NOT〕 IN ({定数|?パラメタ|日時情報取得関数|ユーザ情報取得関数}
〔,{定数|?パラメタ|日時情報取得関数|ユーザ情報取得関数}〕…)
• LIKE 述語の場合
列指定 〔NOT〕 LIKE パターン文字列 〔ESCAPE エスケープ文字〕
パターン文字列 ::={定数|?パラメタ|日時情報取得関数|ユーザ情報取得関数}
エスケープ文字 ::={定数|?パラメタ}
• NULL 述語の場合
列指定 IS 〔NOT〕 NULL
(3) 留意事項
• 探索条件の列指定に指定された導出列の基となる導出問合せの選択式が,列指定の場合に等価変換が行
われます。
• 導出問合せにウィンドウ関数が指定されている場合,等価変換は行われません。
• 導出問合せが導出問合せを指定した SQL 文に展開された場合,等価変換は行われません。導出問合せ
の展開については,マニュアル「HADB SQL リファレンス」の「内部導出表」を参照してください。
• 次のような導出問合せの場合,等価変換は行われません。
• 導出問合せとしてビュー表名を指定し,同じビュー表名を SQL 文中に複数指定した場合
• 導出問合せとして WITH リスト要素に指定した問合せ名を指定し,同じ問合せ名を SQL 文中に複
数指定した場合
• WITH リスト要素が複数指定されていて,導出問合せとして WITH リスト要素に指定した問合せ
名を指定した場合
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
151
• INNER JOIN だけを指定した結合表以外の結合表中に,導出問合せを指定した場合
• 論理演算の OR 条件中に指定された条件は,等価変換の対象になりません。ただし,次の等価変換が適
用できる場合は,これらの等価変換の結果に対してこの等価変換を適用します。
• 論理演算の OR 条件に対して,OR 条件中の条件を OR 条件の外側に抜き出す等価変換
上記の等価変換については,「3.9.2 OR 条件に関する等価変換(OR 条件の外側への抜き出し)」
を参照してください。
• OR 条件中の = 条件から作成した IN 条件を OR 条件の外側に追加する等価変換
上記の等価変換については,「3.9.3 OR 条件に関する等価変換(IN 条件への変換)」を参照して
ください。
• 論理演算の NOT 条件中に指定された条件,および副問合せを含む条件は,等価変換の対象になりませ
ん。
• 列指定に指定する列が外への参照列の場合,等価変換は行われません。外への参照列については,マ
ニュアル「HADB SQL リファレンス」の「副問合せの指定形式および規則」を参照してください。
• スカラ演算中に定数だけを指定している場合,そのスカラ演算は定数として扱われることがあります。
定数と等価なスカラ演算については,マニュアル「HADB SQL リファレンス」の「値式の指定形式
および規則」を参照してください。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
152
3.10 内部導出表の展開
HADB では,内部導出表を含む問合せ式を自動的に変更し,内部導出表を効率的に評価しています。内部
導出表を含む問合せ式の変更を,内部導出表の展開といいます。内部導出表の展開規則については,マニュ
アル「HADB SQL リファレンス」の「内部導出表」を参照してください。
また,検索時に使用されるインデクスの優先順位と選択規則は,内部導出表の展開後の変更された問合せ
式に対して適用されます。検索時に使用されるインデクスについては,「3.2 検索時に使用される B-tree
インデクスおよびテキストインデクス」および「3.3 検索時に使用されるレンジインデクス」を参照して
ください。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
153
3.11 検索結果の一括転送
HADB サーバから HADB クライアントに検索結果を転送する際,複数の行を一括して転送できます。大
量のデータを検索する場合に効果があります。
検索結果の一括転送の概要を次の図に示します。
図 3‒18 検索結果の一括転送の概要
検索結果を一括転送する場合,次に示す設定をしてください。
• JDBC ドライバを使用している場合
次に示すどれかの方法で一括転送行数を指定してください。
• システムプロパティ,ユーザプロパティ,または接続用の URL のプロパティの adb_clt_fetch_size
• Statement オブジェクトの setFetchSize メソッド
• ResultSet オブジェクトの setFetchSize メソッド
• ODBC ドライバまたは CLI 関数を使用している場合
クライアント定義の adb_clt_fetch_size オペランドに一括転送行数を指定してください。
上記の設定をすると,行の取り出しを実行した場合に検索結果が一括転送されます。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
154
留意事項
• 一括転送の行数に比例して,HADB サーバおよび HADB クライアントが使用するメモリ所要量が
増加します。そのため,一括転送を行う場合は,メモリ所要量の再見積もりをしてください。HADB
サーバが使用するメモリ所要量については,マニュアル「HADB システム構築・運用ガイド」の
「通常運用時のメモリ所要量の求め方」を参照してください。HADB クライアントが使用するメモ
リ所要量については,「付録 C HADB クライアントのメモリ所要量の見積もり」を参照してくだ
さい。
• 一括転送の実行中にエラーが発生した場合,HADB サーバでバッファリングされていた検索結果は
破棄され,エラー情報だけが HADB クライアントに返されます。
• カーソルを使用した検索中に更新系 SQL を実行した場合,タイミングによっては更新操作の結果が
検索結果に反映されることがありますが,一括転送を使用しているときは,更新操作の結果が検索
結果に反映されることはありません。これは,HADB クライアントに検索結果が残っている間は,
HADB サーバへのアクセスを行うことがないためです。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
155
3.12 ?パラメタの値の一括転送
HADB クライアントから HADB サーバに?パラメタの値を転送する際,複数の?パラメタの値を一括し
て転送できます。HADB クライアントから HADB サーバにアクセスし,?パラメタを使用してデータの
追加,更新,または削除をする場合に効果があります。
?パラメタの値の一括転送の概要を次の図に示します。
図 3‒19 ?パラメタの値の一括転送の概要
[説明]
?パラメタの値を行の挿入値として,複数の行の挿入(INSERT 文)を実行する場合,通常の?パラ
メタの値の転送処理では,?パラメタの値を 1 組(1 つの行に挿入する?パラメタの値)ずつ HADB
サーバに転送します。
一方,?パラメタの値の一括転送処理では,2 組以上の?パラメタの値をまとめて一括転送します。こ
れによって,通信オーバヘッドが少なくなり,その分 AP の実行時間が短縮されます。
なお,この図では行の挿入(INSERT 文)を例にしていますが,UPDATE 文または DELETE 文につ
いても,?パラメタの値を一括転送できます。
JDBC ドライバを使用している場合は,PreparedStatement クラスの executeBatch メソッドで SQL 文
を実行すると,?パラメタの値が一括転送されます。
CLI 関数を使用している場合は,次に示す流れで SQL 文を実行すると,?パラメタの値が一括転送されま
す。
1. INSERT 文,UPDATE 文,または DELETE 文を前処理する
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
156
2. a_rdb_SQLBindArrayParams()で,?パラメタの一括関連づけをする
3. 1.で前処理した文ハンドルを使用して,a_rdb_SQLExecute()で SQL 文を実行する
ODBC ドライバを使用している場合は,?パラメタの値の一括転送は使用できません。
留意事項
• SQL 文の実行中にエラーが発生してロールバックが実行された場合,処理結果行数は破棄され,エ
ラー情報だけが HADB クライアントに返却されます。
• ?パラメタの値を一括転送すると,HADB サーバおよび HADB クライアントが使用するメモリ所
要量が増加するため,メモリ所要量の再見積もりをしてください。HADB サーバが使用するメモリ
所要量については,マニュアル「HADB システム構築・運用ガイド」の「通常運用時のメモリ所
要量の求め方」を参照してください。HADB クライアントが使用するメモリ所要量については,「付
録 C HADB クライアントのメモリ所要量の見積もり」を参照してください。
3. AP の性能向上に関する設計
Hitachi Advanced Data Binder AP 開発ガイド
157
4
AP のチューニング
この章では,アクセスパスの見方について説明します。
Hitachi Advanced Data Binder AP 開発ガイド
158
4.1 アクセスパスの見方(SQL 文の実行計画の見方)
ここでは,アクセスパス(SQL 文の実行計画)に出力される情報と,その見方について説明します。
4.1.1 アクセスパスとは
アクセスパスとは,HADB が SQL 文を実行する際の実行計画のことです。アクセスパスを確認すること
で,実行する SQL 文がどのように処理されるかを確認できます。
(1) アクセスパス情報の表示例
アクセスパス情報の表示例を次の図に示します。
図 4‒1 アクセスパス情報の表示例
[説明]
アクセスパス情報には,ツリー表示,詳細表示,および特定情報表示が表示されます。
• ツリー表示
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
159
表の検索方式,表の結合方式,作業表に関する情報などがツリー形式で表示されます。関連する項
目がツリー状に表示されます。
問合せごとにアクセスパス情報が表示されます。各問合せには,問合せ番号が割り振られます。
ツリー表示のヘッダとして<<Tree View>>が表示されます。
• 詳細表示
ツリー表示で表示された項目の詳細情報が表示されます。ツリー表示に表示されているツリー行番
号と,詳細情報に表示されているツリー行番号が対応しています。上記の例では,ツリー表示に表
示されているツリー行番号 7 の詳細情報が,詳細表示に表示されています。
詳細表示のヘッダとして<<Detail >>が表示されます。
• 特定情報表示
特定情報表示には,SQL 文の特定情報が表示されます。SQL 文の特定情報には,アクセスパスの
統計情報を取得した SQL 文を特定するための情報が表示されます。ここに表示された情報を基に,
アクセスパス情報の出力結果とアクセスパスの統計情報の出力結果を対応付けることができます。
特定情報表示のヘッダとして<<SQL Info >>が表示されます。
アクセスパスの統計情報については,マニュアル「HADB システム構築・運用ガイド」の「アク
セスパスの統計情報の出力例と出力項目」を参照してください。
■問合せ番号とツリー行番号
[説明]
• 問合せ番号
問合せごとに割り振られた番号です。
SQL 文中の何番目の問合せ(問合せ指定)が該当するかがわかるように,SQL 文中の問合せの指
定順に番号(問合せ番号)が割り振られます。副問合せ中の指定の場合は,問合せ番号が 2 以降に
なります。
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
160
SQL 文中の問合せに含まれない部分の場合は,問合せ番号が 0 になります。
• ツリー行番号
ツリーで表示される行ごとに割り振られた番号です。
参考
• 各問合せのアクセスパス情報は,問合せ番号順に出力されないことがあります。
• 通常,問合せ番号は問合せごとに異なりますが,ビュー表を指定した問合せがある場合,
問合せ番号が同じとなる問合せの情報が複数表示されることがあります。この場合,問
合せ検索(QUERY SCAN)の出現順に,問合せの情報が表示されます。
(2) アクセスパスの出力対象となる SQL 文
アクセスパスの出力対象となる SQL 文を次に示します。
• SELECT 文
• UPDATE 文
• INSERT 文
次に示す場合にアクセスパスが出力されます。
• INSERT 文中に問合せ式本体を指定している場合
• INSERT 文中に VALUES を指定していて,かつ副問合せを指定している場合
• DELETE 文
• PURGE CHUNK 文
PURGE CHUNK 文中に副問合せを指定した場合にアクセスパスが出力されます。
上記の SQL 文を実行するごとに,アクセスパスが出力されます。
4.1.2 アクセスパスを確認するには
アクセスパスを確認するには次に示す 2 つの方法があります。
• adbsql サブコマンドの#SET OPT REPORT を実行してアクセスパス情報を確認する
• SQL トレース情報中に出力されたアクセスパス情報を確認する
(1) #SET OPT REPORT を実行してアクセスパス情報を確認する方法
adbsql コマンドの#SET OPT REPORT で,アクセスパス情報を表示できます。アクセスパス情報の表
示手順を次に示します。
手順
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
161
1. adbsql コマンドを実行する
2. adbsql サブコマンドの#SET OPT REPORT を実行する
#SET OPT REPORT ON TYPE=PATH EXEC=PREPARE;
参考
この例では,SQL 文の実行はしないで,アクセスパス情報だけを表示するため,
EXEC=PREPARE を指定しています。SQL 文を実行して,かつアクセスパス情報を表示した
い場合は,EXEC=PREPARE を指定しないでください。
3. SQL 文を実行する
SELECT "C1" FROM "T1" WHERE "C1">10;
上記の SQL 文を実行すると,アクセスパス情報が表示されます。
<<Tree View>>
1 QUERY : 1
2 SELECT STATEMENT
3 +-KEY SCAN(ADBUSER01.T1)
<<Detail
>>
QUERY : 1
3 KEY SCAN(ADBUSER01.T1)
INDEX NAME
: IDX_C1
INDEX TYPE
: B-TREE
INDEX COLUMN
: C1 ASC (>)
<<SQL Info >>
Version
Transaction ID
Connection Number
SQL Serial Number
:
:
:
:
03-01(Aug
6197
3
1
5 2015 09:32:34)
なお,この例での表および B-tree インデクスの定義は,次のとおりとします。
CREATE TABLE "T1"("C1" INT,"C2" DEC,"C3" CHAR(10)) IN "DBAREA01"
CREATE INDEX "IDX_C1" ON "T1"("C1") IN "DBAREA02" EMPTY
CREATE INDEX "IDX_C3" ON "T1"("C3") IN "DBAREA02" EMPTY
(2) SQL トレース情報中に出力されたアクセスパス情報を確認する方法
SQL トレースファイルに出力された SQL トレース情報を,テキストエディタを使用して参照してくださ
い。SQL トレースファイルのファイル名を次に示します。
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
162
• $ADBDIR/spool/adbsqltrc01.log〜adbsqltrc08.log
SQL トレース情報に出力されるアクセスパス情報の例を次に示します。
(例)
[SQL]
SELECT * FROM "T1" WHERE "C1"=? AND "C2"=? AND "C3"=?
[access path]
<<Tree View>>
1 QUERY : 1
2
SELECT STATEMENT
3
+-TABLE SCAN(T1)
SQL トレース情報については,マニュアル「HADB システム構築・運用ガイド」の「SQL トレース機
能の運用」を参照してください。
4.1.3 アクセスパスの見方の例
(1) 例 1
表および B-tree インデクスの定義
CREATE
CREATE
CREATE
CREATE
TABLE
INDEX
INDEX
TABLE
"T1"("C1" INT,"C2" DEC,"C3" CHAR(10)) IN "DBAREA01"
"IDX_C1" ON "T1"("C1") IN "DBAREA02" EMPTY
"IDX_C3" ON "T1"("C3") IN "DBAREA02" EMPTY
"T2"("C1" INT,"C2" DEC,"C3" CHAR(10)) IN "DBAREA01"
実行した SQL 文
SELECT * FROM "T1","T2"
WHERE "T1"."C1"="T2"."C2"
アクセスパスの表示例
<<Tree View>>
1 QUERY : 1
2 SELECT STATEMENT
3 +-NESTED LOOP JOIN
4
|-TABLE SCAN(ADBUSER01.T2)
5
+-INDEX SCAN(ADBUSER01.T1) -ORDER
<<Detail
...1
...2
...3
...4
>>
QUERY : 1
5 INDEX SCAN(ADBUSER01.T1)
INDEX NAME
: IDX_C1
...5
...6
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
163
INDEX TYPE
INDEX COLUMN
: B-TREE
: C1 ASC (=)
...7
...8
<<SQL Info >>
Version
Transaction ID
Connection Number
SQL Serial Number
:
:
:
:
03-01(Aug
6197
3
2
5 2015 09:32:34)
[説明]
1. SELECT 文が実行されることを示しています。
2. 表の結合処理で,ネストループジョインが実行されることを示しています。
3. 表 T2 の検索処理で,テーブルスキャンが実行されることを示しています。
4. 表 T1 の検索処理で,インデクススキャンが実行されることを示しています。また,「-ORDER」
が表示されているため,非順序実行方式が適用されないで,順序実行方式が適用されることを示
しています。
5. 表 T1 に対するインデクススキャンの詳細情報を示しています。
6. インデクススキャンの実行で,B-tree インデクス IDX_C1 が使用されることを示しています。
7. インデクスの種別が表示されます。B-TREE は,B-tree インデクスであることを示しています。
8. B-tree インデクス IDX_C1 の情報を示しています。
・C1:B-tree インデクス IDX_C1 のインデクス構成列
・ASC:キー値の並び順
・(=):サーチ条件の指定
(2) 例 2
表の定義
CREATE TABLE "T1"("C1" INT,"C2" DEC,"C3" CHAR(10)) IN "DBAREA01"
CREATE TABLE "T2"("C1" INT,"C2" DEC,"C3" CHAR(10)) IN "DBAREA01"
実行した SQL 文
SELECT * FROM "T1"
WHERE "C1"=ANY(SELECT "C2" FROM "T2" WHERE "C1"="T1"."C2")
アクセスパスの表示例
<<Tree View>>
1 QUERY : 1
2
SELECT STATEMENT
3
+-TABLE SCAN(ADBUSER01.T1)
4
+-SUBQUERY LOOP
5
|-CREATE LOCAL WORK TABLE(WORK TABLE 1)
...1
...2
...3
...4
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
164
6
| +-QUERY SCAN(QUERY 2)
7
+-WORK TABLE SCAN(WORK TABLE 1)
8
9 QUERY : 2
10
SUBQUERY LOOP
11
+-TABLE SCAN(ADBUSER01.T2)
...5
...6
...7
...8
...9
<<SQL Info >>
Version
Transaction ID
Connection Number
SQL Serial Number
:
:
:
:
03-01(Aug
6197
3
3
5 2015 09:32:34)
[説明]
1. SELECT 文が実行されることを示しています。
2. 表 T1 の検索処理で,テーブルスキャンが実行されることを示しています。
3. 限定述語(ANY)に指定した副問合せの処理方式で,ネストループ作業表実行またはネストルー
プ行値実行が適用されることを示しています。
4. 副問合せの処理で,ローカル作業表が作成されることを示しています。
5. 問合せ検索が実行されることを示しています。ツリー行番号 9 に表示されている「QUERY : 2」
の問合せ検索を行うことを示しています。
6. 副問合せの処理で,作業表の検索が実行されることを示しています。
7. 副問合せの詳細情報を示しています。
8. 副問合せの処理方式で,ネストループ作業表実行またはネストループ行値実行が適用されること
を示しています。
9. 表 T2 の検索処理で,テーブルスキャンが実行されることを示しています。
4.1.4 ツリー表示に出力される情報
ツリー表示には,表の検索方式,表の結合方式,副問合せの実行方式などが,問合せごとにツリー形式で
表示されます。
(1) 実行した SQL 文の種類
次のどれかの情報が出力されます。
• SELECT STATEMENT
SELECT 文が実行されることを示しています。
• UPDATE STATEMENT
UPDATE 文が実行されることを示しています。
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
165
• INSERT STATEMENT
INSERT 文が実行されることを示しています。
• DELETE STATEMENT
DELETE 文が実行されることを示しています。
• PURGE CHUNK STATEMENT
PURGE CHUNK 文が実行されることを示しています。
出力例
<<Tree View>>
1 QUERY : 1
SELECT STATEMENT
2
3
+-TABLE SCAN(ADBUSER01.T2)
[説明]
SELECT 文が実行されることを示しています。
(2) 副問合せの処理方式
次のどれかの情報が出力されます。
• SUBQUERY
ネストループ実行,ハッシュ実行以外の副問合せが適用されることを示しています。
• SUBQUERY LOOP
副問合せの処理方式で,ネストループ作業表実行またはネストループ行値実行が適用されることを示し
ています。
• SUBQUERY HASH
副問合せの処理方式で,ハッシュ実行が適用されることを示しています。
副問合せの処理方式については,「3.6 副問合せの処理方式」を参照してください。
出力例
<<Tree View>>
1 QUERY : 1
2
SELECT STATEMENT
3
+-SUBQUERY HASH
4
|-QUERY SCAN(QUERY 2)
5
+-TABLE SCAN(ADBUSER01.T2)
6
7 QUERY : 2
8 SUBQUERY HASH
9
+-TABLE SCAN(ADBUSER01.T1)
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
166
[説明]
副問合せの処理方式で,ハッシュ実行が適用されることを示しています。
(3) 導出表の指定
次の情報が出力されます。
• DERIVED TABLE
導出表が指定されていることを示しています。
出力例
<<Tree View>>
1 QUERY : 1
2
SELECT STATEMENT
3
+-DERIVED TABLE
4
+-QUERY SCAN(QUERY 2)
5
6 QUERY : 2
DERIVED TABLE
7
8
|-CREATE LOCAL WORK TABLE(WORK TABLE 1)
9
| |-TABLE SCAN(ADBUSER01.T2)
10
| |-SORTING BYTE
11
| +-LIMIT 10
12
|-WORK TABLE SCAN(WORK TABLE 1)
13
+-LIMIT 10
[説明]
SELECT 文中に導出表が指定されていることを示しています。
(4) 集合演算の指定
次の情報が出力されます。
• SET OPERATION
集合演算が指定されていることを示しています。
参考
表の結合に FULL OUTER JOIN を指定した場合も,上記の情報が表示されます。
出力例
<<Tree View>>
1 QUERY : 0
2
SELECT STATEMENT
3
+-SET OPERATION
4
|-QUERY SCAN(QUERY 1)
5
+-QUERY SCAN(QUERY 2)
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
167
6
7 QUERY : 1
8
QUERY
9
+-TABLE SCAN(ADBUSER01.T1)
10
11 QUERY : 2
12
QUERY
13
+-TABLE SCAN(ADBUSER01.T2)
[説明]
SELECT 文中に集合演算が指定されていることを示しています。
(5) 問合せの種類
次の情報が出力されます。
• QUERY
副問合せおよび導出表以外の問合せ式本体が指定されていることを示しています。
出力例
<<Tree View>>
1 QUERY : 0
2
INSERT STATEMENT
3 +-QUERY SCAN(QUERY 1)
4
5 QUERY : 1
6 QUERY
7
+-TABLE SCAN(ADBUSER01.T2) -ORDER
[説明]
INSERT 文中に問合せ式本体が指定されていることを示しています。
(6) 作業表の作成情報
次のどちらかの情報が出力されます。
• CREATE GLOBAL WORK TABLE (WORK TABLE 作業表番号)
グローバル作業表が作成されることを示しています。
• CREATE LOCAL WORK TABLE (WORK TABLE 作業表番号)
ローカル作業表が作成されることを示しています。
作業表番号とは,作業表を一意に識別するために割り当てられた番号のことです。
出力例
<<Tree View>>
1 QUERY : 1
2
SELECT STATEMENT
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
168
3
|-SUBQUERY
4
| +-CREATE GLOBAL WORK TABLE(WORK TABLE 1)
5
|
|-QUERY SCAN(QUERY 2)
6
|
+-SORTING BYTE
7
+-INDEX SCAN(ADBUSER01.T1)
8
+-SUBQUERY
9
+-WORK TABLE SCAN(WORK TABLE 1)
10
11 QUERY : 2
12
SUBQUERY
13
+-TABLE SCAN(ADBUSER01.T2)
[説明]
副問合せの処理で,グローバル作業表が作成されることを示しています。
(7) 副問合せのキャッシュ使用情報
次の情報が出力されます。
• USING CACHE
副問合せの結果を格納するためのキャッシュが使用されることを示しています。副問合せの処理方式で
ネストループ行値実行が適用された場合に,キャッシュが使用されることがあります。
ネストループ行値実行については,「3.6.3(2) ネストループ行値実行」を参照してください。
出力例
<<Tree View>>
1 QUERY : 1
2
SELECT STATEMENT
3
+-TABLE SCAN(ADBUSER01.T1)
4
+-SUBQUERY LOOP -USING CACHE
5
+-QUERY SCAN(QUERY 2)
6
7 QUERY : 2
8
SUBQUERY LOOP
9
+-TABLE SCAN(ADBUSER01.T2)
[説明]
副問合せの処理方式でネストループ行値実行が適用されて,副問合せの結果を格納するためのキャッ
シュが使用されることを示しています。
(8) 表関数導出表の指定
次の情報が出力されます。
• TABLE FUNCTION DERIVED TABLE
表関数導出表が指定されていることを示しています。
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
169
出力例
<<Tree View>>
1 QUERY : 1
2
SELECT STATEMENT
3
+-TABLE FUNCTION DERIVED TABLE
4
+-TABLE SCAN(ADBUSER01.T4(T4))
[説明]
SELECT 文中に表関数導出表が指定されていることを示しています。
(9) 重複排除の処理方式
次の情報が出力されます。
• GLOBAL HASH UNIQUE
グローバルハッシュグループ化を適用して検索結果の重複を排除していることを示しています。また,
ハッシュテーブル領域で処理できない行がある場合に,作業表が作成されていることも示しています。
グローバルハッシュグループ化については,「3.7.1(2) グローバルハッシュグループ化」を参照して
ください。
出力例
<<Tree View>>
1 QUERY : 1
2
SELECT STATEMENT
3
|-KEY SCAN(ADBUSER01.T1)
4
|-GLOBAL HASH UNIQUE
5
+-GROUPING
[説明]
グローバルハッシュグループ化を適用して検索結果の重複を排除していることを示しています。
(10) グループ化の処理方式
次のどれかの情報が出力されます。
• GROUPING
作業表を使用しないグループ化が実行されることを示しています。
• SORT GROUPING
ソートグループ化が実行されることを示しています。
• GLOBAL HASH GROUPING
グローバルハッシュグループ化が実行されることを示しています。また,ハッシュテーブル領域で処理
できない行がある場合,作業表を作成することがあることも示しています。
• LOCAL HASH GROUPING
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
170
ローカルハッシュグループ化が実行されることを示しています。また,ハッシュグループ化領域で処理
できない行がある場合,作業表を作成することがあることも示しています。
グループ化の処理方式については,「3.7 グループ化の処理方式」を参照してください。
出力例
<<Tree View>>
1 QUERY : 1
2 SELECT STATEMENT
3 |-TABLE SCAN(ADBUSER01.T1)
4 +-GLOBAL HASH GROUPING
[説明]
グループ化の処理方式で,グローバルハッシュグループ化が実行されることを示しています。
なお,グループ化の処理方式の各情報の後ろに,次の情報が表示されることがあります。
• SPECIFIC
GROUP BY 句に指定したグループ化方式指定が有効になることを示しています。
出力例
<<Tree View>>
1 QUERY : 1
2 SELECT STATEMENT
3 |-CREATE LOCAL WORK TABLE(WORK TABLE 1)
4 | |-TABLE SCAN(ADBUSER01.T1)
5 | +-SORTING BYTE
6 |-WORK TABLE SCAN(WORK TABLE 1)
7 +-LOCAL HASH GROUPING -SPECIFIC
[説明]
GROUP BY 句に指定したグループ化方式指定が有効になり,グループ化の処理方式に LOCAL
HASH GROUPING(ローカルハッシュグループ化)が適用されることを示しています。グループ
化方式指定については,マニュアル「HADB SQL リファレンス」の「GROUP BY 句の指定形式
および規則」を参照してください。
(11) HAVING 句の指定
次の情報が出力されます。
• HAVING
HAVING 句が指定されていることを示しています。また,HAVING 句を指定していない場合でも,
導出表の展開によって表示されることがあります。
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
171
出力例
<<Tree View>>
1 QUERY : 1
2
SELECT STATEMENT
3
|-TABLE SCAN(ADBUSER01.T1)
4
|-GLOBAL HASH GROUPING
5
+-HAVING
[説明]
SELECT 文中に HAVING 句が指定されていることを示しています。
(12) ソート処理の実行
次の情報が出力されます。
• SORTING {BYTE | ISO}
• BYTE:バイトコード順に並び替えます。
• ISO:ソートコード順(ISO/IEC14651 準拠)に並び替えます。
ORDER BY 句によるソート処理が実行されることを示しています。
ただし,ORDER BY 句を指定した場合でも表示されないときがあります。
出力例
<<Tree View>>
1 QUERY : 1
2
SELECT STATEMENT
3
|-CREATE LOCAL WORK TABLE(WORK TABLE 1)
4
| |-TABLE SCAN(ADBUSER01.T1)
5
| +-SORTING BYTE
6
+-WORK TABLE SCAN(WORK TABLE 1)
[説明]
ORDER BY 句の指定によって,ソート処理が実行されることを示しています。
(13) LIMIT 句の指定
次の情報が出力されます。
• LIMIT 〔{オフセット行数|? PARAMETER},〕{リミット行数|? PARAMETER}
• オフセット行数:
オフセット行数を指定した LIMIT 句が指定されていることを示しています。
オフセット行数に定数で 0 を指定した場合,オフセット行数は表示されません。
• リミット行数:
リミット行数を指定した LIMIT 句が指定されていることを示しています。
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
172
• ? PARAMETER:
オフセット行数とリミット行数の両方,またはどちらか一方に?パラメタを指定した LIMIT 句が指
定されていることを示しています。
出力例
<<Tree View>>
1 QUERY : 1
2
SELECT STATEMENT
3
|-CREATE LOCAL WORK TABLE(WORK TABLE 1)
4
| |-TABLE SCAN(ADBUSER01.T1)
5
| |-SORTING BYTE
6
| +-LIMIT ? PARAMETER,5
7
|-WORK TABLE SCAN(WORK TABLE 1)
8
+-LIMIT ? PARAMETER,5
[説明]
オフセット行数に?パラメタを指定し,リミット行数に 5 を指定した LIMIT 句が指定されている
ことを示しています。
(14) ウィンドウ関数の指定
次の情報が出力されます。
• WINDOW
ウィンドウ関数が指定されていることを示しています。
出力例
<<Tree View>>
1 QUERY : 1
2
SELECT STATEMENT
3
|-CREATE LOCAL WORK TABLE(WORK TABLE 1)
4
| |-TABLE SCAN(ADBUSER01.T1)
5
| +-SORTING BYTE
6
|-WORK TABLE SCAN(WORK TABLE 1)
7
+-WINDOW
[説明]
ウィンドウ関数の指定によって,ウィンドウ関数が実行されることを示しています。
(15) 表の検索方式
次のどれかの情報が出力されます。
• TABLE SCAN
表の検索処理で,テーブルスキャンが実行されることを示しています。
• INDEX SCAN(スキーマ名.表識別子(問合せ名または相関名))
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
173
表の検索処理で,インデクススキャンが実行されることを示しています。問合せ名または相関名がある
場合は,問合せ名または相関名が表示されます。
• KEY SCAN
表の検索処理で,キースキャンが実行されることを示しています。
テーブルスキャン,インデクススキャン,およびキースキャンについては,「3.1 表の検索方式」を参照
してください。
出力例
<<Tree View>>
1 QUERY : 1
2
SELECT STATEMENT
3
+-INDEX SCAN(ADBUSER01.T1)
[説明]
表 T1 の検索処理で,インデクススキャンが実行されることを示しています。
(16) 順序実行方式
次の情報が出力されます。
• ORDER
非順序実行方式が適用されないで,順序実行方式が適用されることを示しています。
出力例
<<Tree View>>
1 QUERY : 1
2
SELECT STATEMENT
3
+-NESTED LOOP JOIN
4
|-TABLE SCAN(ADBUSER01.T2)
5
+-INDEX SCAN(ADBUSER01.T1) -ORDER
[説明]
表 T1 の検索処理で,インデクススキャンが順序実行方式で実行されることを示しています。
(17) インデクス指定
次のどちらかの情報が出力されます。
• SPECIFIC
インデクス指定が有効になることを示しています。
• SPECIFIC DISABLED
インデクス指定が無効になることを示しています。
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
174
出力例
<<Tree View>>
1 QUERY : 1
2
SELECT STATEMENT
3
+-INDEX SCAN(ADBUSER01.T1) -SPECIFIC
[説明]
SELECT 文に指定したインデクス指定が有効になり,表 T1 の検索処理で,インデクススキャンが
実行されることを示しています。
(18) コスト情報の収集
次の情報が出力されます。
• USING COST
表またはインデクスに関するコスト情報が収集されていることを示しています。
出力例
<<Tree View>>
1 QUERY : 1
2
SELECT STATEMENT
3
+-TABLE SCAN(ADBUSER01.T3) -USING COST
[説明]
表 T3 に関するコスト情報が収集されていることを示しています。
(19) 作業表の検索実行
次の情報が出力されます。
• WORK TABLE SCAN(WORK TABLE 作業表番号)
作業表の検索が実行されることを示しています。作業表番号とは,作業表を一意に識別するために割り
当てられた番号のことです。
出力例
<<Tree View>>
1 QUERY : 1
2
SELECT STATEMENT
3
|-SUBQUERY
4
| +-CREATE GLOBAL WORK TABLE(WORK TABLE 1)
5
|
|-QUERY SCAN(QUERY 2)
6
|
+-SORTING BYTE
7
+-INDEX SCAN(ADBUSER01.T1)
8
+-SUBQUERY
9
+-WORK TABLE SCAN(WORK TABLE 1)
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
175
10
11 QUERY : 2
12
SUBQUERY
13
+-TABLE SCAN(ADBUSER01.T2)
[説明]
副問合せの処理で,作業表の検索が実行されることを示しています。
なお,ORDER BY 句を指定した SQL 文の実行時に作成された作業表に,FROM 句に指定した表の行 ID
が格納される場合,作業表の検索直後に行 ID を使用してデータページからデータを取り出すための検索
が実行されることがあります。作業表の用途と構成列については,「3.8 作業表が作成される SQL を実行
する際の考慮点」を参照してください。
(20) 問合せ検索の実行
次の情報が出力されます。
• QUERY SCAN(QUERY 問合せ番号)
問合せ検索が実行されることを示しています。
出力例
<<Tree View>>
1 QUERY : 1
2
SELECT STATEMENT
3
+-SUBQUERY HASH
4
|-QUERY SCAN(QUERY 2)
5
+-TABLE SCAN(ADBUSER01.T1)
6
7 QUERY : 2
8
SUBQUERY HASH
9
+-TABLE SCAN(ADBUSER01.T2)
[説明]
問合せ検索が実行されることを示しています。
ツリー行番号 7 に表示されている「QUERY : 2」の問合せ検索を行うことを示しています。
実行した SELECT 文の例
SELECT * FROM "T1" WHERE "C1"=(SELECT "C2" FROM "T2" WHERE "C1"="T1"."C1")
(21) 表の結合方式
次のどちらかの情報が出力されます。
• NESTED LOOP JOIN
表の結合処理で,ネストループジョインが実行されることを示しています。
• HASH JOIN
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
176
表の結合処理で,ハッシュジョインが実行されることを示しています。
2 つの表の列を比較する=条件がある場合,ハッシュジョインが実行されることがあります。また,ハッ
シュテーブル領域で処理できない行がある場合,作業表が作成されることがあります。
表の結合方式については,「3.5 表の結合方式」を参照してください。
出力例(NESTED LOOP JOIN の場合)
<<Tree View>>
1 QUERY : 1
2 SELECT STATEMENT
3 +-NESTED LOOP JOIN
4
|-TABLE SCAN(ADBUSER01.T2)
5
+-INDEX SCAN(ADBUSER01.T1) -ORDER
[説明]
• 表 T1 と表 T2 の結合処理で,ネストループジョインが実行されることを示しています。
• 表の結合方式がネストループジョインの場合,NESTED LOOP JOIN の下位に表示される情報
は,外表から順に表示されます。上記の例の場合,ツリー行番号が 4 の情報が外表の情報で,ツ
リー行番号が 5 の情報が内表の情報です。
出力例(HASH JOIN の場合)
<<Tree View>>
1 QUERY : 1
2
SELECT STATEMENT
3
+-HASH JOIN
4
|-TABLE SCAN(ADBUSER01.T1)
5
+-TABLE SCAN(ADBUSER01.T2)
[説明]
• 表 T1 と表 T2 の結合処理で,ハッシュジョインが実行されることを示しています。
• 表の結合方式がハッシュジョインの場合,HASH JOIN の下位に表示される情報は,ハッシュ
ジョインの外表,内表の順に表示されます。上記の例の場合,ツリー行番号が 4 の情報が外表の
情報で,ツリー行番号が 5 の情報が内表の情報です。
(22) 結合方式指定
次のどちらかの情報が出力されます。
• SPECIFIC
結合方式指定が有効になることを示しています。
• SPECIFIC DISABLED
結合方式指定が無効になることを示しています。
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
177
出力例
<<Tree View>>
1 QUERY : 1
2
SELECT STATEMENT
3
+-HASH JOIN -SPECIFIC
4
|-TABLE SCAN(ADBUSER01.T1(A))
5
+-TABLE SCAN(ADBUSER01.T2(B))
[説明]
SELECT 文に指定した結合方式指定が有効になり,表の結合処理でハッシュジョインが実行される
ことを示しています。
4.1.5 詳細表示に出力される情報
詳細表示には,次のどちらかの情報が出力されます。
• 表の検索方式およびインデクスに関する情報
• 表の結合方式に関する情報
• 集合演算に関する情報
なお,詳細表示は,問合せツリーに出力されている問合せに詳細情報がある場合に限り出力されます。
(1) 表の検索方式およびインデクスに関する情報
表の検索方式およびインデクスに関する情報の出力形式の例を次に示します。
出力形式の例
(a) 表の検索方式に関する情報
表の検索方式に関する情報には,次のどれかが出力されます。
• TABLE SCAN
表の検索処理で,テーブルスキャンが実行されることを示しています。
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
178
• INDEX SCAN(スキーマ名.表識別子(問合せ名または相関名))
表の検索処理で,インデクススキャンが実行されることを示しています。問合せ名または相関名がある
場合は,問合せ名または相関名が表示されます。
• KEY SCAN
表の検索処理で,キースキャンが実行されることを示しています。
テーブルスキャン,インデクススキャン,およびキースキャンについては,「3.1 表の検索方式」を参照
してください。
出力例
<<Detail
>>
QUERY : 1
3 INDEX SCAN(ADBUSER01.T1)
INDEX NAME
: IDX_C1C2
INDEX TYPE
: B-TREE
INDEX COLUMN
: C1 ASC (IN)
INDEX COLUMN
: C2 ASC (>)
INDEX NAME
: RIDX_C2
INDEX TYPE
: RANGE
SKIP COND
: CHUNK
INDEX COLUMN
: C2
[説明]
表 T1 の検索処理で,インデクススキャンが実行されることを示しています。
(b) インデクスに関する情報
インデクスに関する情報の出力形式を次に示します。
出力形式(B-tree インデクスの場合)
INDEX NAME
INDEX TYPE
INDEX COLUMN
: B-treeインデクス名 (一意性制約情報)
: インデクスの種別
: インデクス構成列名 キー値の並び順 (サーチ条件)
• 一意性制約情報
この B-tree インデクスがユニークインデクスの場合,一意性制約情報が出力されます。次のどちら
かが出力されます。
UNIQUE:このユニークインデクスが,一意性制約に違反していない状態であることを示していま
す。
UNIQUE INVALID:このユニークインデクスが,一意性制約に違反している状態であることを示
しています。
• インデクスの種別
B-tree インデクスの場合,インデクスの種別に B-TREE が表示されます。
• キー値の並び順
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
179
B-tree インデクスの定義時に指定した B-tree インデクスのキー値の並び順が出力されます。次のど
ちらかが出力されます。
ASC:昇順にキー値が並んでいます。
DESC:降順にキー値が並んでいます。
• サーチ条件
サーチ条件が次のどれかの形式で出力されます。
=,<,<=,>,>=,=ANY,BETWEEN({<,<|<,<=|<=,<|<=,<=}),IN,LIKE,IS NULL
インデクス構成列にサーチ条件が指定されていない場合は,none が出力されます。
なお,「IN 表副問合せ」や「限定述語の=SOME」をサーチ条件に指定した場合,=ANY が出力さ
れます。
出力形式(テキストインデクスの場合)
INDEX NAME
INDEX TYPE
INDEX COLUMN
: テキストインデクス名
: インデクスの種別
: インデクス構成列名
• インデクスの種別
テキストインデクスの場合,インデクスの種別に TEXT が表示されます。
出力形式(レンジインデクスの場合)
INDEX NAME
INDEX TYPE
SKIP COND
INDEX COLUMN
:
:
:
:
レンジインデクス名
インデクスの種別
レンジインデクス条件の種別
インデクス構成列名
• インデクスの種別
レンジインデクスの場合,インデクスの種別に RANGE が表示されます。
• レンジインデクス条件の種別
使用されるレンジインデクス条件として,次のどれかが出力されます。
CHUNK:チャンクのスキップ条件を使用します。
SEGMENT:セグメントのスキップ条件を使用します。
CHUNK AND SEGMENT:チャンクのスキップ条件とセグメントのスキップ条件の両方を使用し
ます。
出力例
<<Detail
>>
QUERY : 1
3 INDEX SCAN(ADBUSER01.T1)
INDEX NAME
: IDX_C1C2
INDEX TYPE
: B-TREE
INDEX COLUMN
: C1 ASC (IN)
INDEX COLUMN
: C2 ASC (>)
INDEX NAME
: RIDX_C2
INDEX TYPE
: RANGE
...1
...2
...3
...3
...4
...5
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
180
SKIP COND
INDEX COLUMN
: CHUNK
: C2
...6
...7
[説明]
1. 使用されるインデクスの名称です。
2. 1.の INDEX NAME に表示されたインデクスの種別です。B-TREE が表示されているため,
IDX_C1C2 は B-tree インデクスです。
1.および 2.の情報から,B-tree インデクス IDX_C1C2 を使用して,インデクススキャンが実行
されることを示しています。
3. B-tree インデクス IDX_C1C2 についての情報です。
C1,C2:インデクス構成列
ASC:キー値の並び順
(IN), (>):サーチ条件の指定
4. 使用されるインデクスの名称です。
5. 4.の INDEX NAME に表示されたインデクスの種別です。RANGE が表示されているため,
RIDX_C2 はレンジインデクスです。
6. 使用されるレンジインデクス条件の種別です。
7. レンジインデクス RIDX_C2 のインデクス構成列です。
参考
• B-tree インデクスの情報は,表の検索方式にインデクススキャンまたはキースキャンが実行さ
れる場合に表示されます。
また,インデクス構成列が複数ある場合は,インデクス構成列ごとに情報が出力されます。こ
の場合,CREATE INDEX 文で指定したインデクス構成列の定義順に情報が出力されます。
• テキストインデクスのインデクス情報は,表の検索方式にインデクススキャンが実行される場
合に表示されます。
• レンジインデクスの情報は,レンジインデクス条件がある場合に表示されます。
(2) 表の結合方式に関する情報
表の結合方式に関する情報の出力形式の例を次に示します。
出力形式の例
<<Detail
>>
QUERY : 1
3 HASH JOIN
JOIN TYPE
: INNER JOIN
←表の結合方式
←結合種別
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
181
BUILD COLUMN
PROBE COLUMN
: ADBUSER01.T1.C3
: ADBUSER02.T2.C3
←ハッシュジョインの外表の構成列
←ハッシュジョインの内表の構成列
(a) 表の結合方式
表の結合方式には,次のどちらかが出力されます。
• NESTED LOOP JOIN
表の結合処理で,ネストループジョインが実行されることを示しています。
• HASH JOIN
表の結合処理で,ハッシュジョインが実行されることを示しています。
2 つの表の列を比較する=条件がある場合,ハッシュジョインが実行されることがあります。また,ハッ
シュテーブル領域で処理できない行がある場合,作業表が作成されることがあります。
表の結合方式については,「3.5 表の結合方式」を参照してください。
出力例
<<Detail
>>
QUERY : 1
3 HASH JOIN
JOIN TYPE
BUILD COLUMN
PROBE COLUMN
: INNER JOIN
: ADBUSER01.T1.C3
: ADBUSER02.T2.C3
[説明]
表の結合方式で,ハッシュジョインが実行されることを示しています。
(b) JOIN TYPE(結合種別)
JOIN TYPE には,次のどれかが出力されます。
• CROSS JOIN
交差結合が指定されていることを示しています。
• INNER JOIN
内結合が指定されていることを示しています。
• LEFT OUTER JOIN
LEFT OUTER JOIN による外結合が指定されていることを示しています。
• RIGHT OUTER JOIN
RIGHT OUTER JOIN による外結合が指定されていることを示しています。
• FULL OUTER JOIN(LEFT)
FULL OUTER JOIN による外結合が指定されていることを示しています。
• FULL OUTER JOIN(RIGHT)
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
182
FULL OUTER JOIN による外結合が指定されていることを示しています。
各結合の方式については,マニュアル「HADB SQL リファレンス」の「結合表の指定形式および規則」
を参照してください。
出力例
<<Detail
>>
QUERY : 1
3 HASH JOIN
JOIN TYPE
BUILD COLUMN
PROBE COLUMN
: INNER JOIN
: ADBUSER01.T1.C3
: ADBUSER02.T2.C3
[説明]
内結合が実行されることを示しています。
(c) BUILD COLUMN(ハッシュジョインの外表の構成列)
BUILD COLUMN には,ハッシュジョインの外表の構成列が,次のどれかの形式で出力されます。
• スキーマ名.表名.列名
• 問合せ名.列名
• 相関名.列名
出力規則を次に示します。
• BUILD COLUMN は,ハッシュジョインが実行される場合に限り出力されます。
• 構成列は相関名を優先的に表示します。なお,構成列名を表示できない場合は,***が出力されます。
• 内部導出表を作成する SQL 文の場合,ハッシュジョインの外表列の表名や相関名などに,内部導出表
の展開結果が表示されることがあります。内部導出表および内部導出表の展開規則については,マニュ
アル「HADB SQL リファレンス」の「内部導出表」を参照してください。
• ハッシュジョインの外表として FULL OUTER JOIN の結合表が選択された場合,HADB が内部的に
使用する相関名が次の形式で表示されます。
##DRVTBL_xxxxxxxxxx
xxxxxxxxxx は,10 桁の整数です。
出力例
<<Detail
>>
QUERY : 1
3 HASH JOIN
JOIN TYPE
BUILD COLUMN
PROBE COLUMN
: INNER JOIN
: ADBUSER01.T1.C3
: ADBUSER02.T2.C3
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
183
[説明]
ハッシュジョインの外表の構成列を示しています。
(d) PROBE COLUMN(ハッシュジョインの内表の構成列)
PROBE COLUMN には,ハッシュジョインの内表の構成列が,次のどれかの形式で出力されます。
• スキーマ名.表名.列名
• 問合せ名.列名
• 相関名.列名
出力規則を次に示します。
• PROBE COLUMN は,ハッシュジョインが実行される場合に限り出力されます。
• 構成列は相関名を優先的に表示します。なお,構成列名を表示できない場合は,***が出力されます。
• 内部導出表を作成する SQL 文の場合,ハッシュジョインの内表列の表名や相関名などに,内部導出表
の展開結果が表示されることがあります。内部導出表および内部導出表の展開規則については,マニュ
アル「HADB SQL リファレンス」の「内部導出表」を参照してください。
• ハッシュジョインの内表として FULL OUTER JOIN の結合表が選択された場合,HADB が内部的に
使用する相関名が次の形式で表示されます。
##DRVTBL_xxxxxxxxxx
xxxxxxxxxx は,10 桁の整数です。
出力例
<<Detail
>>
QUERY : 1
3 HASH JOIN
JOIN TYPE
BUILD COLUMN
PROBE COLUMN
: INNER JOIN
: ADBUSER01.T1.C3
: ADBUSER02.T2.C3
[説明]
ハッシュジョインの内表の構成列を示しています。
(3) 集合演算に関する情報
集合演算に関する情報には,実行される集合演算の種類が,次の形式で出力されます。
SET OPERATION TYPE:集合演算の種別
集合演算の種別には,次のどれかが出力されます。
• UNION ALL
集合演算 UNION ALL が指定されていることを示しています。
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
184
• UNION DISTINCT
集合演算 UNION DISTINCT が指定されていることを示しています。
• EXCEPT ALL
集合演算 EXCEPT ALL が指定されていることを示しています。
• EXCEPT DISTINCT
集合演算 EXCEPT DISTINCT が指定されていることを示しています。
• INTERSECT ALL
集合演算 INTERSECT ALL が指定されていることを示しています。
• INTERSECT DISTINCT
集合演算 INTERSECT DISTINCT が指定されていることを示しています。
集合演算に関する情報の出力形式の例を次に示します。
出力形式の例
<<Detail
>>
QUERY : 0
3 SET OPERATION
SET OPERATION TYPE : UNION ALL
[説明]
集合演算 UNION ALL が指定されていることを示しています。
留意事項
連続して指定された集合演算の中に,ALL 指定と DISTINCT 指定の集合演算がある場合,ALL 指定
の集合演算を DISTINCT 指定の集合演算として扱うアクセスパス情報が表示されることがあります。
この場合,
「4.1.4(4) 集合演算の指定」の表示では,連続した集合演算を 1 つにまとめて出力します。
また,対応する集合演算の関する情報も 1 つにまとめて出力します。
4.1.6 特定情報表示(SQL 文の特定情報)に出力される情報
特定情報表示には,アクセスパスの統計情報を取得した SQL 文を特定するための情報(SQL 文の特定情
報)が出力されます。ここに出力された情報を基に,アクセスパス情報の出力結果とアクセスパスの統計
情報の出力結果を対応付けることができます。
アクセスパスの統計情報については,マニュアル「HADB システム構築・運用ガイド」の「アクセスパ
スの統計情報の出力例と出力項目」を参照してください。
出力例を次に示します。
出力例
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
185
<<SQL Info >>
Version
Transaction ID
Connection Number
SQL Serial Number
:
:
:
:
03-01(Apr 23 2015 15:32:27)
1
1
1
[説明]
• Version
アクセスパスの統計情報を取得した SQL 文を実行した HADB サーバのバージョンが出力されます。
( )内は,HADB サーバのバージョン付加情報が出力されます。
• Transaction ID
アクセスパスの統計情報を取得した SQL 文のトランザクション ID が出力されます。
• Connection Number
アクセスパスの統計情報を取得した SQL 文のコネクション通番が出力されます。
• SQL Serial Number
アクセスパスの統計情報を取得した SQL 文の SQL 文通番が出力されます。
参考
上記の情報は,アクセスパスの統計情報の前に出力される SQL 文の実行情報中の次の情報と対応
しています。( )内は,各情報のヘッダ名です。
• トランザクション ID(tran_id)
• コネクション通番(con_num)
• SQL 文通番(sql_serial_num)
SQL 文の実行情報については,マニュアル「HADB システム構築・運用ガイド」の「SQL ト
レース情報に出力される情報」の「SQL 文の実行情報」を参照してください。
4.1.7 アクセスパスに表示される情報(アルファベット順)
アクセスパスに表示される情報を,アルファベット順に次の表に示します。
表 4‒1 アクセスパスに表示される情報(アルファベット順)
先頭の文字
出力情報
説明
分類
B
BUILD COLUMN
BUILD COLUMN には,ハッシュジョインの
外表の構成列が,次のどれかの形式で出力され
ます。
表の結合方式に関する
情報
• スキーマ名.表名.列名
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
186
先頭の文字
出力情報
説明
分類
• 問合せ名.列名
• 相関名.列名
構成列は相関名を優先的に表示します。なお,
構成列名を表示できない場合は,***が出力さ
れます。
BUILD COLUMN は,ハッシュジョインが実
行される場合に限り出力されます。
C
CHUNK
チャンクのスキップ条件が使用されることを示
しています。
CHUNK AND SEGMENT
チャンクのスキップ条件とセグメントのスキッ
プ条件の両方が使用されることを示しています。
CREATE GLOBAL WORK
TABLE (WORK TABLE 作業表番
号)
グローバル作業表が作成されることを示してい
ます。
CREATE LOCAL WORK TABLE
(WORK TABLE 作業表番号)
ローカル作業表が作成されることを示していま
す。
インデクスに関する
情報
作業表の作成情報
作業表番号とは,作業表を一意に識別するため
に割り当てられた番号のことです。
D
F
CROSS JOIN
交差結合が指定されていることを示しています。 表の結合方式に関する
情報
DELETE STATEMENT
DELETE 文が実行されることを示しています。 実行した SQL 文の
種類
DERIVED TABLE
導出表が指定されていることを示しています。 導出表の指定
FULL OUTER JOIN(LEFT)
FULL OUTER JOIN による外結合が指定され
ていることを示しています。
表の結合方式に関する
情報
GLOBAL HASH GROUPING
グローバルハッシュグループ化が実行されるこ
とを示しています。また,ハッシュテーブル領
域で処理できない行がある場合,作業表を作成
することがあることも示しています。
グループ化の処理方式
GLOBAL HASH UNIQUE
グローバルハッシュグループ化を適用して検索
結果の重複を排除していることを示していま
す。また,ハッシュテーブル領域で処理できな
い行がある場合に,作業表が作成されているこ
とも示しています。
重複排除の処理方式
GROUPING
作業表を使用しないグループ化が実行されるこ
とを示しています。
グループ化の処理方式
HASH JOIN
表の結合処理で,ハッシュジョインが実行され
ることを示しています。
• 表の結合方式(ツ
リー表示)
2 つの表の列を比較する=条件がある場合,
ハッシュジョインが実行されることがありま
す。また,ハッシュテーブル領域で処理できな
• 表の結合方式(詳細
表示)
FULL OUTER JOIN(RIGHT)
G
H
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
187
先頭の文字
出力情報
説明
分類
い行がある場合,作業表が作成されることがあ
ります。
I
HAVING
HAVING 句が指定されていることを示してい
ます。また,HAVING 句を指定していない場
合でも,導出表の展開によって表示されること
があります。
HAVING 句の指定
INDEX COLUMN
インデクス構成列に関する情報を示しています。 インデクスに関する
情報
B-tree インデクスの場合は,インデクス構成
列名,キー値の並び順,およびサーチ条件が出
力されます。
テキストインデクスまたはレンジインデクスの
場合は,インデクス構成列名が出力されます。
INDEX NAME
インデクス名です。
INDEX SCAN(スキーマ名.表識別子
(問合せ名または相関名))
表の検索処理で,インデクススキャンが実行さ
れることを示しています。問合せ名または相関
名がある場合は,問合せ名または相関名が表示
されます。
• 表の検索方式(ツ
リー表示)
• 表の検索方式(詳細
表示)
INDEX TYPE
インデクス種別(B-tree インデクス,テキス
トインデクス,またはレンジインデクス)を示
しています。
インデクスに関する
情報
INNER JOIN
内結合が指定されていることを示しています。 表の結合方式に関する
情報
INSERT STATEMENT
INSERT 文が実行されることを示しています。 実行した SQL 文の
種類
J
JOIN TYPE
結合種別を示しています。
K
KEY SCAN
表の検索処理で,キースキャンが実行されるこ
とを示しています。
表の結合方式に関する
情報
• 表の検索方式(ツ
リー表示)
• 表の検索方式(詳細
表示)
L
LIMIT オフセット行数,リミット
行数
LIMIT 句が指定されていることを示していま
す。オフセット行数の指定がない場合は,オフ
セット行数は表示されません。
LIMIT 句の指定
オフセット行数とリミット行数の両方,または
どちらか一方に?パラメタが指定されている場
合は,? PARAMETER と表示されます。
LEFT OUTER JOIN
LEFT OUTER JOIN による外結合が指定され
ていることを示しています。
表の結合方式に関する
情報
LOCAL HASH GROUPING
ローカルハッシュグループ化が実行されること
を示しています。また,ハッシュグループ化領
グループ化の処理方式
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
188
先頭の文字
出力情報
説明
分類
域で処理できない行がある場合,作業表を作成
することがあることも示しています。
N
NESTED LOOP JOIN
表の結合処理で,ネストループジョインが実行
されることを示しています。
• 表の結合方式(ツ
リー表示)
• 表の結合方式(詳細
表示)
O
ORDER
非順序実行方式が適用されないで,順序実行方
式が適用されることを示しています。
順序実行方式
P
PROBE COLUMN
PROBE COLUMN には,ハッシュジョイン
の内表の構成列が,次のどれかの形式で出力さ
れます。
表の結合方式に関する
情報
• スキーマ名.表名.列名
• 問合せ名.列名
• 相関名.列名
構成列は相関名を優先的に表示します。なお,
構成列名を表示できない場合は,***が出力さ
れます。
PROBE COLUMN は,ハッシュジョインが
実行される場合に限り出力されます。
PURGE CHUNK STATEMENT
PURGE CHUNK 文が実行されることを示し
ています。
実行した SQL 文の
種類
QUERY
副問合せおよび導出表以外の問合せが指定され
ていることを示しています。
問合せの種類
QUERY SCAN(QUERY 問合せ番
号)
問合せ検索が実行されることを示しています。 問合せ検索の実行
R
RIGHT OUTER JOIN
RIGHT OUTER JOIN による外結合が指定さ
れていることを示しています。
表の結合方式に関する
情報
S
SEGMENT
セグメントのスキップ条件を使用します。
インデクスに関する
情報
SELECT STATEMENT
SELECT 文が実行されることを示しています。 実行した SQL 文の
種類
SET OPERATION
集合演算が指定されていることを示しています。 集合演算の指定
SET OPERATION TYPE
実行される集合演算の種類を示しています。
集合演算に関する情報
SKIP COND
レンジインデクス条件の種別です。
インデクスに関する
情報
SORT GROUPING
ソートグループ化が実行されることを示してい
ます。
グループ化の処理方式
SORTING {BYTE | ISO}
ORDER BY 句によるソート処理が実行される
ことを示しています。ただし,ORDER BY 句
ソート処理の実行
Q
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
189
先頭の文字
出力情報
説明
分類
を指定した場合でも表示されないときがありま
す。
SPECIFIC
GROUP BY 句に指定したグループ化方式指定
が有効になったことを示しています。
グループ化の処理方式
インデクス指定が有効になったことを示してい
ます。
インデクス指定
結合方式指定が有効になったことを示していま
す。
結合方式指定
インデクス指定が無効になったことを示してい
ます。
インデクス指定
結合方式指定が無効になったことを示していま
す。
結合方式指定
SUBQUERY
ネストループ実行,ハッシュ実行以外の副問合
せが適用されることを示しています。
副問合せの処理方式
SUBQUERY HASH
副問合せの処理方式で,ハッシュ実行が適用さ
れることを示しています。
SUBQUERY LOOP
副問合せの処理方式で,ネストループ実行が適
用されることを示しています。
TABLE FUNCTION DERIVED
TABLE
表関数導出表が指定されていることを示してい
ます。
TABLE SCAN
表の検索処理で,テーブルスキャンが実行され
ることを示しています。
SPECIFIC DISABLED
T
表関数導出表の指定
• 表の検索方式(ツ
リー表示)
• 表の検索方式(詳細
表示)
U
W
UNIQUE
このユニークインデクスが,一意性制約に違反
していない状態であることを示しています。
インデクスに関する
情報
UNIQUE INVALID
このユニークインデクスが,一意性制約に違反
している状態であることを示しています。
UPDATE STATEMENT
UPDATE 文が実行されることを示しています。 実行した SQL 文の
種類
USING CACHE
副問合せの結果を格納するためのキャッシュが
使用されることを示しています。
副問合せのキャッシュ
使用情報
USING COST
表またはインデクスに関するコスト情報が収集
されていることを示しています。
コスト情報の収集
WINDOW
ウィンドウ関数が指定されていることを示して
います。
ウィンドウ関数の指定
WORK TABLE SCAN(WORK
TABLE 作業表番号)
作業表の検索が実行されることを示していま
す。作業表番号とは,作業表を一意に識別する
ために割り当てられた番号のことです。
作業表の検索実行
4. AP のチューニング
Hitachi Advanced Data Binder AP 開発ガイド
190
第 3 編 AP 作成編【JDBC】
5
AP の作成
この章では,JDBC ドライバを使用した AP の作成方法について説明します。
Hitachi Advanced Data Binder AP 開発ガイド
191
5.1 HADB が提供している JDBC ドライバ
JDBC ドライバを使用してデータベースにアクセスします。ここでは,HADB が提供している JDBC ドラ
イバの JDBC 規格への準拠範囲と,JAR ファイルの格納先について説明します。
5.1.1 JDBC 規格への準拠範囲
HADB は Type4 の JDBC ドライバを実装しています。HADB の JDBC ドライバの JDBC 規格への準拠
範囲を次の表に示します。
表 5‒1 HADB の JDBC ドライバの JDBC 規格への準拠範囲
項番
1
JDBC の規格
機能
The JDBCTM API Version 1.20(JDBC 1.2 API) Driver インタフェース
準拠範囲
○
2
Connection インタフェース
○
3
Statement インタフェース
○
4
PreparedStatement インタフェース
○
5
CallableStatement インタフェース
×
6
ResultSet インタフェース
○
7
DatabaseMetaData インタフェース
○
8
ResultSetMetaData インタフェース
○
9
Blob インタフェース
×
10
Array インタフェース
×
11
SQLException インタフェース
○
12
SQLWarning インタフェース
○
13
14
JDBCTM 2.1 API Version 1.1(JDBC 2.1 コア
API)
結果セットの拡張
△※1
バッチ更新
○
15
Java オブジェクトの持続化
×
16
JDBC SQL データ型追加
×
17
データ型カスタムマッピング
×
JNDI
○
接続プール
○
20
分散トランザクション(JTA 対応)
×
21
Rowsets
×
18
19
JDBC 2.0 Standard Extension API Version 1.0
(JDBC 2.0 オプションパッケージ API)
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
192
項番
JDBC の規格
機能
JDBCTM 3.0 Specification(JDBC 3.0 API)
セーブポイント
×
23
接続プール機能強化
×
24
パラメタメタデータ
○
25
自動生成キー
×
26
結果セットの複数同時オープン
×
27
CallableStatement でのパラメタ名の使用
×
28
ホールダブルカーソル
○
29
BOOLEAN 型
×
30
Blob クラス内でのデータ操作
×
31
参照型
×
32
DATALINK/URL 型
×
33
JCA 関連アーキテクチャ
×
34
データベースメタデータの追加 API
○
java.sql.Driver 自動ローディング
○
36
ROWID データ型
×
37
各国文字データ型
×
38
BLOB/CLOB 機能拡張
×
39
XML サポート
×
40
ラッパーパターン
○
41
SQL 例外拡張
○
42
接続管理
△※2
43
スカラ関数追加
△※3
44
データベースメタデータの追加 API
22
35
JDBCTM 4.0 Specification(JDBC 4.0 API)
準拠範囲
○
(凡例)
○:サポート対象です。
△:一部の機能をサポート対象にしています。
×:サポート対象外です。
注※1
スクロール機能だけをサポートしています。
注※2
Connection#isValid(),および Statement#isPoolable()だけをサポートしています。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
193
注※3
CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,および EXTRACT だけをサ
ポートしています。
以降,Type4 JDBC ドライバを「JDBC ドライバ」と表記します。
5.1.2 Java Runtime Environment(JRE)および Java Development Kit
(JDK)のインストール
HADB クライアントをインストールしたマシンに,次に示す製品をインストールしてください。
■AP を実行する場合
• Java Runtime Environment(JRE)バージョン 6.0 以降
■AP を開発および実行する場合
• Java Development Kit(JDK)バージョン 6 以降
なお,HADB サーバで AP を実行する場合は,HADB サーバをインストールしたマシンに JRE をインス
トールしてください。HADB サーバで AP を開発および実行する場合は,HADB サーバをインストール
したマシンに JDK をインストールしてください。
5.1.3 JAR ファイルの格納先
HADB サーバまたは HADB クライアントのインストール時に,Windows 版および Linux 版 JDBC ドラ
イバは自動的にインストールされます。JAR ファイルの格納先を次の表に示します。
表 5‒2 JAR ファイルの格納先
項番
種別
JAR ファイルの格納先
1
HADB サーバ
$ADBDIR/client/lib/adbjdbc.jar
2
HADB クライアント
• Windows 版の HADB クライアントの場合
%ADBCLTDIR%\client\lib\adbjdbc.jar
• Linux 版の HADB クライアントの場合
$ADBCLTDIR/client/lib/adbjdbc.jar
注
AIX で JDBC ドライバを使用する場合は,HADB サーバにインストールされた JDBC ドライバを任意
のディレクトリにコピーして使用してください。
JAR ファイルのパッケージ名称とディレクトリ構成を次に示します。
• パッケージ名称:com.hitachi.hadb.jdbc
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
194
• ディレクトリ構成:com/hitachi/hadb/jdbc/
参考
HADB,hadb は,Hitachi Advanced Data Binder の略称です。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
195
5.2 AP の処理の基本的な流れ
データベースを操作する際の AP の処理の基本的な流れを次の図に示します。
図 5‒1 データベースを操作する際の AP の処理の基本的な流れ
[説明]
1. DriverManager クラスまたは DataSource クラスの getConnection メソッドを使用して,HADB
サーバに接続します。HADB サーバへの接続方法の詳細については,「5.3 HADB サーバへの接
続方法」を参照してください。
2. データを操作する SQL 文を実行します。SELECT 文を実行する場合は,「5.4 データを検索する
場合(SELECT 文を実行する場合)」を参照してください。
INSERT 文,UPDATE 文,または DELETE 文を実行する場合は,「5.5 データを追加,更新,ま
たは削除する場合(INSERT 文,UPDATE 文,または DELETE 文を実行する場合)」を参照して
ください。
3. Connection オブジェクトの close メソッドを使用して,HADB サーバから AP を切り離します。
JDBC の API については,「6. JDBC 1.2 API」以降で説明しています。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
196
5.3 HADB サーバへの接続方法
HADB のデータベースにアクセスするには,HADB サーバに接続する必要があります。HADB サーバに
接続するには,次に示す 2 つの方法があります。
• DriverManager クラスの getConnection メソッドを使用する方法
• DataSource クラスの getConnection メソッドを使用する方法
なお,getConnection メソッドを実行するには CONNECT 権限が必要です。
各方法の詳細を以降で説明します。
5.3.1 DriverManager クラスの getConnection メソッドで HADB サーバ
に接続する方法
DriverManager クラスの getConnection メソッドを実行して HADB サーバに接続します。
getConnection メソッドを実行する前に Java 仮想マシンに Driver クラスが自動で登録されます(なお,
「5.3.1(1) Java 仮想マシンへの Driver クラスの登録方法」を参照して登録作業をしても問題ありません)
。
そのあとに,getConnection メソッドを実行して HADB サーバに接続します。
各手順の詳細を以降で説明します。
(1) Java 仮想マシンへの Driver クラスの登録方法
Java 仮想マシンに Driver クラスを登録します。Java 仮想マシンに Driver クラスを登録する際に必要な
ドライバ名称は,「パッケージ名称.クラス名称」です。JDBC ドライバのパッケージ名称とクラス名称を
次に示します。
• パッケージ名称:com.hitachi.hadb.jdbc
• クラス名称:HADBDriver
参考
HADB,hadb は,Hitachi Advanced Data Binder の略称です。
Driver クラスを登録するには次に示す 3 つの方法があります。
■登録方法 1(Class クラスの forName メソッドを使用して登録する方法)
アプリケーション内で,次のように Class クラスの forName メソッドを実行します。
Class.forName("com.hitachi.hadb.jdbc.HADBDriver");
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
197
■登録方法 2(システムプロパティを使用して登録する方法)
Java 仮想マシンのシステムプロパティ(jdbc.drivers)に次の値を設定します。
System.setProperty("jdbc.drivers", "com.hitachi.hadb.jdbc.HADBDriver");
■登録方法 3(Java 仮想マシンの動作設定ファイルを使用して登録する方法)
この方法は Java Applet の場合に限ります。
[JAVA_HOME]\.hotjava\properties ファイルに,次の内容を記述します([JAVA_HOME]は,Java
実行環境によって異なります)
。複数の JDBC ドライバを登録する場合には,コロン(:)で区切って記
述してください。
jdbc.drivers="com.hitachi.hadb.jdbc.HADBDriver"
(2) getConnection メソッドによる HADB サーバへの接続
DriverManager クラスの getConnection メソッドを実行して HADB サーバに接続します。正常に HADB
サーバに接続した場合,JDBC ドライバはこれらのメソッドを実行した結果として,Connection クラス
のインスタンスの参照を返却します。HADB サーバへの接続に失敗した場合(次に示す場合)は,
SQLException が投入されます。
• 必要な接続情報が引数に指定されていない場合
• 接続情報の指定内容が不正な場合
• 接続に失敗した場合(接続先の HADB サーバが開始していないときなど)
getConnection メソッドには次に示す 3 つの形式があり,引数(url,user,password,および info)に
は HADB サーバへの接続情報を指定します。
• public static Connection getConnection(String url)
• public static Connection getConnection(String url, String user, String password)
• public static Connection getConnection(String url, Properties info)
各引数の指定内容を以降で説明します。
(a) 引数 url の指定内容(接続用の URL の指定)
引数 url には接続用の URL を指定します。URL の指定形式を次に示します。
jdbc:hadb[://[host][:port]/[?property=value[&property=value]...]]
参考
HADB,hadb は,Hitachi Advanced Data Binder の略称です。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
198
URL の指定例
• 例 1:プロパティを指定しない場合
jdbc:hadb://localhost:23650/
• 例 2:プロパティを 1 つ指定する場合
jdbc:hadb://localhost:23650/?adb_clt_ap_name=AP001
• 例 3:複数のプロパティを指定する場合
jdbc:hadb://localhost:23650/?methodtrace=ON&tracenum=600
&sqlwarningkeep=FALSE&user=ADBUSER01&password=password01&adb_clt_ap_name=AP001
URL の指定規則
• URL 内の各項目および項目間にはスペースを入れないでください。
• 各項目名称の大文字と小文字は区別されます。
• [ ]で囲まれている項目は省略できます。
• 最初のプロパティ(property)を指定する前に?を指定し,各プロパティの指定は&で区切ります。
• 同じプロパティを複数指定した場合,最初に指定された指定値が有効になります。
• プロパティの指定値として,&は使用できません。パスワードに'&'を含む場合は,URL で password
プロパティを指定できないため,ほかの接続方法を利用してください。HADB のパスワードについ
ては,マニュアル「HADB システム構築・運用ガイド」の「パスワードの指定規則」を参照して
ください。
URL の各項目の説明
●jdbc:hadb
プロトコル名称,およびサブプロトコル名称です。必ず指定してください。大文字,小文字の指定は区
別されます。
●host
接続先の HADB サーバのホスト名を指定します。ここで指定したホスト名は,HADB クライアントと
HADB サーバ間の通信で使用します。
なお,HADB サーバのホスト名はほかの方法でも指定できます。ほかの指定方法および指定の優先順
位については,「5.3.4 接続情報の優先順位」を参照してください。
ホスト名がどこにも指定されていない状態で getConnection メソッドを実行すると,SQLException
が投入されます。
コールドスタンバイ構成の場合は,HADB サーバと HADB クライアント間の通信で使用するエイリア
ス IP アドレスを指定してください。
[マルチノード機能]
マルチノード機能を使用している場合は,HADB サーバと HADB クライアント間の通信で使用す
るエイリアス IP アドレスを指定してください。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
199
●port
HADB クライアントと HADB サーバ間の通信で使用する,HADB サーバのポート番号を指定します。
なお,HADB サーバのポート番号はほかの方法でも指定できます。ほかの指定方法および指定の優先
順位については,「5.3.4 接続情報の優先順位」を参照してください。
ポート番号がどこにも指定されていない状態で getConnection メソッドを実行すると,SQLException
が投入されます。
●property=value
各プロパティ(property)に値(value)を指定します。
引数 url に指定できるプロパティを次の表に示します。
表 5‒3 引数 url に指定できるプロパティ
項番
1
プロパティ名
説明
user
HADB サーバに接続する認可識別子を指定します。
認可識別子の名称規則については,マニュアル「HADB SQL リファレン
ス」の「名前の指定」を参照してください。
なお,HADB サーバに接続する認可識別子はほかの方法でも指定できま
す。指定の優先順位については,「5.3.4 接続情報の優先順位」を参照し
てください。
認可識別子がどこにも指定されていない状態で getConnection メソッドを
実行すると,SQLException が投入されます。
2
password
3
encodelang
HADB サーバに接続する認可識別子のパスワードを指定します。
String クラスで HADB サーバとのデータ受け渡しをする場合に,文字コー
ド変換処理で使用する変換文字セットを指定します。指定できる変換文字
セットは,「JavaTM Platform, Standard Edition JDK ドキュメント」の
「国際化サポート」で示される「サポートされているエンコーディング」の
一覧から選択してください。
この指定を省略した場合,「表 5-17 HADB サーバの文字コードに対応す
る文字セット名称」の組み合わせに従った変換文字セットで文字コードが
変換されます。ただし,次に示す値については,Java 仮想マシンのデフォ
ルトの変換文字セットで変換されます。
• AP 識別子(ユーザプロパティの adb_clt_ap_name などで設定)の指
定値
• 認可識別子,またはパスワード(getConnection メソッドなどで指定)
このプロパティは,「表 5-17 HADB サーバの文字コードに対応する文字
セット名称」の組み合わせの変換文字セット以外の文字セットで文字コー
ド変換したい場合だけ指定してください。「表 5-17 HADB サーバの文字
コードに対応する文字セット名称」の組み合わせの変換文字セットで文字
コード変換する場合は,このプロパティを指定する必要はありません。
4
methodtrace
JDBC インタフェースメソッドトレースを取得するかどうかを指定します。
ON:取得します。
OFF:取得しません。
JDBC インタフェースメソッドトレースについては,「5.7.1 JDBC インタ
フェースメソッドトレース」を参照してください。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
200
項番
プロパティ名
説明
上記以外の値を指定した場合は,SQLException が投入されます。
この指定を省略した場合,OFF が仮定されます。
なお,setLogWriter メソッドで有効なログライターを設定していない場
合,ON を指定しても JDBC インタフェースメソッドトレースは取得され
ません。
5
tracenum
JDBC インタフェースメソッドトレースのエントリ数を,10〜1,000 の範
囲で指定します。省略値は 500 になります。
このプロパティの指定値は,次に示すすべての条件を満たしている場合に
有効になります。
• setLogWriter メソッドで有効なログライターを設定している
• methodtrace に ON を指定している
プロパティの指定が有効な状態のときに 10〜1,000 以外の値を指定する
と,SQLException が投入されます。
6
sqlwarningkeep
HADB サーバから返される警告情報を保持するかどうかを指定します。
TRUE:警告情報を保持します。
FALSE:警告情報を保持しません。
この指定を省略した場合,TRUE が仮定されます。上記以外の値を指定し
た場合,SQLException が投入されます。
Connection オブジェクトの警告情報保持レベルの詳細については,
「6.9.1 SQLWarning オブジェクトの生成」を参照してください。
7
adb_clt_rpc_con_wait_time
HADB サーバへの接続処理の完了待ち時間を指定します。
このプロパティの機能は,クライアント定義の
adb_clt_rpc_con_wait_time オペランドと同じです。機能詳細および指定
できる値については,クライアント定義の adb_clt_rpc_con_wait_time オ
ペランドを参照してください。
8
adb_clt_rpc_sql_wait_time
HADB サーバからの応答待ち時間を指定します。
このプロパティの機能は,クライアント定義の adb_clt_rpc_sql_wait_time
オペランドと同じです。機能詳細および指定できる値については,クライ
アント定義の adb_clt_rpc_sql_wait_time オペランドを参照してください。
9
adb_clt_ap_name
HADB サーバに接続する AP の識別情報(AP 識別子)を指定します。
AP 識別子は Java 仮想マシンのデフォルトの変換文字セットで変換される
ため,変換文字セットに依存しない半角英数字だけで構成される名称を指
定することを推奨します。
なお,AP 識別子はほかの方法でも指定できます。指定の優先順位について
は,「5.3.4 接続情報の優先順位」を参照してください。
AP 識別子をどこにも指定しないで HADB サーバに接続した場合,AP 識
別子には"********"が設定されます。
このプロパティの機能は,クライアント定義の adb_clt_ap_name オペラ
ンドと同じです。機能詳細および指定できる値については,クライアント
定義の adb_clt_ap_name オペランドを参照してください。
10
adb_clt_group_name
AP が属するクライアントグループ名を指定します。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
201
項番
プロパティ名
説明
このプロパティの機能は,クライアント定義の adb_clt_group_name オペ
ランドと同じです。機能詳細および指定できる値については,クライアン
ト定義の adb_clt_group_name オペランドを参照してください。
11
adb_clt_fetch_size
1 回の FETCH 処理で,HADB サーバから HADB クライアントに送信す
る検索結果の行数を指定します。
このプロパティの機能は,クライアント定義の adb_clt_fetch_size オペラ
ンドと同じです。機能詳細および指定できる値については,クライアント
定義の adb_clt_fetch_size オペランドを参照してください。
12
adb_dbbuff_wrktbl_clt_blk_num
ローカル作業表用バッファのページ数を指定します。
このプロパティの機能は,クライアント定義の
adb_dbbuff_wrktbl_clt_blk_num オペランドと同じです。機能詳細および
指定できる値については,クライアント定義の
adb_dbbuff_wrktbl_clt_blk_num オペランドを参照してください。
13
adb_sql_exe_max_rthd_num
SQL 実行時に使用する処理リアルスレッド数の最大値を指定します。
このプロパティの機能は,クライアント定義の
adb_sql_exe_max_rthd_num オペランドと同じです。機能詳細および指
定できる値については,クライアント定義の adb_sql_exe_max_rthd_num
オペランドを参照してください。
14
adb_sql_exe_hashgrp_area_size
ハッシュグループ化領域の大きさをキロバイト単位で指定します。
このプロパティの機能は,クライアント定義の
adb_sql_exe_hashgrp_area_size オペランドと同じです。機能詳細および
指定できる値については,クライアント定義の
adb_sql_exe_hashgrp_area_size オペランドを参照してください。
15
adb_sql_exe_hashtbl_area_size
ハッシュテーブル領域サイズをメガバイト単位で指定します。
このプロパティの機能は,クライアント定義の
adb_sql_exe_hashtbl_area_size オペランドと同じです。機能詳細および
指定できる値については,クライアント定義の
adb_sql_exe_hashtbl_area_size オペランドを参照してください。
16
adb_sql_prep_delrsvd_use_srvdef
サーバ定義の adb_sql_prep_delrsvd_words オペランドの指定に従って予
約語を削除するかどうかを指定します。
このプロパティの機能は,クライアント定義の
adb_sql_prep_delrsvd_use_srvdef オペランドと同じです。機能詳細およ
び指定できる値については,クライアント定義の
adb_sql_prep_delrsvd_use_srvdef オペランドを参照してください。
17
adb_clt_trn_iso_lv
トランザクション隔離性水準を指定します。
このプロパティの機能は,クライアント定義の adb_clt_trn_iso_lv オペラ
ンドと同じです。機能詳細および指定できる値については,クライアント
定義の adb_clt_trn_iso_lv オペランドを参照してください。
18
adb_clt_trn_access_mode
トランザクションアクセスモードを指定します。
このプロパティの機能は,クライアント定義の adb_clt_trn_access_mode
オペランドと同じです。機能詳細および指定できる値については,クライ
アント定義の adb_clt_trn_access_mode オペランドを参照してください。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
202
項番
19
プロパティ名
説明
adb_clt_sql_text_out
HADB クライアントが発行した SQL 文を,クライアントメッセージログ
ファイルおよびサーバメッセージログファイルに出力するかどうかを指定
します。
このプロパティの機能は,クライアント定義の adb_clt_sql_text_out オペ
ランドと同じです。機能詳細および指定できる値については,クライアン
ト定義の adb_clt_sql_text_out オペランドを参照してください。
20
adb_clt_sql_order_mode
ORDER BY 句を指定した SELECT 文の文字データの並び替え順序を指定
します。
このプロパティの機能は,クライアント定義の adb_clt_sql_order_mode
オペランドと同じです。機能詳細および指定できる値については,クライ
アント定義の adb_clt_sql_order_mode オペランドを参照してください。
21
adb_jdbc_exc_trc_out_path
Exception トレースログを出力する これらのプロパティの機能詳細およ
ディレクトリを,絶対パスで指定し び指定できる値については,
ます。
「5.7.2(1)(b) Exception トレース
ログを取得するための設定(プロパ
1 ファイルへ出力する情報数の上限
ティの設定)
」を参照してください。
を指定します。
22
adb_jdbc_info_max
23
adb_jdbc_cache_info_max
メモリ内で蓄積する情報数の上限を
指定します。
24
adb_jdbc_trc_out_lv
トレース取得レベルを指定します。
注
各プロパティは,ほかの方法でも指定できます。ほかの指定方法,および指定の優先順位については,「5.3.4 接続情報
の優先順位」を参照してください。
参考
HADB 03-00 で,接続用の URL で指定する各プロパティ名を次のように変更しました。変更前の
プロパティ名も使用できますが,HADB 03-00 以降にバージョンアップした場合は,プロパティ
名を変更することを推奨します。
項番
変更前のプロパティ名(HADB 03-00 より前のプロ
パティ名)
変更後のプロパティ名(HADB 03-00 以降のプロパ
ティ名)
1
apname
adb_clt_ap_name
2
extrcoutpath
adb_jdbc_exc_trc_out_path
3
extrcinfomax
adb_jdbc_info_max
4
extrccacheinfomax
adb_jdbc_cache_info_max
5
extrcoutlv
adb_jdbc_trc_out_lv
(b) 引数 user の指定内容(認可識別子の指定)
HADB サーバに接続する認可識別子を指定します。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
203
認可識別子の名称規則については,マニュアル「HADB SQL リファレンス」の「名前の指定」を参照し
てください。
なお,HADB サーバに接続する認可識別子はほかの方法でも指定できます。指定の優先順位については,
「5.3.4 接続情報の優先順位」を参照してください。
認可識別子がどこにも指定されていない状態で getConnection メソッドを実行すると,SQLException
が投入されます。
null を指定した場合,認可識別子の指定を省略したと見なされます。
また,長さ 0 の文字列を指定した場合は,SQLException が投入されます。
(c) 引数 password の指定内容(パスワードの指定)
HADB サーバに接続する認可識別子のパスワードを指定します。
null を指定した場合,または長さ 0 の文字列を指定した場合,パスワードの指定を省略したと見なされま
す。
(d) 引数 info の指定内容(ユーザプロパティの指定)
引数 info に指定できる情報(ユーザプロパティに指定できる情報)を次の表に示します。
表 5‒4 引数 info に指定できる情報(ユーザプロパティに指定できる情報)
項番
1
プロパティ名
説明
user
HADB サーバに接続する認可識別子を指定します。
認可識別子の名称規則については,マニュアル「HADB SQL リファレン
ス」の「名前の指定」を参照してください。
• HADB サーバに接続する認可識別子はほかの方法でも指定できます。
指定の優先順位については,「5.3.4 接続情報の優先順位」を参照して
ください。
• 認可識別子がどこにも指定されていない状態で getConnection メソッ
ドを実行すると,SQLException が投入されます。
• null を指定した場合,認可識別子の指定がないと見なされます。
• 長さ 0 の文字列を指定した場合,SQLException が投入されます。
2
password
HADB サーバに接続する認可識別子のパスワードを指定します。
null を指定した場合,または長さ 0 の文字列を指定した場合,パスワード
の指定がないと見なされます。
3
encodelang
String クラスで HADB サーバとのデータ受け渡しをする場合に,文字コー
ド変換処理で使用する変換文字セットを指定します。このプロパティの機
能詳細および指定できる値については,「表 5-3 引数 url に指定できるプ
ロパティ」を参照してください。
Java 仮想マシンがサポートしていない変換文字セット名称を指定した場合
は,HADB サーバとの接続時に SQLException を投入します。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
204
項番
プロパティ名
説明
この指定を省略した場合,接続用の URL の encodelang の指定が適用さ
れます。
4
methodtrace
JDBC インタフェースメソッドトレースを取得するかどうかを指定します。
このプロパティの機能詳細および指定できる値については,「表 5-3 引数
url に指定できるプロパティ」を参照してください。
この指定を省略した場合,接続用の URL の methodtrace の指定が適用さ
れます。
5
tracenum
JDBC インタフェースメソッドトレースのエントリ数を指定します。この
プロパティの機能詳細および指定できる値については,「表 5-3 引数 url
に指定できるプロパティ」を参照してください。
この指定を省略した場合,接続用の URL の tracenum の指定が適用されま
す。
6
sqlwarningkeep
HADB サーバから返される警告情報を保持するかどうかを指定します。こ
のプロパティの機能詳細および指定できる値については,「表 5-3 引数 url
に指定できるプロパティ」を参照してください。
この指定を省略した場合,接続用の URL の sqlwarningkeep の指定が適
用されます。
7
adb_clt_rpc_srv_host
接続先の HADB サーバのホスト名を指定します。
このプロパティの機能は,クライアント定義の adb_clt_rpc_srv_host オペ
ランドと同じです。機能詳細および指定できる値については,クライアン
ト定義の adb_clt_rpc_srv_host オペランドを参照してください。
8
adb_clt_rpc_srv_port
HADB クライアントと HADB サーバ間の通信で使用する,HADB サーバ
のポート番号を指定します。
このプロパティの機能は,クライアント定義の adb_clt_rpc_srv_port オペ
ランドと同じです。機能詳細および指定できる値については,クライアン
ト定義の adb_clt_rpc_srv_port オペランドを参照してください。
9
adb_clt_rpc_con_wait_time
HADB サーバへの接続処理の完了待ち時間を指定します。
このプロパティの機能は,クライアント定義の
adb_clt_rpc_con_wait_time オペランドと同じです。機能詳細および指定
できる値については,クライアント定義の adb_clt_rpc_con_wait_time オ
ペランドを参照してください。
10
adb_clt_rpc_sql_wait_time
HADB サーバからの応答待ち時間を指定します。
このプロパティの機能は,クライアント定義の adb_clt_rpc_sql_wait_time
オペランドと同じです。機能詳細および指定できる値については,クライ
アント定義の adb_clt_rpc_sql_wait_time オペランドを参照してください。
11
adb_clt_ap_name
HADB サーバに接続する AP の識別情報(AP 識別子)を指定します。
AP 識別子は Java 仮想マシンのデフォルトの変換文字セットで変換される
ため,変換文字セットに依存しない半角英数字だけで構成される名称を指
定することを推奨します。
なお,AP 識別子はほかの方法でも指定できます。指定の優先順位について
は,「5.3.4 接続情報の優先順位」を参照してください。
AP 識別子をどこにも指定しないで HADB サーバに接続した場合,AP 識
別子には"********"が設定されます。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
205
項番
プロパティ名
説明
このプロパティの機能は,クライアント定義の adb_clt_ap_name オペラ
ンドと同じです。機能詳細および指定できる値については,クライアント
定義の adb_clt_ap_name オペランドを参照してください。
12
adb_clt_group_name
AP が属するクライアントグループ名を指定します。
このプロパティの機能は,クライアント定義の adb_clt_group_name オペ
ランドと同じです。機能詳細および指定できる値については,クライアン
ト定義の adb_clt_group_name オペランドを参照してください。
13
adb_clt_fetch_size
1 回の FETCH 処理で,HADB サーバから HADB クライアントに送信す
る検索結果の行数を指定します。
このプロパティの機能は,クライアント定義の adb_clt_fetch_size オペラ
ンドと同じです。機能詳細および指定できる値については,クライアント
定義の adb_clt_fetch_size オペランドを参照してください。
14
adb_dbbuff_wrktbl_clt_blk_num
ローカル作業表用バッファのページ数を指定します。
このプロパティの機能は,クライアント定義の
adb_dbbuff_wrktbl_clt_blk_num オペランドと同じです。機能詳細および
指定できる値については,クライアント定義の
adb_dbbuff_wrktbl_clt_blk_num オペランドを参照してください。
15
adb_sql_exe_max_rthd_num
SQL 実行時に使用する処理リアルスレッド数の最大値を指定します。
このプロパティの機能は,クライアント定義の
adb_sql_exe_max_rthd_num オペランドと同じです。機能詳細および指
定できる値については,クライアント定義の adb_sql_exe_max_rthd_num
オペランドを参照してください。
16
adb_sql_exe_hashgrp_area_size
ハッシュグループ化領域の大きさをキロバイト単位で指定します。
このプロパティの機能は,クライアント定義の
adb_sql_exe_hashgrp_area_size オペランドと同じです。機能詳細および
指定できる値については,クライアント定義の
adb_sql_exe_hashgrp_area_size オペランドを参照してください。
17
adb_sql_exe_hashtbl_area_size
ハッシュテーブル領域サイズをメガバイト単位で指定します。
このプロパティの機能は,クライアント定義の
adb_sql_exe_hashtbl_area_size オペランドと同じです。機能詳細および
指定できる値については,クライアント定義の
adb_sql_exe_hashtbl_area_size オペランドを参照してください。
18
adb_sql_prep_delrsvd_use_srvdef
サーバ定義の adb_sql_prep_delrsvd_words オペランドの指定に従って予
約語を削除するかどうかを指定します。
このプロパティの機能は,クライアント定義の
adb_sql_prep_delrsvd_use_srvdef オペランドと同じです。機能詳細およ
び指定できる値については,クライアント定義の
adb_sql_prep_delrsvd_use_srvdef オペランドを参照してください。
19
adb_clt_trn_iso_lv
トランザクション隔離性水準を指定します。
このプロパティの機能は,クライアント定義の adb_clt_trn_iso_lv オペラ
ンドと同じです。機能詳細および指定できる値については,クライアント
定義の adb_clt_trn_iso_lv オペランドを参照してください。
20
adb_clt_trn_access_mode
トランザクションアクセスモードを指定します。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
206
項番
プロパティ名
説明
このプロパティの機能は,クライアント定義の adb_clt_trn_access_mode
オペランドと同じです。機能詳細および指定できる値については,クライ
アント定義の adb_clt_trn_access_mode オペランドを参照してください。
21
adb_clt_sql_text_out
HADB クライアントが発行した SQL 文を,クライアントメッセージログ
ファイルおよびサーバメッセージログファイルに出力するかどうかを指定
します。
このプロパティの機能は,クライアント定義の adb_clt_sql_text_out オペ
ランドと同じです。機能詳細および指定できる値については,クライアン
ト定義の adb_clt_sql_text_out オペランドを参照してください。
22
adb_clt_sql_order_mode
ORDER BY 句を指定した SELECT 文の文字データの並び替え順序を指定
します。
このプロパティの機能は,クライアント定義の adb_clt_sql_order_mode
オペランドと同じです。機能詳細および指定できる値については,クライ
アント定義の adb_clt_sql_order_mode オペランドを参照してください。
23
adb_jdbc_exc_trc_out_path
Exception トレースログを出力する これらのプロパティの機能詳細およ
ディレクトリを,絶対パスで指定し び指定できる値については,
ます。
「5.7.2(1)(b) Exception トレース
ログを取得するための設定(プロパ
1 ファイルへ出力する情報数の上限
ティの設定)
」を参照してください。
を指定します。
24
adb_jdbc_info_max
25
adb_jdbc_cache_info_max
メモリ内で蓄積する情報数の上限を
指定します。
26
adb_jdbc_trc_out_lv
トレース取得レベルを指定します。
注
• 各プロパティは,ほかの方法でも指定できます。ほかの指定方法,および指定の優先順位について
は,「5.3.4 接続情報の優先順位」を参照してください。
• 各プロパティに null を指定した場合,指定を省略したと見なされます。
参考
HADB 03-00 で,ユーザプロパティの各プロパティ名を次のように変更しました。変更前のプロ
パティ名も使用できますが,HADB 03-00 以降にバージョンアップした場合は,プロパティ名を
変更することを推奨します。
項番
変更前のプロパティ名(HADB 03-00 より前のプロ
パティ名)
変更後のプロパティ名(HADB 03-00 以降のプロパ
ティ名)
1
apname
adb_clt_ap_name
2
host
adb_clt_rpc_srv_host
3
port
adb_clt_rpc_srv_port
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
207
5.3.2 DataSource クラスの getConnection メソッドで HADB サーバに接
続する方法
DataSource と JNDI を使用した DB 接続(HADB サーバへの接続)は,JDBC 2.0 Optional Package
で使用できるようになりました。
JNDI を必ず使用する必要はありませんが,JNDI を使用することで接続情報の設定が 1 回で済むというメ
リットがあります。DataSource クラスのインタフェース定義,および JNDI は,JDK に標準で含まれて
いないため,AP 開発をする場合には,JavaSoft の Web サイトから入手する必要があります。
DataSource と JNDI を使用した HADB サーバへの接続手順を次に示します。
手順
1. DataSource オブジェクトの生成
2. 接続情報の設定
3. JNDI への DataSource の登録
4. JNDI からの DataSource の取得
5. HADB サーバへの接続
JNDI を使用しない場合は,3 および 4 の操作をする必要はありません。
JNDI を使用する場合,1〜3 の操作は 1 回だけ実行します。そのあと,4 および 5 の操作をするだけで,
HADB サーバに接続できます。また,4 の操作のあと,必要に応じて接続情報を変更できます。
(1) DataSource オブジェクトの生成
JDBC ドライバが提供する,DataSource クラスのオブジェクトを生成します。
DataSource クラスのオブジェクト生成で必要となる,JDBC ドライバの DataSource クラス名は
AdbDataSource となります。
DataSource クラスのオブジェクトの生成例を次に示します。
com.hitachi.hadb.jdbc.AdbDataSource ds = null ;
ds = new com.hitachi.hadb.jdbc.AdbDataSource() ;
(2) 接続情報の設定
DataSource オブジェクトに対して,接続情報設定用メソッドを呼び出し,接続情報の設定をします。接
続情報取得用のメソッドも使用できるため,現在の接続情報の確認もできます。接続情報設定および取得
メソッドについては,「8.5 接続情報設定および取得インタフェース」を参照してください。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
208
(3) JNDI への DataSource の登録
DataSource オブジェクトを JNDI に登録します。
JNDI は,その実行環境によって幾つかのサービスプロバイダを選択できます。
DataSource オブジェクトの JNDI への登録例を次に示します(Windows の場合の例です)
。なお,登録
例では,サービスプロバイダの一つである,File System サービスプロバイダを使用しています。ほかの
サービスプロバイダについては,JNDI のドキュメントを参照してください。
// JDBCドライバが提供するDataSourceクラスのオブジェクトを生成する
com.hitachi.hadb.jdbc.AdbDataSource ds;
ds = new com.hitachi.hadb.jdbc.AdbDataSource();
// 接続情報を設定する
:
// システムプロパティを取得する
Properties sys_prop = System.getProperties() ;
// File Systemサービスプロバイダのプロパティを設定する
sys_prop.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.fscontext.RefFSContextFactory");
// File Systemサービスプロバイダで使用するディレクトリを設定する
// (この場合,c:\JNDI_DIRの下に登録される)
sys_prop.put(Context.PROVIDER_URL, "file:c:\\" + "JNDI_DIR");
// システムプロパティを更新する
System.setProperties(sys_prop) ;
// JNDIを初期化する
Context ctx = new InitialContext();
// JDBCドライバが提供するDataSourceクラスのオブジェクトを,
// jdbc/TestDataSourceという論理名称でJNDIに登録する
ctx.bind("jdbc" + "\\" + "TestDataSource", ds);
:
なお,JDBC 2.0 規格では,JNDI に登録する論理名称は,"jdbc"というサブコンテキスト下(登録例では
jdbc/TestDataSource)に登録するように推奨されています。
(4) JNDI からの DataSource の取得
JNDI から DataSource オブジェクトを取得します。
JNDI からの DataSource オブジェクトの取得例を次に示します(Windows の場合の例です)
。なお,取
得例では,サービスプロバイダの一つである,File System サービスプロバイダを使用しています。ほか
のサービスプロバイダについては,JNDI のドキュメントを参照してください。
// システムプロパティを取得する
Properties sys_prop = System.getProperties() ;
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
209
// File Systemサービスプロバイダのプロパティを設定する
sys_prop.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.fscontext.RefFSContextFactory");
// File Systemサービスプロバイダで使用するディレクトリを設定する
// (この場合,c:\JNDI_DIRの下に登録されている)
sys_prop.put(Context.PROVIDER_URL, "file:c:\\" + "JNDI_DIR");
// システムプロパティを更新する
System.setProperties(sys_prop) ;
// JNDIを初期化する
Context ctx = new InitialContext();
// jdbc/TestDataSourceという論理名称のオブジェクトをJNDIから取得する
Object obj = ctx.lookup("jdbc" + "\\" + "TestDataSource") ;
// 取り出したオブジェクトを,DataSourceクラスの型にキャストする
DataSource ds = (DataSource)obj;
:
(5) HADB サーバへの接続
DataSource オブジェクトに対して,getConnection メソッドを呼び出します。getConnection メソッ
ドの呼び出し例を次に示します。
DataSource ds
// JNDIからDataSourceオブジェクトを取得する
:
// getConnectionメソッドを発行する
Connection con = ds.getConnection();
または
Connection con = ds.getConnection("USERID", "PASSWORD");※
注※
メソッドの引数(認可識別子,パスワード)は,DataSource オブジェクトに設定した接続情報よりも
優先されます。次に示す場合は SQLException が投入されます。
• 必要な接続情報が DataSource オブジェクトに設定されていない場合
• 接続情報の内容が不正な場合
• HADB サーバとの接続に失敗した場合
JNDI から DataSource オブジェクトを取得後,必要に応じて接続情報を再度設定できます。この場合,
DataSource オブジェクトを,JDBC ドライバが提供する DataSource クラスの型にキャストしてから設
定する必要があります。例を次に示します。
DataSource ds
com.hitachi.hadb.jdbc.AdbDataSource
adb_ds;
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
210
// JNDIからDataSourceオブジェクトを取得する
:
// DataSourceオブジェクトを,JDBCドライバが提供する
// DataSourceクラスの型にキャストする
adb_ds = (com.hitachi.hadb.jdbc.AdbDataSource)ds;
// 接続情報を再設定する
:
5.3.3 システムプロパティの設定
Java 仮想マシンのシステムプロパティには,クライアント定義のオペランドと同じ情報を指定できます。
また,Exception トレースログに関する情報も指定できます。システムプロパティに指定できるプロパティ
を次の表に示します。
表 5‒5 システムプロパティに指定できるプロパティ
項番
1
プロパティ名
説明
adb_clt_rpc_srv_host
接続先の HADB サーバのホスト名を指定します。
このプロパティの機能は,クライアント定義の adb_clt_rpc_srv_host オペ
ランドと同じです。機能詳細および指定できる値については,クライアン
ト定義の adb_clt_rpc_srv_host オペランドを参照してください。
2
adb_clt_rpc_srv_port
HADB クライアントと HADB サーバ間の通信で使用する,HADB サーバ
のポート番号を指定します。
このプロパティの機能は,クライアント定義の adb_clt_rpc_srv_port オペ
ランドと同じです。機能詳細および指定できる値については,クライアン
ト定義の adb_clt_rpc_srv_port オペランドを参照してください。
3
adb_clt_rpc_con_wait_time
HADB サーバへの接続処理の完了待ち時間を指定します。
このプロパティの機能は,クライアント定義の
adb_clt_rpc_con_wait_time オペランドと同じです。機能詳細および指定
できる値については,クライアント定義の adb_clt_rpc_con_wait_time オ
ペランドを参照してください。
4
adb_clt_rpc_sql_wait_time
HADB サーバからの応答待ち時間を指定します。
このプロパティの機能は,クライアント定義の adb_clt_rpc_sql_wait_time
オペランドと同じです。機能詳細および指定できる値については,クライ
アント定義の adb_clt_rpc_sql_wait_time オペランドを参照してください。
5
adb_clt_ap_name
HADB サーバに接続する AP の識別情報(AP 識別子)を指定します。
このプロパティの機能は,クライアント定義の adb_clt_ap_name オペラ
ンドと同じです。機能詳細および指定できる値については,クライアント
定義の adb_clt_ap_name オペランドを参照してください。
6
adb_clt_group_name
AP が属するクライアントグループ名を指定します。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
211
項番
プロパティ名
説明
このプロパティの機能は,クライアント定義の adb_clt_group_name オペ
ランドと同じです。機能詳細および指定できる値については,クライアン
ト定義の adb_clt_group_name オペランドを参照してください。
7
adb_clt_fetch_size
1 回の FETCH 処理で,HADB サーバから HADB クライアントに送信す
る検索結果の行数を指定します。
このプロパティの機能は,クライアント定義の adb_clt_fetch_size オペラ
ンドと同じです。機能詳細および指定できる値については,クライアント
定義の adb_clt_fetch_size オペランドを参照してください。
8
adb_dbbuff_wrktbl_clt_blk_num
ローカル作業表用バッファのページ数を指定します。
このプロパティの機能は,クライアント定義の
adb_dbbuff_wrktbl_clt_blk_num オペランドと同じです。機能詳細および
指定できる値については,クライアント定義の
adb_dbbuff_wrktbl_clt_blk_num オペランドを参照してください。
9
adb_sql_exe_max_rthd_num
SQL 実行時に使用する処理リアルスレッド数の最大値を指定します。
このプロパティの機能は,クライアント定義の
adb_sql_exe_max_rthd_num オペランドと同じです。機能詳細および指
定できる値については,クライアント定義の adb_sql_exe_max_rthd_num
オペランドを参照してください。
10
adb_sql_exe_hashgrp_area_size
ハッシュグループ化領域の大きさをキロバイト単位で指定します。
このプロパティの機能は,クライアント定義の
adb_sql_exe_hashgrp_area_size オペランドと同じです。機能詳細および
指定できる値については,クライアント定義の
adb_sql_exe_hashgrp_area_size オペランドを参照してください。
11
adb_sql_exe_hashtbl_area_size
ハッシュテーブル領域サイズをメガバイト単位で指定します。
このプロパティの機能は,クライアント定義の
adb_sql_exe_hashtbl_area_size オペランドと同じです。機能詳細および
指定できる値については,クライアント定義の
adb_sql_exe_hashtbl_area_size オペランドを参照してください。
12
adb_sql_prep_delrsvd_use_srvdef
サーバ定義の adb_sql_prep_delrsvd_words オペランドの指定に従って予
約語を削除するかどうかを指定します。
このプロパティの機能は,クライアント定義の
adb_sql_prep_delrsvd_use_srvdef オペランドと同じです。機能詳細およ
び指定できる値については,クライアント定義の
adb_sql_prep_delrsvd_use_srvdef オペランドを参照してください。
13
adb_clt_trn_iso_lv
トランザクション隔離性水準を指定します。
このプロパティの機能は,クライアント定義の adb_clt_trn_iso_lv オペラ
ンドと同じです。機能詳細および指定できる値については,クライアント
定義の adb_clt_trn_iso_lv オペランドを参照してください。
14
adb_clt_trn_access_mode
トランザクションアクセスモードを指定します。
このプロパティの機能は,クライアント定義の adb_clt_trn_access_mode
オペランドと同じです。機能詳細および指定できる値については,クライ
アント定義の adb_clt_trn_access_mode オペランドを参照してください。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
212
項番
15
プロパティ名
説明
adb_clt_sql_text_out
HADB クライアントが発行した SQL 文を,クライアントメッセージログ
ファイルおよびサーバメッセージログファイルに出力するかどうかを指定
します。
このプロパティの機能は,クライアント定義の adb_clt_sql_text_out オペ
ランドと同じです。機能詳細および指定できる値については,クライアン
ト定義の adb_clt_sql_text_out オペランドを参照してください。
16
adb_clt_sql_order_mode
ORDER BY 句を指定した SELECT 文の文字データの並び替え順序を指定
します。
このプロパティの機能は,クライアント定義の adb_clt_sql_order_mode
オペランドと同じです。機能詳細および指定できる値については,クライ
アント定義の adb_clt_sql_order_mode オペランドを参照してください。
17
adb_jdbc_exc_trc_out_path
Exception トレースログを出力する これらのプロパティの機能詳細およ
ディレクトリを,絶対パスで指定し び指定できる値については,
ます。
「5.7.2(1)(b) Exception トレース
ログを取得するための設定(プロパ
1 ファイルへ出力する情報数の上限
ティの設定)
」を参照してください。
を指定します。
18
adb_jdbc_info_max
19
adb_jdbc_cache_info_max
メモリ内で蓄積する情報数の上限を
指定します。
20
adb_jdbc_trc_out_lv
トレース取得レベルを指定します。
注
各プロパティは,ほかの方法でも指定できます。ほかの指定方法,および指定の優先順位については,「5.3.4 接続情報の優
先順位」を参照してください。
参考
HADB 03-00 で,システムプロパティの各プロパティ名を次のように変更しました。変更前のプ
ロパティ名も使用できますが,HADB 03-00 以降にバージョンアップした場合は,プロパティ名
を変更することを推奨します。
項番
変更前のプロパティ名(HADB 03-00 より前のプロ
パティ名)
変更後のプロパティ名(HADB 03-00 以降のプロパ
ティ名)
1
adb_jdbc_ap_name
adb_clt_ap_name
2
adb_jdbc_dbbuff_wrktbl_blk_num
adb_dbbuff_wrktbl_clt_blk_num
3
adb_jdbc_fetch_size
adb_clt_fetch_size
4
adb_jdbc_rpc_sql_wait_time
adb_clt_rpc_sql_wait_time
5
adb_jdbc_rpc_srv_host
adb_clt_rpc_srv_host
6
adb_jdbc_rpc_srv_port
adb_clt_rpc_srv_port
7
adb_jdbc_sql_delrsvd_use_srvdef
adb_sql_prep_delrsvd_use_srvdef
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
213
項番
変更前のプロパティ名(HADB 03-00 より前のプロ
パティ名)
変更後のプロパティ名(HADB 03-00 以降のプロパ
ティ名)
8
adb_jdbc_sql_hashgrp_area_size
adb_sql_exe_hashgrp_area_size
9
adb_jdbc_sql_hashtbl_area_size
adb_sql_exe_hashtbl_area_size
10
adb_jdbc_sql_max_rthd_num
adb_sql_exe_max_rthd_num
11
adb_jdbc_sql_order_mode
adb_clt_sql_order_mode
12
adb_jdbc_sql_text_out
adb_sql_text_out
13
adb_jdbc_trn_access_mode
adb_clt_trn_access_mode
14
adb_jdbc_trn_iso_lv
adb_clt_trn_iso_lv
5.3.4 接続情報の優先順位
(1) HADB サーバへの接続時に必要となる接続情報
HADB サーバへの接続時に必要となる接続情報を次に示します。
• HADB サーバのホスト名
• HADB サーバのポート番号
• HADB サーバに接続する認可識別子とパスワード
• AP 識別子
• 各プロパティに指定できる上記以外の項目
これらの接続情報は,幾つかの方法で設定できます。例えば,HADB サーバのホスト名は,システムプロ
パティの adb_clt_rpc_srv_host に指定する方法と,接続用の URL の host に指定する方法があります。
このように接続情報が複数の方法で設定された場合の指定の優先順位を次の表に示します。
表 5‒6 接続情報の指定の優先順位
接続情報
設定方法
優先順位
DM
HADB サーバのホスト名
DS
システムプロパティ adb_clt_rpc_srv_host の値
1
1
DriverManager クラスの getConnection メソッドの引数 info に指定した
adb_clt_rpc_srv_host プロパティの値
2
−
DriverManager クラスの getConnection メソッドの引数 url に指定した
host の値
3
−
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
214
接続情報
設定方法
優先順位
DM
HADB サーバのポート番号
接続時の認可識別子,パス
ワード
DS
接続情報設定および取得インタフェースの setHostName メソッドで設定
したホスト名
−
2
システムプロパティ adb_clt_rpc_srv_port の値
1
1
DriverManager クラスの getConnection メソッドの引数 info に指定した
adb_clt_rpc_srv_port プロパティの値
2
−
DriverManager クラスの getConnection メソッドの引数 url に指定した
port の値
3
−
接続情報設定および取得インタフェースの setPort メソッドで設定したポー
ト番号
−
2
次に示すどちらかの値
1
−
DriverManager クラスの getConnection メソッドの引数 url に指定した
user および password の値
2
−
次に示すどちらかの値
−
1
−
2
システムプロパティ adb_clt_ap_name の値
1
1
DriverManager クラスの getConnection メソッドの引数 info に指定した
adb_clt_ap_name プロパティの値
2
−
DriverManager クラスの getConnection メソッドの引数 url に指定した
adb_clt_ap_name の値
3
−
接続情報設定および取得インタフェースの setApName メソッドで設定し
た AP 識別子
−
2
システムプロパティに指定したプロパティの値
1
1
DriverManager クラスの getConnection メソッドの引数 info に指定した
プロパティの値
2
−
DriverManager クラスの getConnection メソッドの引数 url に指定した
プロパティの値
3
−
• DriverManager クラスの getConnection メソッドの引数 user および
password の値
• DriverManager クラスの getConnection メソッドの引数 info に指定
した user および password プロパティの値
• DataSource インタフェースの getConnection メソッドの引数
username および password に指定した値
• ConnectionPoolDataSource インタフェースの
getPooledConnection メソッドの引数 user および password に指定
した値
• 接続情報設定および取得インタフェースの setUser メソッドで設定した
認可識別子
• 接続情報設定および取得インタフェースの setPassword メソッドで設
定したパスワード
AP 識別子
各プロパティに指定できる上
記以外の項目(次の項目が該
当)
• adb_clt_rpc_con_wait_
time
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
215
接続情報
設定方法
優先順位
DM
DS
• adb_clt_rpc_sql_wait_t
ime
• adb_clt_group_name
• adb_clt_fetch_size
• adb_clt_sql_text_out
• adb_clt_trn_iso_lv
• adb_clt_sql_order_mo
de
• adb_clt_trn_access_mo
de
• adb_dbbuff_wrktbl_clt
_blk_num
• adb_sql_prep_delrsvd_
use_srvdef
• adb_sql_exe_max_rthd
_num
• adb_sql_exe_hashgrp_
area_size
• adb_sql_exe_hashtbl_a
rea_size
• adb_jdbc_exc_trc_out_
path
• adb_jdbc_info_max
• adb_jdbc_cache_info_
max
• adb_jdbc_trc_out_lv
(凡例)
DM:DriverManager クラスを使用して接続した場合
DS:DataSource クラスを使用して接続した場合
−:接続情報を指定できません。
注
優先順位の番号が小さいほど優先順位が高くなります。1 と 2 では 1 の指定が優先されます。
(2) 各プロパティで指定できる接続情報の一覧
HADB サーバへの接続時に必要となる接続情報は,システムプロパティ,ユーザプロパティ,または接続
用の URL のプロパティで指定できます。各プロパティで指定できる接続情報の一覧を次の表に示します。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
216
表 5‒7 各プロパティで指定できる接続情報の一覧
項番
分類
プロパティ名
各プロパティでの指定可否
システムプロパ
ティ
1
接続用の URL
のプロパティ
adb_clt_rpc_srv_host
○
○
△※2
adb_clt_rpc_srv_port
○
○
△※3
3
adb_clt_rpc_con_wait_time
○
○
○
4
adb_clt_rpc_sql_wait_time
○
○
○
5
adb_clt_ap_name
○
○
○
6
adb_clt_group_name
○
○
○
7
adb_clt_fetch_size
○
○
○
8
adb_dbbuff_wrktbl_clt_blk_num
○
○
○
9
adb_sql_exe_max_rthd_num
○
○
○
10
adb_sql_exe_hashgrp_area_size
○
○
○
11
adb_sql_exe_hashtbl_area_size
○
○
○
12
adb_sql_prep_delrsvd_use_srvdef
○
○
○
13
adb_clt_trn_iso_lv
○
○
○
14
adb_clt_trn_access_mode
○
○
○
15
adb_clt_sql_text_out
○
○
○
16
adb_clt_sql_order_mode
○
○
○
adb_jdbc_exc_trc_out_path
○
○
○
adb_jdbc_info_max
○
○
○
19
adb_jdbc_cache_info_max
○
○
○
20
adb_jdbc_trc_out_lv
○
○
○
user
×
○
○
22
password
×
○
○
23
encodelang
×
○
○
24
methodtrace
×
○
○
25
tracenum
×
○
○
26
sqlwarningkeep
×
○
○
2
17
18
21
クライアント定義と同
じ名称,同じ機能を持
ユーザプロパ
ティ
つプロパティ※1
Exception トレースロ
グに関するプロパティ
上記以外のプロパティ
(凡例)
○:指定できるプロパティ
△:指定できないプロパティではあるが,代替となる指定あり
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
217
×:指定できないプロパティ
注※1
これらのプロパティは,クライアント定義のオペランド名と同じプロパティ名であり,クライアント定義のオペランドと同じ
機能を持っています。
注※2
接続用の URL のプロパティでは,接続先の HADB サーバのホスト名を adb_clt_rpc_srv_host で指定できません。接続先の
HADB サーバのホスト名は,接続用の URL の host で指定します。
注※3
接続用の URL のプロパティでは,HADB サーバのポート番号を adb_clt_rpc_srv_port で指定できません。HADB サーバの
ポート番号は,接続用の URL の port で指定します。
注意事項
JDBC ドライバを使用している場合,クライアント定義のオペランドの指定は適用されません。シ
ステムプロパティ,ユーザプロパティ,または接続用の URL のプロパティの指定が適用されます。
システムプロパティについては「5.3.3 システムプロパティの設定」を,ユーザプロパティについては
「5.3.1(2)(d) 引数 info の指定内容(ユーザプロパティの指定)」を,接続用の URL のプロパティについ
ては「5.3.1(2)(a) 引数 url の指定内容(接続用の URL の指定)
」を参照してください。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
218
5.4 データを検索する場合(SELECT 文を実行する場合)
ここでは,JDBC ドライバを使用したデータの検索方法について説明します。
5.4.1 データの検索方法
SELECT 文を実行してデータを検索する場合,次に示す順序で処理を実行します。
• Statement オブジェクトを生成する
• SELECT 文を実行する
• 検索結果を取得する
(1) Statement オブジェクトの生成
Statement オブジェクトを生成して,SELECT 文を HADB サーバに送ります。
なお,HADB サーバへの接続がすでに確立されている場合は,Connection オブジェクトの
createStatement メソッドを使用して Statement オブジェクトを生成できます。
Statement オブジェクトの生成例を次に示します。
// HADBサーバへ接続します
Connection con = DriverManager.getConnection(url,info);
// Statementオブジェクトを生成します
Statement stmt = con.createStatement();
(2) SELECT 文の実行
executeQuery メソッドの引数に SELECT 文を指定して SELECT 文を実行します。SELECT 文の実行例
を次に示します。
Statement stmt = con.createStatement();
// SELECT文を実行して,ResultSetオブジェクトを取得します
ResultSet rs = stmt.executeQuery("SELECT \"CODE\", \"STATE\" FROM \"SAMPLE\"");
SELECT 文を実行すると,ResultSet オブジェクトに検索結果が格納されます。
(3) 検索結果の取得
ResultSet オブジェクトには,列番号と検索結果に対応する値から構成される表の形式で検索結果が格納
されます。ResultSet オブジェクトの形式の例を次の図に示します。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
219
図 5‒2 ResultSet オブジェクトの形式の例
ResultSet オブジェクトは,現在行を指し示すカーソルを保持しています。ResultSet オブジェクトから検
索結果を取得するには,next メソッドでカーソルを移動し,getXXX メソッドで現在行のデータを取得し
ます。
ResultSet オブジェクトの作成時,先頭行の前にカーソルが位置づけられています。最初の next メソッド
の呼び出しによってカーソルは先頭行に移動します。next メソッドが呼び出されるたびにカーソルが 1 行
ずつ下に移動します。
検索結果データの取得例を次に示します。
ResultSet rs = stmt.executeQuery("SELECT \"CODE\", \"STATE\" FROM \"SAMPLE\"");
// 結果行がなくなるまで繰り返します
while(rs.next())
{
// 1列目のデータを取得します
int i = rs.getInt(1);
// 2列目のデータを取得します
String s = rs.getString(2);
// 結果データを出力します
System.out.println("検索結果: " + i + ", " + s);
}
(4) 複数の SELECT 文を同時実行する際の注意事項
複数の SELECT 文を同時に実行すると,SELECT 文の実行に必要なスレッド数が不足することがありま
す。JDBC ドライバの使用時,スレッドが空くまでリトライ処理が行われるため,リトライ処理が無限に
行われないようにしてください。
サーバ定義のオペランドを次のように指定している場合は,リトライ処理が無限に行われることはありま
せん。
A ≧ B×C×D
A:
処理スレッド数(adb_sys_rthd_num オペランドの値)
B:
最大 SQL 処理リアルスレッド数(adb_sql_exe_max_rthd_num オペランドの値)
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
220
C:
1 コネクション内で同時に実行する(カーソルオープン状態にする)SELECT 文の数
D:
同時に SQL 文を実行するコネクション数
5.4.2 ?パラメタの使用方法
?パラメタを使用してデータを検索する場合,次に示す順序で処理を実行します。
• PreparedStatement オブジェクトを生成する
• SELECT 文を実行する
• 検索結果を取得する
(1) PreparedStatement オブジェクトの生成
PreparedStatement オブジェクトを生成して,?パラメタを指定した SELECT 文を HADB サーバに送
ります。
なお,HADB サーバへの接続がすでに確立されている場合は,Connection オブジェクトの
prepareStatement メソッドを使用して PreparedStatement オブジェクトを生成できます。
PreparedStatement オブジェクトの生成例を次に示します。
// HADBサーバへ接続します
Connection con = DriverManager.getConnection(url, info);
// PreparedStatementオブジェクトを生成します
PreparedStatement pstmt =
con.prepareStatement("SELECT * FROM \"SAMPLE\" WHERE \"CODE\" = ? AND \"STATE\" = ?");
prepareStatement メソッドの引数に SELECT 文を指定すると,この SELECT 文が前処理されて
PreparedStatement オブジェクトが生成されます。
SQL 文に?パラメタを指定している場合,SQL 文の実行前に各?パラメタの値を設定する必要がありま
す。?パラメタに値を設定するには,setXXX メソッドを使用します。
(2) SELECT 文の実行
引数指定なしの executeQuery メソッドを使用して SELECT 文を実行します。?パラメタを使用した
SELECT 文の実行例を次に示します。
PreparedStatement pstmt =
con.prepareStatement("SELECT * FROM \"SAMPLE\" WHERE \"CODE\" = ? AND \"STATE\" = ?");
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
221
// 1番目の?パラメタに値を設定します
pstmt.setInt(1, 12345);
// 2番目の?パラメタに値を設定します
pstmt.setString(2, "Boston");
// 前処理済みのSQL文を実行して,ResultSetオブジェクトを取得します
ResultSet rs = pstmt.executeQuery();
SELECT 文を実行すると,ResultSet オブジェクトに検索結果が格納されます。
(3) 検索結果の取得
検索結果の取得方法については,「5.4.1(3) 検索結果の取得」を参照してください。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
222
5.5 データを追加,更新,または削除する場合(INSERT 文,UPDATE 文,
または DELETE 文を実行する場合)
INSERT 文,UPDATE 文,または DELETE 文などの操作系 SQL によるデータの追加,更新,または削
除をするには,Statement オブジェクト(?パラメタを使用する場合は PreparedStatement オブジェク
ト)の executeUpdate メソッドを使用します。
データの更新および削除の実行例を次に示します。
Connection con = DriverManager.getConnection(url, info);
Statement stmt = con.createStatement();
// 条件に合致するデータを更新します
stmt.executeUpdate("UPDATE \"SAMPLE\" SET \"CODE\"=98765 WHERE \"STATE\" = 'Redmond'");
// すべての行を削除します
stmt.executeUpdate("DELETE FROM \"SAMPLE\" ");
■更新操作によるカーソルを使用した検索への影響
カーソルを使用した検索中に更新操作を行うと,タイミングによっては更新操作の結果が,検索の結果
に反映されることがあります。更新操作の結果を検索の結果に反映させないようにするには,次のよう
に運用してください。
• カーソルを閉じたあとに,行の追加または更新を行う
• 追加または更新する行が,検索結果と一致しないようにデータや探索条件などを工夫する
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
223
5.6 データ処理
この章では,JDBC ドライバと HADB サーバ間のデータ処理方式について説明します。
5.6.1 データ型のマッピング
ここでは,HADB のデータ型と JDBC の SQL データ型のマッピングについて説明します。
(1) HADB のデータ型と JDBC の SQL データ型の対応
HADB のデータ型と JDBC の SQL データ型は,完全には一致していません。そのため,JDBC ドライバ
が,HADB のデータ型と JDBC の SQL データ型をマッピング(変換)します。マッピングできないデー
タ型を使用してアクセスしようとすると,SQLException が投入されます。
データ型のマッピングは,ResultSet または PreparedStatement クラスの getXXX メソッドおよび
setXXX メソッドで実行します。getXXX メソッドおよび setXXX メソッドのマッピング規則については,
JDBC1.0 規格または JDBC 2.0 基本規格のドキュメントを参照してください。
HADB のデータ型と JDBC の SQL データ型の対応を次の表に示します。
表 5‒8 HADB のデータ型と JDBC の SQL データ型の対応
HADB のデータ型
JDBC の SQL データ型
INTEGER
BIGINT
SMALLINT
INTEGER,SMALLINT※1
DECIMAL
DECIMAL(,NUMERIC)※2
DOUBLE PRECISION
DOUBLE
CHAR
CHAR
VARCHAR
VARCHAR(,LONGVARCHAR)※2
DATE
DATE
TIME
TIME
TIMESTAMP
TIMESTAMP
BINARY
BINARY(,VARBINARY,LONGVARBINARY)※2
VARBINARY
VARBINARY(,BINARY,LONGVARBINARY)※2
ROW
BINARY(,VARBINARY,LONGVARBINARY)※2
BOOLEAN※3
BOOLEAN
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
224
注※1
DatabaseMetaData から生成した ResultSet にだけ存在する列です。データ型が short で規定されている列の場合,
ResultSetMetaData で取得できるメタデータには SMALLINT に対応した値を返却します。ただし,メタデータ以外は
INTEGER に対応した値を返却します。
注※2
( )内のデータ型は,setNull メソッドまたは setObject メソッドの引数に JDBC の SQL データ型を指定する場合にだけ対
応します。HADB のデータ型から JDBC の SQL データ型へマッピングする際には対応しません。
注※3
DatabaseMetaData の getTypeInfo メソッドなどで生成される,ResultSet オブジェクトが持つ BOOLEAN 型の列を指し
ます。
(2) 検索データ取得時のマッピング
ResultSet クラスの getXXX メソッドと,JDBC の SQL データ型とのマッピングを次の表に示します。
マッピングできない JDBC の SQL データ型に対して getXXX メソッドが呼び出された場合は,
SQLException が投入されます。
表 5‒9 getXXX メソッドと JDBC の SQL データ型とのマッピング
メソッ
ド名
JDBC の SQL データ型
BIGINT
INTEGE
R
DECIM
AL
DOUBL
E
CHAR
VARCH
AR
DATE
TIME
TIMEST
AMP
BINARY
,
VARBI
NARY
getByte
○
○
○
○
○※
○※
×
×
×
×
getShort
○
○
○
○
○※
○※
×
×
×
×
getInt
○
◎
○
○
○※
○※
×
×
×
×
getLong
◎
○
○
○
○※
○※
×
×
×
×
getFloat
○
○
○
○
○※
○※
×
×
×
×
getDoub
le
○
○
○
◎
○※
○※
×
×
×
×
getBigD
ecimal
○
○
◎
○
○※
○※
×
×
×
×
getBoole
an
○
○
○
○
○
○
×
×
×
×
getString
○
○
○
○
◎
◎
○
○
○
○
getBytes
×
×
×
×
×
×
×
×
×
◎
getDate
×
×
×
×
○※
○※
◎
○
○
×
getTime
×
×
×
×
○※
○※
×
◎
○
×
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
225
メソッ
ド名
JDBC の SQL データ型
BIGINT
INTEGE
R
DECIM
AL
DOUBL
E
CHAR
VARCH
AR
DATE
TIME
TIMEST
AMP
BINARY
,
VARBI
NARY
getTime
stamp
×
×
×
×
○※
○※
○
○
◎
×
getAsciiS
tream
×
×
×
×
○
○
×
×
×
○
getObjec
t
○
○
○
○
○
○
○
○
○
○
getChar
acterStre
am
×
×
×
×
○
○
×
×
×
○
getBinar
yStream
×
×
×
×
×
×
×
×
×
○
(凡例)
◎:マッピングすることを推奨します。
○:マッピングできます。ただし,変換元のデータ形式によっては,データの欠落や変換エラーになる
ことがあるため,注意してください。
×:マッピングできません。
注※
このメソッドでの変換の際に,データベースから取得した文字列データの前後に半角空白がある場合
は,半角空白を取り除きます。また,半角空白を取り除いたあと,getXXX メソッドが返却する Java
のデータ型に変換します。
Java のデータ型に変換する場合の注意事項を次に示します。
• 文字列データに小数点以下の表現がある場合,getByte メソッド,getInt メソッド,getShort メ
ソッド,または getLong メソッドを実行すると,小数点以下を切り捨てて整数だけを変換し,返却
します。
• 文字列データに全角文字が含まれている場合,変換はしないで SQLException が投入されます。
• 文字列データを Java のデータ型に変換した結果,オーバフローが発生した場合,SQLException
が投入されます。
(3) ?パラメタ設定時のマッピング
PreparedStatement クラスの setXXX メソッドと,マッピングされる JDBC の SQL データ型を次の表に
示します。使用できない JDBC の SQL データ型の場合,SQLException が投入されます。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
226
PreparedStatement クラスの setXXX メソッドと各 JDBC の SQL データ型とのマッピングを次の表に示
します。
表 5‒10 setXXX メソッドと JDBC の SQL データ型とのマッピング
メソッ
ド名
JDBC の SQL データ型
BIGINT
INTEGE
R
DECIM
AL※1
DOUBL
E
CHAR
VARCH
AR
DATE
TIME
TIMEST
AMP
BINARY
,
VARBI
NARY
setByte
○
○
○
○
○
○
×
×
×
×
setShort
○
○
○
○
○
○
×
×
×
×
setInt
○
◎
○
○
○
○
×
×
×
×
setLong
◎
○
○
○
○
○
×
×
×
×
setFloat
○
○
○
○
○
○
×
×
×
×
setDoubl
e
○
○
○
◎
○
○
×
×
×
×
setBigDe
cimal
○
○
◎
○
○
○
×
×
×
×
setBoole
an
○
○
○
○
○
○
×
×
×
×
setString
○
○
○
○
◎
◎
○
○
○
○
setBytes
×
×
×
×
×
×
×
×
×
◎
setDate
×
×
×
×
○
○
◎
○
○
×
setTime
×
×
×
×
○
○
×
◎
○
×
setTimes
×
×
×
×
○
○
○
○
◎
×
setAsciiS
tream
×
×
×
×
○
○
×
×
×
○
setObjec
○
○
○
○
○
○
○
○
○
○
setChara
cterStrea
m
×
×
×
×
○※4
○※4
×
×
×
○
setBinar
yStream
×
×
×
×
×
×
×
×
×
○
tamp※2
t※3
(凡例)
◎:マッピングすることを推奨します。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
227
○:マッピングできます。ただし,変換元データの形式によっては,データの欠落や変換エラーとなる
ことがあるため,注意してください。
×:マッピングできません。
注※1
HADB のデータ型である DECIMAL 型の?パラメタに対して setXXX メソッドで値を指定する場合
に,?パラメタの精度および位取りと,値の精度および位取りが一致していないときの動作を次に示し
ます。
• ?パラメタの精度よりも大きいとき:SQLException が投入されます。
• ?パラメタの精度よりも小さいとき:拡張します。
• ?パラメタの位取りよりも大きいとき:実際の位取りで切り捨てます。
• ?パラメタの位取りよりも小さいとき:0 で補完して,拡張します。
注※2
HADB のデータ型である TIME 型または TIMESTAMP 型の?パラメタに対して setXXX メソッドで
値を指定する場合に,?パラメタの小数秒精度と値の小数秒精度が一致していないときの動作を次に示
します。
• ?パラメタの小数秒精度よりも大きいとき:切り捨てます。
• ?パラメタの小数秒精度よりも小さいとき:拡張します。
注※3
setObject メソッドに InputStream クラスおよび Reader クラス(サブクラスを含む)のオブジェク
トは指定できません。
注※4
java.io.Reader オブジェクトから取得できるデータの長さが,引数で指定した長さより短い場合,次
に示すように引数で指定した長さまで 0 を補完します。
5.6.2 データの変換処理
ここでは,setXXX および getXXX メソッド実行時のデータ変換処理について説明します。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
228
(1) setXXX メソッド実行時のデータ変換処理(DATE 型,TIME 型,または
TIMESTAMP 型の場合)
setTime,setDate,setTimestamp,または setString メソッドに,HADB のデータ型の DATE 型,
TIME 型,または TIMESTAMP 型のデータを設定した場合の変換処理について説明します。
HADB のデータ型の DATE 型,TIME 型,または TIMESTAMP 型の列に対して,setTime,setDate,
setTimestamp,または setString メソッドを使用してデータを設定した場合,次の表に示す規則に従って
データ変換が行われます。
表 5‒11 setXXX メソッド実行時の変換処理
実行するメソッド
DATE 型の変換処理
TIME 型の変換
処理
setDate(Date Obj)※1
AP の設定値どおりに
データベースに格納さ
れます。
00:00:00 がデー
タベースに格納さ
れます。
AP の設定値 YYYYMM-DD の後ろに
「00:00:00」を付与した
データがデータベースに
格納されます。
setTime(Time Obj)※2
SQLException が投
入されます。
AP の設定値
hh:mm:ss.fff の
データがデータ
ベースに格納され
ます。
AP の設定値
hh:mm:ss.fff の前に
「1970-01-01」を付与
したデータがデータベー
スに格納されます。
AP の設定値から
AP の設定値から
「YYYY-MM-DD」を 「hh:mm:ss.ffffffff
抜き出したデータが
f」を抜き出した
データベースに格納さ データがデータ
れます。
ベースに格納され
ます。
AP の設定値 YYYYMM-DD△
hh:mm:ss.fffffffff の
データがデータベースに
setTimestamp(Timestamp Obj)※3
setString(YYYY-MM-DD 形式の文字列)
指定された日付が
java.sql.Date.value
Of()で変換されてデー
タベースに格納されま
TIMESTAMP 型の変換
処理
格納されます。※4
00:00:00 がデー
タベースに格納さ
れます。
SQLException が投入
されます。
す。※5
setString(hh:mm:ss[.f...]形式の文字列)
SQLException が投
入されます。
AP の設定値
hh:mm:ss[.f...]の
データがデータ
ベースに格納され
ます。
SQLException が投入
されます。
setString(YYYY-MM-DD△hh:mm:ss[.f...]形式の文
SQLException が投
入されます。
AP の設定値
hh:mm:ss[.f...]の
データがデータ
ベースに格納され
ます。
AP の設定値 YYYYMM-DD△
hh:mm:ss[.f...]のデータ
がデータベースに格納さ
字列)※4
れます。※5
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
229
注
実際に存在しない日時を指定した場合は,Java 仮想マシンが返す値となります。
注※1
「Date Obj」は,java.sql.Date オブジェクト「年−月−日」の値を持つオブジェクトです。
注※2
「Time Obj」は,java.sql.Time オブジェクト「時:分:秒.ミリ秒」の値を持つオブジェクトです。
注※3
「Timestamp Obj」は,java.sql.Timestamp オブジェクト「年−月−日 時:分:秒.ナノ秒」の値
を持つオブジェクトです。
注※4
△は半角空白を示します。
注※5
存在しない日時を指定した場合の結果は java.sql.Date.valueOf(),java.sql.Time.valueOf(),および
java.sql.Timestamp.valueOf()に依存します。
例 1:25:00:00 は,01:00:00 となります。
例 2:2000-01-32 は,2000-02-01 となります。
例 3:1582-10-05 は,1582-10-15 となります(ユリウス暦とグレゴリオ暦が切り替わります)。
(2) getXXX メソッド実行時のデータ変換処理(DATE 型,TIME 型,
TIMESTAMP 型,または文字列型の場合)
getTime,getDate,または getTimestamp メソッドに,HADB のデータ型の DATE 型,TIME 型,
TIMESTAMP 型,または文字列型(CHAR 型,VARCHAR 型)のデータを設定した場合の変換処理に
ついて説明します。
HADB のデータ型の DATE 型,TIME 型,TIMESTAMP 型,または文字列型の列に対して,getTime,
getDate,または getTimestamp メソッドを使用してデータを設定した場合,次の表に示す規則に従って
データ変換が行われます。
表 5‒12 getXXX メソッド実行時の変換処理
実行するメソッド
DATE 型の変換処理
TIME 型の変換処理
TIMESTAMP 型の変換
処理
文字列型の変換処理
getDate()※1
データベースに格納さ
れている値どおりに
java.sql.Date のオブ
ジェクトとして取得さ
1970-01-01 のデータ
を持つ java.sql.Date
のオブジェクトとして
データベースから取得
した TIMESTAMP 型
のデータから,「年−月
−日」のデータを抜き
出したデータが
java.sql.Date のオブ
ジェクトとして取得さ
文字列表現「YYYYMM-DD」だけが
java.sql.Date のオブ
ジェクトとして取得さ
れます。それ以外は
SQLException が投入
されます。
れます。※2
取得されます。※2
れます。※2
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
230
実行するメソッド
DATE 型の変換処理
TIME 型の変換処理
TIMESTAMP 型の変換
処理
getTime()※1
SQLException が投入
されます。
データベースから取得
した TIME 型のデータ
から,「時:分:秒.ミ
リ秒」のデータを抜き
出したデータが
java.sql.Time のオブ
ジェクトとして取得さ
データベースから取得
文字列表現
した TIMESTAMP 型 「hh:mm:ss[.f...]」だけ
のデータから,「時:
が java.sql.Time のオ
分:秒.ミリ秒」のデー ブジェクトとして取得
タを抜き出したデータ
されます。それ以外は
が java.sql.Time のオ
SQLException が投入
ブジェクトとして取得
されます。
れます。※2
されます。※2
getTimestamp()※1
データベースから取得
した DATE 型のデー
タの後ろに
「00:00:00.
000000000」を付加
したデータが
java.sql.Timestamp
のオブジェクトとして
取得されます。
データベースから取得
した TIME 型のデータ
の前に「1970-01-01」
を,後ろに
「00:00:00」を付加し
たデータが
java.sql.Timestamp
のオブジェクトとして
取得されます。
データベースから取得
した TIMESTAMP 型
のデータから「年−月
−日時:分:秒.ナノ
秒」のデータを抜き出
したデータが
java.sql.Timestamp
のオブジェクトとして
取得されます。
文字列型の変換処理
TIMESTAMP 型の文
字列表現「YYYYMM-DD△
hh:mm:ss[.f...]」(△は
半角空白)だけが
java.sql.Timestamp
のオブジェクトとして
取得されます。それ以
外は SQLException
が投入されます。
注※1
データベースに格納されている日時と java.sql.Time,java.sql.Date,および java.sql.Timestamp か
ら得られる日時は異なることがあります。
例 1:25:00:00 は,01:00:00 となります。
例 2:2000-01-32 は,2000-02-01 となります。
例 3:1582-10-05 と 1582-10-15 は,どちらも 1582-10-15 となります(ユリウス暦とグレゴリオ暦
が切り替わります)。
注※2
値の設定について記載していない日付項目(年−月−日)の設定値は「1970-01-01」
,時間項目(時:
分:秒)の設定値は「00:00:00」とします。
5.6.3 オーバフローが発生したときの処理
ここでは,setXXX および getXXX メソッド実行時のオーバフローの可能性について説明します。
(1) setXXX メソッド(setObject メソッドを除く)実行時のオーバフロー
の可能性
setXXX メソッド実行時のオーバフローの可能性(setObject メソッドを除く)を次の表に示します。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
231
表 5‒13 setXXX メソッド実行時のオーバフローの可能性(setObject メソッドを除く)
実行する
メソッド
HADB のデータ型
SMALLI
NT
INTEGE
R
DOUBL
E
PRECISI
ON
DECIM
AL
CHAR,
VARCH
AR
DATE※
TIME※
TIMEST
ROW
setByte
○
○
○
×
○
−
−
−
−
−
setShort
○
○
○
×
○
−
−
−
−
−
setInt
○
○
○
×
○
−
−
−
−
−
setLong
×
○
○
×
○
−
−
−
−
−
setFloat
×
×
○
×
○
−
−
−
−
−
setDoubl
e
×
×
○
×
○
−
−
−
−
−
setBigDe
cimal
×
×
○
×
○
−
−
−
−
−
setBoole
an
○
○
○
○
○
−
−
−
−
−
setString
×
×
○
×
○
×
○
×
−
○
setBytes
−
−
−
−
−
−
−
−
○
○
setDate
−
−
−
−
○
×
○
×
−
−
setTime
−
−
−
−
○
−
○
×
−
−
setTimes
tamp
−
−
−
−
○
×
○
×
−
−
setAsciiS
tream
−
−
−
−
○
−
−
−
−
○
setBinar
yStream
−
−
−
−
○
−
−
−
−
○
setChara
cterStrea
m
−
−
−
−
○
−
−
−
−
○
AMP※
BINARY
,
VARBI
NARY
(凡例)
○:値に関係なく,オーバフローしません。
×:値によっては,オーバフローすることがあります。
−:この組み合わせでは使用できません。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
232
注※
java.sql.Date,java.sql.Time,または java.sql.Timestamp クラスの getTime メソッドで取得した
値が 253,402,268,399,999 より大きいか,または-62,135,802,000,000 より小さいオブジェクトであ
る場合,オーバフローします。なお,getTime メソッドは,1970 年 1 月 1 日 0 時 0 分 0 秒(グリニッ
ジ標準時)からのミリ秒数を返します。
253,402,268,399,999 は HADB の TIMESTAMP 型に格納できる最大値から,-62,135,802,000,000
は java.sql.Timestamp クラスで表現できる最小値から,次に示すメソッドで取得できます。
253,402,268,399,999:
Timestamp.valueOf("9999-12-31 23:59:59.999999").getTime()
-62,135,802,000,000:
Timestamp.valueOf("0001-01-01 00:00:00.0").getTime()
(2) setObject メソッド実行時のオーバフローの可能性
setObject メソッド実行時のオーバフローの可能性を次の表に示します。
表 5‒14 setObject メソッド実行時のオーバフローの可能性
setObje
ct メソッ
ドで指定
するオブ
ジェクト
のデー
タ型
HADB のデータ型
SMALLI
NT
INTEGE
R
DOUBL
E
PRECISI
ON
DECIM
AL
CHAR,
VARCH
AR
DATE※
TIME※
TIMEST
ROW
Byte
○
○
○
×
○
−
−
−
−
−
Short
○
○
○
×
○
−
−
−
−
−
Integer
○
○
○
×
○
−
−
−
−
−
Long
×
○
○
×
○
−
−
−
−
−
Decimal
×
×
○
×
○
−
−
−
−
−
Float
×
×
○
×
○
−
−
−
−
−
Double
×
×
○
×
○
−
−
−
−
−
Boolean
○
○
○
○
○
−
−
−
−
−
String
×
×
○
×
○
×
○
×
−
−
Date
−
−
−
−
○
×
○
×
−
−
Time
−
−
−
−
○
−
○
−
−
−
Timesta
mp
−
−
−
−
○
×
○
×
−
−
byte[]
−
−
−
−
○
−
−
−
○
○
AMP※
BINARY
,
VARBI
NARY
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
233
(凡例)
○:値に関係なく,オーバフローしません。
×:値によっては,オーバフローすることがあります。
−:この組み合わせでは使用できません。
注※
java.sql.Date,java.sql.Time,または java.sql.Timestamp クラスの getTime メソッドで取得した
値が 253,402,268,399,999 より大きいか,または-62,135,802,000,000 より小さいオブジェクトであ
る場合,オーバフローします。なお,getTime メソッドは,1970 年 1 月 1 日 0 時 0 分 0 秒(グリニッ
ジ標準時)からのミリ秒数を返します。
253,402,268,399,999 は HADB の TIMESTAMP 型に格納できる最大値から,-62,135,802,000,000
は java.sql.Timestamp クラスで表現できる最小値から,次に示すメソッドで取得できます。
253,402,268,399,999:
Timestamp.valueOf("9999-12-31 23:59:59.999999").getTime()
-62,135,802,000,000:
Timestamp.valueOf("0001-01-01 00:00:00.0").getTime()
(3) getXXX メソッド(getObject メソッドを除く)実行時のオーバフロー
の可能性
getXXX メソッド実行時のオーバフローの可能性(getObject メソッドを除く)を次の表に示します。
表 5‒15 getXXX メソッド実行時のオーバフローの可能性(getObject メソッドを除く)
実行する
メソッド
HADB のデータ型
SMALLI
NT
INTEGE
R
DOUBL
E
PRECISI
ON
DECIM
AL
CHAR,
VARCH
AR
DATE
TIME
TIMEST
AMP
ROW
BINARY
,
VARBI
NARY
getByte
×
×
×
×
×
−
−
−
−
−
getShort
×
×
×
×
×
−
−
−
−
−
getInt
○
×
×
×
×
−
−
−
−
−
getLong
○
○
×
×
×
−
−
−
−
−
getFloat
○
○
○
○
○
−
−
−
−
−
getDoub
le
○
○
○
○
○
−
−
−
−
−
getBigD
ecimal
○
○
○
○
○
−
−
−
−
−
getBoole
an
○
○
○
○
○
−
−
−
−
−
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
234
実行する
メソッド
HADB のデータ型
SMALLI
NT
INTEGE
R
DOUBL
E
PRECISI
ON
DECIM
AL
CHAR,
VARCH
AR
DATE
TIME
TIMEST
AMP
ROW
BINARY
,
VARBI
NARY
getString
○
○
○
○
○
○
○
○
−
○
getBytes
−
−
−
−
−
−
−
−
○
○
getDate
−
−
−
−
○
○
○
○
−
−
getTime
−
−
−
−
○
−
○
○
−
−
getTime
stamp
−
−
−
−
○
○
○
○
−
−
getAsciiS
tream
−
−
−
−
○
−
−
−
−
○
getBinar
yStream
−
−
−
−
○
−
−
−
−
○
getChar
acterStre
am
−
−
−
−
○
−
−
−
−
○
(凡例)
○:値に関係なく,オーバフローしません。
×:値によっては,オーバフローすることがあります。
−:この組み合わせでは使用できません。
(4) getObject メソッド実行時のオーバフローの可能性
getObject メソッド実行時のオーバフローの可能性を次の表に示します。
表 5‒16 getObject メソッド実行時のオーバフローの可能性
getObje
ct メソッ
ドで取得
するオブ
ジェクト
のデー
タ型
HADB のデータ型
SMALLI
NT
INTEGE
R
DOUBL
E
PRECISI
ON
DECIM
AL
CHAR,
VARCH
AR
DATE
TIME
TIMEST
AMP
ROW
BINARY
,
VARBI
NARY
Byte
×
×
×
×
×
−
−
−
−
−
Short
×
×
×
×
×
−
−
−
−
−
Int
○
×
×
×
×
−
−
−
−
−
Long
○
○
×
×
×
−
−
−
−
−
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
235
getObje
ct メソッ
ドで取得
するオブ
ジェクト
のデー
タ型
HADB のデータ型
SMALLI
NT
INTEGE
R
DOUBL
E
PRECISI
ON
DECIM
AL
CHAR,
VARCH
AR
DATE
TIME
TIMEST
AMP
ROW
BINARY
,
VARBI
NARY
Float
○
○
×
×
×
−
−
−
−
−
Double
○
○
○
×
×
−
−
−
−
−
BigDeci
mal
○
○
○
×
×
−
−
−
−
−
Boolean
○
○
○
○
○
−
−
−
−
−
String
○
○
○
○
○
○
○
○
−
○
Bytes
−
−
−
−
−
−
−
−
○
○
Date
−
−
−
−
○
○
○
○
−
−
Time
−
−
−
−
○
−
○
○
−
−
Timesta
mp
−
−
−
−
○
○
○
○
−
−
AsciiStre
am
−
−
−
−
○
−
−
−
−
○
BinarySt
ream
−
−
−
−
○
−
−
−
−
○
Object
○
○
○
○
○
○
○
○
○
○
Characte
rStream
−
−
−
−
○
−
−
−
−
○
(凡例)
○:値に関係なく,オーバフローしません。
×:値によっては,オーバフローすることがあります。
−:この組み合わせでは使用できません。
5.6.4 文字コードの変換
Java プログラムでは,文字コードは Unicode(UTF-16)で扱うため,JDBC ドライバが HADB の文字
データと Unicode(UTF-16)との相互文字コード変換をします。この文字コード変換処理で,JDBC ド
ライバは Java 仮想マシンが提供するエンコーダを利用します。
HADB の文字データと Unicode(UTF-16)との相互文字コード変換の流れを次の図に示します。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
236
図 5‒3 HADB の文字データと Unicode(UTF-16)との相互文字コード変換の流れ
HADB との文字データのやり取りの際,Java 仮想マシンのエンコーダに対して,JDBC ドライバが文字
セット名称を指定します。このとき,HADB サーバの文字コード Unicode(UTF-8)を取得し,それに
相当する文字セット名称にします。
HADB サーバの文字コードに対応する,Java 仮想マシンのエンコーダに対して指定する文字セット名称
を次の表に示します。
表 5‒17 HADB サーバの文字コードに対応する文字セット名称
項番
HADB サーバの文字コード
Java 仮想マシンのエンコーダに指定する文字セット名称※
(環境変数 ADBLANG に指定した文字
コード)
1
Unicode(UTF-8)(UTF8)
2
Shift-JIS(SJIS)
UTF-8
• JDBC ドライバの動作環境が Windows の場合:Windows-31j
(MS932)
• 上記以外の場合:SJIS
注※
Java 仮想マシンのエンコーダに表中の文字セット名称が指定されるのは,HADB サーバとのコネク
ション確立後になります。
コネクション確立前は,Java 仮想マシンのデフォルトの文字セットで文字コード変換します。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
237
5.7 トラブルシュート
この章では,トラブルシュート機能である JDBC インタフェースメソッドトレースと Exception トレース
ログについて説明します。
5.7.1 JDBC インタフェースメソッドトレース
トラブルシュート情報として,JDBC インタフェースのメソッド呼び出し時に,JDBC インタフェースメ
ソッドトレースを取得できます。
(1) 環境設定
(a) DriverManager クラスによる接続の場合
環境設定手順を次に示します。
手順
1. DriverManager クラスの setLogWriter メソッドを実行して,有効なログライターを指定します。
2. DriverManager クラスの getConnection メソッドを実行して HADB サーバに接続します。その
際,getConnection メソッドの引数 url または info に,JDBC インタフェースメソッドトレースを
取得する指定をします(methodtrace および tracenum を指定します)。
getConnection メソッドの引数 url または info の指定については,「5.3.1(2)(a) 引数 url の指定内容
(接続用の URL の指定)
」または「5.3.1(2)(d) 引数 info の指定内容(ユーザプロパティの指定)」を
参照してください。
(b) DataSource クラスによる接続の場合
環境設定手順を次に示します。
手順
1. DataSource または ConnectionPoolDataSource インタフェースの setLogWriter メソッドを実
行して,有効なログライターを指定します。
2. 接続情報設定および取得インタフェースの setInterfaceMethodTrace および setTraceNumber メ
ソッドを実行して,JDBC インタフェースメソッドトレースを取得する指定をします。
DataSource インタフェースの setLogWriter メソッドについては「8.2.7 setLogWriter(PrintWriter
out)」を,ConnectionPoolDataSource インタフェースの setLogWriter メソッドについては
「8.3.7 setLogWriter(PrintWriter out)」を参照してください。
setInterfaceMethodTrace メソッドについては「8.5.14 setInterfaceMethodTrace(boolean
flag)」を,setTraceNumber メソッドについては「8.5.18 setTraceNumber(int num)」を参照し
てください。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
238
(2) JDBC インタフェースメソッドトレースの取得規則
JDBC インタフェースメソッドトレースの取得規則を次に示します。
• JDBC インタフェースのメソッドの呼び出し時,およびメソッドからの戻り時に,トレース情報が取得
されます。ただし,データベース接続前に実行できるメソッドついては,トレース情報が取得されませ
ん。トレース情報が取得されないメソッドを次に示します。
Driver インタフェース
• acceptsURL(String url)
• getMajorVersion()
• getMinorVersion()
• getPropertyInfo(String url, Properties info)
• jdbcCompliant()
DataSource インタフェースおよび ConnectionPoolDataSource インタフェース
• getLoginTimeout()
• getLogWriter()
• setLoginTimeout(int seconds)
• setLogWriter(PrintWriter out)
Wrapper インタフェース
• isWrapperFor(Class<?> iface)
• unwrap(Class<T> iface)
• トレース情報はエントリ数分保持され,次に示すタイミングで指定したログライターに出力されます。
• Connection.close メソッドの呼び出し時(正常終了時)
• SQLException の投入時(エラー発生時)
• BatchUpdateException の投入時(エラー発生時)
• SQLClientInfoException の投入時(エラー発生時)
• UnsupportedOperationException の投入時(エラー発生時)
• トレース情報の数がエントリ数を超えた場合,保持されていたトレース情報は古い順に破棄され,新し
いトレース情報が保持されます。
• JDBC インタフェースメソッドトレースは,Entry および Return でそれぞれ 1 エントリのトレース領
域を使用します。
(3) 出力例
JDBC インタフェースメソッドトレースの出力例を次に示します。図中の番号は,説明の項番と対応して
います。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
239
出力例
説明
1. [Hitachi Advanced Data Binder JDBC Driver]
JDBC ドライバの名称
2. [JDBC Interface Entry ],[JDBC Interface Return]
[JDBC Interface Entry ]:JDBC メソッドの呼び出し
[JDBC Interface Return]:JDBC メソッドからの戻り
3. [XXXXX.YYYYY]
XXXXX クラスの YYYYY メソッド
4. select * from pp
JDBC メソッドの引数(パスワードを示す引数については,"password=*"のように,"*"1 個を出力)
5. com.hitachi.hadb.jdbc.Adb...
JDBC メソッドの戻り値
5.7.2 Exception トレースログ
トラブルシュート情報として,Exception トレースログを取得できます。Exception トレースログには,
JDBC ドライバ内で例外による障害が発生した際の障害要因が出力されます。
出力内容を次に示します。
• 例外発生時の情報(エラーメッセージなど)
• 例外が発生するまでの,JDBC の API メソッドの実行記録
この機能を使用すると,AP から呼び出される JDBC の API メソッドの情報が JDBC ドライバのメモリ上
に蓄積され,SQLException,BatchUpdateException,SQLClientInfoException,または
UnSupportedOperationException の発生を契機として,例外を投入する前に,メモリ上に蓄積された情
報がファイルに出力されます。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
240
(1) 取得するメソッド,および取得するための設定
(a) Exception トレースログの取得対象メソッド
Exception トレースログの取得対象は,Java Platform Standard Edition 6 の API 仕様にあるパッケー
ジ java.sql,javax.sql に記述されているメソッドの呼び出しと戻りです。
次の条件を満たすメソッドが取得されます。
• 「表 5-18 Exception トレースログの取得対象であるメソッドとトレース取得レベル」に記載されてい
て,かつ取得に必要なトレース取得レベルを指定している
なお,ResultSet オブジェクトの getXXX メソッド,PreparedStatement オブジェクトの setXXX メソッ
ド,Connection オブジェクトの isClosed メソッドなど,オブジェクト内の情報を参照して返すだけのメ
ソッドや,オブジェクト内に情報を格納するだけのメソッドは取得対象になりません。
Exception トレースログの取得対象であるメソッドと,そのメソッドのトレース取得レベルを次の表に示
します。
表 5‒18 Exception トレースログの取得対象であるメソッドとトレース取得レベル
クラス
メソッド
トレース取得レベル
1
Connection
2
3
4
5※1
void close()
○
○
○
○
○
void commit()
×
○
○
○
○
Statement createStatement()※2
○
○
○
○
○
Statement createStatement(int resultSetType,
○
○
○
○
○
DatabaseMetaData getMetaData()
×
○
○
○
○
boolean isValid(int timeout)
×
○
○
○
○
PreparedStatement prepareStatement(String
○
○
○
○
○
○
○
○
○
○
void rollback()※2
×
○
○
○
○
void setAutoCommit(boolean autoCommit)
×
○
○
○
○
boolean
autoCommitFailureClosesAllResultSets()
×
○
○
○
○
int
resultSetConcurrency)※3
sql)※2
PreparedStatement prepareStatement(String
sql, int resultSetType, int
resultSetConcurrency)※3
DatabaseMetaData
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
241
クラス
メソッド
トレース取得レベル
1
2
3
4
5※1
ResultSet getAttributes(String catalog, String
schemaPattern, String typeNamePattern,
String attributeNamePattern)
×
○
○
○
○
ResultSet getBestRowIdentifier(String
catalog, String schema, String table, int scope,
boolean nullable)
×
○
○
○
○
ResultSet getCatalogs()
×
○
○
○
○
ResultSet getClientInfoProperties()
×
○
○
○
○
ResultSet getColumnPrivileges(String
catalog, String schema, String table, String
columnNamePattern)
×
○
○
○
○
ResultSet getColumns(String catalog, String
schemaPattern, String tableNamePattern,
String columnNamePattern)
×
○
○
○
○
Connection getConnection()
×
○
○
○
○
ResultSet getCrossReference(String
parentCatalog, String parentSchema, String
parentTable, String foreignCatalog, String
foreignSchema, String foreignTable)
×
○
○
○
○
ResultSet getExportedKeys(String catalog,
String schema, String table)
×
○
○
○
○
ResultSet getFunctions(String catalog, String
schemaPattern, String functionNamePattern)
×
○
○
○
○
ResultSet getFunctionColumns(String
catalog, String schemaPattern, String
functionNamePattern, String
columnNamePattern)
×
○
○
○
○
ResultSet getImportedKeys(String catalog,
String schema, String table)
×
○
○
○
○
ResultSet getIndexInfo(String catalog, String
schema, String table, boolean unique,
boolean approximate)
×
○
○
○
○
ResultSet getPrimaryKeys(String catalog,
String schema, String table)
×
○
○
○
○
ResultSet getProcedureColumns(String
catalog, String schemaPattern, String
procedureNamePattern, String
columnNamePattern)
×
○
○
○
○
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
242
クラス
メソッド
トレース取得レベル
1
2
3
4
5※1
ResultSet getProcedures(String catalog,
String schemaPattern, String
procedureNamePattern)
×
○
○
○
○
RowIdLifetime getRowIdLifetime()
×
○
○
○
○
ResultSet getSchemas()
×
○
○
○
○
ResultSet getSuperTables(String catalog,
String schemaPattern, String
tableNamePattern)
×
○
○
○
○
ResultSet getSuperTypes(String catalog,
String schemaPattern, String
typeNamePattern)
×
○
○
○
○
ResultSet getTablePrivileges(String catalog,
String schemaPattern, String
tableNamePattern)
×
○
○
○
○
ResultSet getTables(String catalog, String
schemaPattern, String tableNamePattern,
String[] types)
×
○
○
○
○
ResultSet getTableTypes()
×
○
○
○
○
ResultSet getTypeInfo()
×
○
○
○
○
ResultSet getUDTs(String catalog, String
schemaPattern, String typeNamePattern, int[]
types)
×
○
○
○
○
ResultSet getVersionColumns(String catalog,
String schema, String table)
×
○
○
○
○
Driver
Connection connect(String url, Properties
info)
○
○
○
○
○
PreparedStatement
boolean execute()※2
×
○
○
○
○
ResultSet executeQuery()※2
×
○
○
○
○
int executeUpdate()※2
×
○
○
○
○
ResultSetMetaData getMetaData()
×
○
○
○
○
boolean execute(String sql)※3,※4
×
○
○
○
○
int[] executeBatch()※4
×
○
○
○
○
ResultSet executeQuery(String sql)※3,※4
○
○
○
○
○
int executeUpdate(String sql)※3,※4
○
○
○
○
○
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
243
クラス
メソッド
トレース取得レベル
1
ResultSet
Statement
DataSource
2
3
4
5※1
ParameterMetaData
getParameterMetaData()
×
○
○
○
○
boolean absolute(int row)
×
○
○
○
○
void afterLast()
×
○
○
○
○
void beforeFirst()
×
○
○
○
○
void close()
×
○
○
○
○
boolean first()
×
○
○
○
○
ResultSetMetaData getMetaData()
×
○
○
○
○
int getHoldability()
×
○
○
○
○
Statement getStatement()
×
○
○
○
○
boolean isClosed()
×
○
○
○
○
boolean last()
×
○
○
○
○
boolean next()
×
○
○
○
○
boolean relative(int rows)
×
○
○
○
○
boolean isAfterLast()
×
○
○
○
○
boolean isBeforeFirst()
×
○
○
○
○
boolean isLast()
×
○
○
○
○
void cancel()
×
○
○
○
○
void close()
○
○
○
○
○
boolean execute(String sql)
○
○
○
○
○
int[] executeBatch()
×
○
○
○
○
ResultSet executeQuery(String sql)
○
○
○
○
○
int executeUpdate(String sql)
○
○
○
○
○
ResultSet getResultSet()
×
○
○
○
○
getConnection()※2
○
○
○
○
○
getConnection(String username, String
○
○
○
○
○
getPooledConnection()※2
○
○
○
○
○
getPooledConnection(String username,
○
○
○
○
○
password)※3
ConnectionPoolDataSourc
e
String
password)※3
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
244
クラス
メソッド
トレース取得レベル
1
PooledConnection
2
3
4
5※1
close()
○
○
○
○
○
getConnection()
○
○
○
○
○
(凡例)
○:Exception トレースログを取得します。
×:Exception トレースログを取得しません。
注※1
トレース取得レベルが 5 の場合,内部呼び出しも含めて Exception トレースログを取得します。
注※2
メソッド名として,「メソッド名(1)」と出力されます。
注※3
メソッド名として,「メソッド名(2)」と出力されます。
注※4
Statement クラスのメソッドをオーバライドしたメソッドです。
(b) Exception トレースログを取得するための設定(プロパティの設定)
Exception トレースログのファイル出力先,ファイルへの出力数,メモリ内取得情報数,およびトレース
取得レベルをシステムプロパティ,ユーザプロパティ,または接続用の URL のプロパティで設定します。
プロパティに設定する項目を次の表に示します。
表 5‒19 プロパティに設定する項目
項目
プロパティ
内容
デフォルト値
※
ファイル出力先
adb_jdbc_exc_trc_out_
path
Exception トレースログを出力するディレクトリを,絶対パス
で指定します。Exception トレースログは,指定したディレク
トリの直下に出力されます。
カレントディ
レクトリ
ファイルへの出
力数
adb_jdbc_info_max
1 ファイルへ出力する情報数の上限を指定します。指定できる
範囲は 1〜50 です。
5
実際に 1 ファイルへ出力する情報数の上限は,「ファイルへの
出力数」×「メモリ内取得情報数」個となります。
ファイルへの出力数は,「5.7.2(2) Exception トレースログの
出力形式」に示す形式 2〜形式 4 をそれぞれ 1 個と数えます。
なお,ファイルには,メモリに蓄積した順番に出力されます。
また,上限値を超えてファイルに出力する場合は,2 ファイル
でラップアラウンドします。ファイル名は次のとおりです。
• adbjdbcexception01.trc
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
245
項目
プロパティ
内容
デフォルト値
※
• adbjdbcexception02.trc
ただし,「5.7.2(2) Exception トレースログの出力形式」に示
す形式 1 と形式 2 の間で出力先のファイルが切り替わることは
ありません。
メモリ内取得情
報数
adb_jdbc_cache_info_
max
メモリ内で蓄積する情報数の上限を指定します。指定できる範
囲は 500〜10,000 です。
1,000
なお,メモリ内取得情報は,「表 5-18 Exception トレースロ
グの取得対象であるメソッドとトレース取得レベル」に示すメ
ソッド 1 つを 1 個と数えます。
また,上限値を超えて情報を蓄積しようとすると,古い情報か
ら順に,新しい情報に上書きされます。
トレース取得レ
ベル
adb_jdbc_trc_out_lv
トレース取得レベルを指定します。指定できる範囲は 0〜5 です。 1
5 を指定すると,内部呼び出しを含めたすべてのトレース取得
対象メソッドを取得します。
0 を指定すると,Exception トレースログを取得しません。
注※
次のような場合に取得する Exception トレースログでは,プロパティに値が指定されなかったものと
見なされます。その場合はデフォルト値が仮定されます。
• プロパティに不正な値が指定され,データベース接続時に SQLException が投入された場合
• Java 仮想マシンが,セキュリティマネジャによって JDBC ドライバに対するプロパティの受け渡し
を拒否した場合
• Java 仮想マシンの,最初の接続が確立する前
(2) Exception トレースログの出力形式
Exception トレースログには,次の 4 種類の形式があります。
形式 1:ヘッダ部分
[AA....AA] Hitachi Advanced Data Binder JDBC Driver BB-CC
形式 2:メソッドの実行履歴(メソッドの実行開始)
AAAAAAAAAAAAAAAAAAAAAAA BB....BB:[C][DD....DD]
ConnectionID(EE....EE) : SID(FF....FF)
GG....GG
形式 3:メソッドの実行履歴(メソッドの正常終了)
AAAAAAAAAAAAAAAAAAAAAAA BB....BB:[C][DD....DD]
ConnectionID(EE....EE) : SID(FF....FF)
HH....HH
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
246
形式 4:発生した出力契機
AAAAAAAAAAAAAAAAAAAAAAA BB....BB:Exception:
II....II
形式 2 および形式 3 は,時系列順に,メソッドを実行した分だけ繰り返して出力されます。
(a) 形式 1 の変数の説明
AA....AA:
出力情報の通番です。
通番は 1 回の出力(出力エラーによる失敗も含む)ごとに 1 増加します。2,147,483,647 を超えると,
0 に戻ります。
BB:
JDBC ドライバのバージョンです。
CC:
JDBC ドライバのリビジョンです。
(b) 形式 2〜形式 4 の変数の説明
AAAAAAAAAAAAAAAAAAAAAAA:
Exception トレースログの取得日時を,次の形式で出力します。それぞれの変数には,すべて 0〜9 の
値が入ります。
YYYY/MM/DD hh:mm:ss.sss
YYYY:年(西暦)
MM:月
DD:日
hh:時(24 時間形式)
mm:分
ss.sss:秒(小数点以下 3 桁を含みます)
BB....BB:
該当するスレッドのスレッド識別情報を,次の形式で出力します。
Thread[aa....aa]@bb....bb
aa....aa:スレッド名,優先順位,スレッドグループ名を含む,スレッド情報です。形式は Java 仮想マ
シンによって決まります。
bb....bb:オブジェクトのハッシュコードです。形式は Java 仮想マシンによって決まります。
C:
メソッドの呼び出し識別情報です。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
247
E:メソッドが開始したときの履歴であることを示します。
R:メソッドが正常終了したときの履歴であることを示します。
DD....DD:
オブジェクト識別子およびメソッド名を,次の形式で出力します。
aa....aa.bb....bb
aa....aa:オブジェクト識別子です(最大 32 文字)。形式は Java 仮想マシンによって決まります。
bb....bb:メソッド名です。
EE....EE:
接続 ID を出力します(最大 4 文字)。
FF....FF:
セクション ID を出力します(最大 4 文字)。
GG....GG:
メソッドの引数を次の形式で出力します。引数がないメソッドでは出力しません。
aa....aa=bb....bb
aa....aa=bb....bb
:
aa....aa=bb....bb
aa....aa:引数の名称です。
bb....bb:引数の内容です(最大 256 文字)
。参照型値の場合,形式はオブジェクトによって決まります。
なお,次のメソッドの引数 password については,bb....bb に"*"1 個を出力します。
• DataSource クラスの getConnection(String username, String password)
• ConnectionPoolDataSource クラスの getPooledConnection(String username, String
password)
また,Driver クラスの connect(String url,Properties info)の,引数 info 中の次のプロパティについ
ては,値を"*"1 個に置き換えて出力します。
• password
HH....HH:
メソッドの戻り値を次の形式で出力します。戻り値がないメソッドでは出力しません。戻り値が参照型
値の場合,形式は Java 仮想マシンによって決まります。
Return=aa....aa
aa....aa:メソッドの戻り値です。
II....II:
トラブルシュート情報を,次の形式で出力します。
ExceptionClass: aa....aa
ConnectionInformation: bb....bb
Message: cc....cc
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
248
ErrorCode: dd....dd
UpdateCounts: ee....ee, ..<省略>.. ,ee....ee
ff....ff
aa.....aa:投入した例外オブジェクトの実行クラス名です。
bb.....bb:例外オブジェクトの接続情報を次の形式で出力します。出力しない場合は,"*"1 個に置き換
えて出力します。
yy.....yy (zz.....zz), ..<省略>.., yy.....yy (zz.....zz)
yy.....yy:各接続情報の名称です。次に示す情報が出力されます。
• host(HADB サーバのホスト名)
• port(HADB サーバのポート番号)
• user(認可識別子)
• sqlwaittime(HADB クライアントの応答最大待ち時間(単位:秒))
zz.....zz:上記の接続情報の内容です。なお,user のパスワード部分は出力しません。
cc.....cc:例外オブジェクトが持つメッセージです。
複数のメッセージを持つ場合は,SQLCODE に対応するメッセージのあとに,改行で区切って出力
します。この場合,例外オブジェクトの getMessage メソッドで返却するメッセージなども,同様
に改行で区切られた文字列になります。
dd.....dd:SQLCODE のエラーコードです(最大 11 文字)。
投入した例外オブジェクトの実行クラスが次のクラスまたはサブクラスの場合に出力します。
• SQLException
ee.....ee:この例外が発生するまでに正常に実行されたバッチ更新の,各更新文の更新行数を出力しま
す(最大 11 文字)。
例外オブジェクトの実行クラスが BatchUpdateException の場合に出力します。
更新行数が取得できない場合,"*"を出力します。
ff.....ff:例外投入メソッドを基点としたスタックトレースを出力します。形式は Java 仮想マシンによっ
て決まります。
(3) 出力例と解析方法
(a) 出力例
[1] Hitachi Advanced Data Binder JDBC Driver VV-RR※
2011/07/06 23:07:09.129 Thread[main,5,main]@1259414:[E]
[AdbConnection@82c01f.createStatement(1)]
ConnectionID(1) : SID(0)
2011/07/06 23:07:09.160 Thread[main,5,main]@1259414:[R]
[AdbConnection@82c01f.createStatement(1)]
ConnectionID(1) : SID(0)
Return=com.hitachi.hadb.jdbc.AdbStatement@1e4cbc4
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
249
2011/07/06 23:07:09.160 Thread[main,5,main]@1259414:[E][AdbStatement@1e4cbc4.execute]
ConnectionID(1) : SID(0)
sql=DELETE FROM SEINO_TABLE
2011/07/06 23:07:14.285 Thread[main,5,main]@1259414:[E][AdbConnection@82c01f.commit]
ConnectionID(1) : SID(0)
2011/07/06 23:07:14.301 Thread[main,5,main]@1259414:[R][AdbConnection@82c01f.commit]
ConnectionID(1) : SID(0)
2011/07/06 23:07:14.301 Thread[main,5,main]@1259414:[R][AdbStatement@1e4cbc4.execute]
ConnectionID(1) : SID(1)
Return=false
2011/07/06 23:07:14.301 Thread[main,5,main]@1259414:[E]
[AdbConnection@82c01f.prepareStatement(1)]
ConnectionID(1) : SID(0)
sql=INSERT INTO SEINO_TABLE VALUES(?, ?)
2011/07/06 23:07:14.348 Thread[main,5,main]@1259414:[R]
[AdbConnection@82c01f.prepareStatement(1)]
ConnectionID(1) : SID(0)
Return=com.hitachi.hadb.jdbc.AdbPreparedStatement@15d56d5
2011/07/06 23:07:26.567 Thread[main,5,main]@1259414:[E][AdbConnection@82c01f.commit]
ConnectionID(1) : SID(0)
2011/07/06 23:07:26.567 Thread[main,5,main]@1259414:[R][AdbConnection@82c01f.commit]
ConnectionID(1) : SID(0)
2011/07/06 23:07:26.567 Thread[main,5,main]@1259414:[E][AdbStatement@1e4cbc4.executeQuery]
ConnectionID(1) : SID(0)
sql=SELECT * FROM SEINO_TABLE
2011/07/06 23:07:26.676 Thread[main,5,main]@1259414:[R][AdbStatement@1e4cbc4.executeQuery]
ConnectionID(1) : SID(1)
Return=com.hitachi.hadb.jdbc.AdbResultSet@3eca90
2011/07/06 23:07:28.332 Thread[main,5,main]@1259414:[E][AdbResultSet@3eca90.close]
ConnectionID(1) : SID(1)
2011/07/06 23:07:28.332 Thread[main,5,main]@1259414:[E][AdbConnection@82c01f.commit]
ConnectionID(1) : SID(0)
2011/07/06 23:07:28.332 Thread[main,5,main]@1259414:[R][AdbConnection@82c01f.commit]
ConnectionID(1) : SID(0)
2011/07/06 23:07:28.332 Thread[main,5,main]@1259414:[R][AdbResultSet@3eca90.close]
ConnectionID(1) : SID(0)
2011/07/06 23:07:28.332 Thread[Thread-0,5,main]@30090737:[E]
[AdbConnection@82c01f.prepareStatement(1)]
ConnectionID(1) : SID(0)
sql=SELECT * FROM SEINO_TABLE
2011/07/06 23:07:28.332 Thread[Thread-0,5,main]@30090737:[R]
[AdbConnection@82c01f.prepareStatement(1)]
ConnectionID(1) : SID(0)
Return=com.hitachi.hadb.jdbc.AdbPreparedStatement@2808b3
2011/07/06 23:07:28.348 Thread[Thread-1,5,main]@5462872:[E]
[AdbConnection@82c01f.prepareStatement(1)]
ConnectionID(1) : SID(0)
sql=DELETE FROM SEINO_TABLE WHERE I1=?
2011/07/06 23:07:28.358 Thread[Thread-1,5,main]@5462872:[E][AdbConnection@82c01f.commit]
ConnectionID(1) : SID(0)
2011/07/06 23:07:29.672 Thread[Thread-1,5,main]@5462872:[R][AdbConnection@82c01f.commit]
ConnectionID(1) : SID(0)
2011/07/06 23:07:30.098 Thread[Thread-1,5,main]@5462872:[R]
[AdbConnection@82c01f.prepareStatement(1)]
ConnectionID(1) : SID(0)
Return=com.hitachi.hadb.jdbc.AdbPreparedStatement@922804
2011/07/06 23:07:30.332 Thread[Thread-2,5,main]@25253977:[E]
[AdbConnection@82c01f.rollback(1)]
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
250
ConnectionID(1) : SID(0)
2011/07/06 23:07:42.098 Thread[Thread-2,5,main]@25253977:[R]
[AdbConnection@82c01f.rollback(1)]
ConnectionID(1) : SID(0)
2011/07/06 23:07:42.098 Thread[Thread-2,5,main]@25253977:[E][AdbConnection@82c01f.close]
ConnectionID(1) : SID(0)
2011/07/06 23:07:42.098 Thread[Thread-2,5,main]@25253977:[R][AdbConnection@82c01f.close]
ConnectionID(1) : SID(0)
2011/07/06 23:07:42.535 Thread[Thread-1,5,main]@5462872:Exception:
ExceptionClass: SQLException
ConnectionInformation: *
Message: KFAA71206-E Processing cannot continue because the connection is already closed.
[AdbPreparedStatement.setInt]
ErrorCode: -1020006
java.sql.SQLException: KFAA71206-E Processing cannot continue because the connection is
already closed. [AdbPreparedStatement.setInt]
at com.hitachi.hadb.jdbc.JdbMakeException.generateSQLException(JdbMakeException.java:31)
at com.hitachi.hadb.jdbc.AdbStatement.generateClosedSQLException(AdbStatement.java:3005)
at com.hitachi.hadb.jdbc.AdbPreparedStatement.setInt(AdbPreparedStatement.java:1170)
at Exception1.run(ExceptionTraceSample.java:57)
[2] Hitachi Advanced Data Binder JDBC Driver VV-RR※
2011/07/06 23:07:25.723 Thread[Thread-3,5,main]@13249998:[E]
[AdbConnection@119cca4.prepareStatement(1)]
ConnectionID(1) : SID(0)
sql=SELECT * FROM SEINO_TABLE
2011/07/06 23:07:25.770 Thread[Thread-4,5,main]@25839584:[E]
[AdbConnection@119cca4.rollback(1)]
ConnectionID(1) : SID(0)
2011/07/06 23:07:25.770 Thread[Thread-4,5,main]@25839584:[R]
[AdbConnection@119cca4.rollback(1)]
ConnectionID(1) : SID(0)
2011/07/06 23:07:25.770 Thread[Thread-5,5,main]@24431647:[E]
[AdbConnection@119cca4.prepareStatement(1)]
ConnectionID(1) : SID(0)
sql=SELECT ** FROM SEINO_TABLE
2011/07/06 23:07:25.863 Thread[Thread-5,5,main]@24431647:Exception:
ExceptionClass: SQLException
ConnectionInformation: user(ADBUSER01), sqlwaittime(0), host(dragon2), port(20249)
Message: KFAA30105-E Token "*"(non-reserved word), which is after token "*", is invalid.
[AdbStatement.prepare]
ErrorCode: -105
java.sql.SQLException: KFAA30105-E Token "*"(non-reserved word), which is after token "*",
is invalid.[AdbStatement.prepare]
at com.hitachi.hadb.jdbc.JdbSection.prepare(JdbSection.java:1497)
at com.hitachi.hadb.jdbc.AdbStatement.prepare(AdbStatement.java:2834)
at com.hitachi.hadb.jdbc.AdbPreparedStatement.<init>(AdbPreparedStatement.java:109)
at com.hitachi.hadb.jdbc.AdbConnection.prepareStatement(AdbConnection.java:1041)
at Exception1.run(ExceptionTraceSample.java:64)
注※
VV-RR には,JDBC ドライバのバージョンが出力されます。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
251
(b) 解析方法
Exception トレースログの解析方法について説明します。Exception トレースログはテキストエディタな
どで参照できます。
ここでは,「5.7.2(3)(a) 出力例」の Exception トレースログを解析する例を示します。
解析例
1. 調査対象の例外を含む通番の情報を抜き出します。
2. 情報を Thread 識別情報で分類し,スレッドごとに分割します。
3. 取得時刻によって,情報を時系列に並べます。
次の表に示すようになります。
表 5‒20 Exception トレースログを時系列に並べた例
日時
2011/07/06
23:07:09.129
2011/07/06
23:07:09.160
2011/07/06
23:07:14.285
2011/07/06
23:07:14.301
2011/07/06
23:07:26.567
2011/07/06
23:07:26.567
2011/07/06
23:07:26.567
2011/07/06
23:07:28.332
2011/07/06
23:07:28.332
スレッド 1
スレッド 2
スレッド 3
スレッド 4
Thread[main,
5,main]@1259414
Thread[Thread-0,5,
main]@30090737
Thread[Thread-1,5,
main]@5462872
Thread[Thread-2,5,
main]@25253977
AdbConnection@82
c01f.createStatemen
t(1)
AdbStatement@1e4c
bc4.execute
AdbConnection@82
c01f.commit
AdbConnection@82
c01f.prepareStateme
nt(1)
AdbConnection@82
c01f.commit
AdbConnection@82
c01f.commit
AdbStatement@1e4c
bc4.executeQuery
AdbResultSet@3eca
90.close
AdbConnection@82
c01f.prepareStateme
nt(1)
AdbConnection@82
c01f.commit
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
252
日時
スレッド 1
スレッド 2
スレッド 3
スレッド 4
Thread[main,
5,main]@1259414
Thread[Thread-0,5,
main]@30090737
Thread[Thread-1,5,
main]@5462872
Thread[Thread-2,5,
main]@25253977
2011/07/06
23:07:28.348
2011/07/06
23:07:28.358
AdbConnection@82
c01f.prepareStateme
nt(1)
AdbConnection@82
c01f.commit
2011/07/06
AdbConnection@82
c01f.rollback(1)
23:07:30.332
2011/07/06
AdbConnection@82
c01f.close
23:07:42.098
2011/07/06
SQLException 発生
23:07:42.535
"KFAA71206-E
Processing cannot
continue because
the connection is
already closed."
4. Exception のエラーの内容を確認します。
2011/07/06 23:07:42.535 のスレッド 3 で SQLException が発生し,Statement オブジェクトまた
は Connection オブジェクトがすでにクローズされていることがわかります。
5. 時系列でオブジェクトの操作を確認します。
次のスレッドの Connection オブジェクトのオブジェクト ID が同じであることから,4 つのスレッド
が同一のコネクションで処理されていることがわかります。
• 2011/07/06 23:07:09.129 のスレッド 1
• 2011/07/06 23:07:28.332 のスレッド 2
• 2011/07/06 23:07:28.348 のスレッド 3
• 2011/07/06 23:07:30.332 のスレッド 4
6. エラーの原因である個所を探します。
4 つのスレッドが同一のコネクションであることはわかったので,Statement.close メソッドまたは
Connection.close メソッドを実行している個所を探すと,スレッド 4 が 2011/07/06 23:07:42.098
で Connection.close メソッドを実行していることがわかります。このことから,2011/07/06
23:07:42.535 のスレッド 3 で発生した SQLException の原因は,スレッド 4 が 2011/07/06
23:07:42.098 で Connection.close メソッドを実行したためであるとわかります。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
253
(4) 必要となるメモリ所要量およびファイルサイズ
(a) メモリ所要量
Exception トレースログを取得するためのメモリ所要量は,次に示す計算式で求められます。
計算式
↑360×n÷1024↑ (単位:キロバイト)
変数の説明
n:メモリ内取得情報数(システムプロパティ,ユーザプロパティ,または接続用の URL のプロパティ
の adb_jdbc_cache_info_max の指定値)
(b) 必要となるファイルサイズ
Exception トレースログを取得するためのファイルサイズの概算は,次に示す計算式で求められます。
計算式
↑180×n×m÷1024↑+1 (単位:キロバイト)
変数の説明
n:メモリ内取得情報数(システムプロパティ,ユーザプロパティ,または接続用の URL のプロパティ
の adb_jdbc_cache_info_max の指定値)
m:ファイル出力情報数(システムプロパティ,ユーザプロパティ,または接続用の URL のプロパティ
の adb_jdbc_info_max の指定値)
(5) 注意事項
(a) Java 仮想マシン起動後の最初の出力
Java 仮想マシン起動後,最初にファイルに Exception トレースログを出力する場合は,更新日時が古い
方のファイルに出力されます。同じ場合は,adbjdbcexception01.trc に出力されます。
(b) ファイル出力先の指定
複数のプロセスから Exception トレースログを取得する場合,同じファイル出力先を指定していると,同
一ファイルに異なるプロセスのトレースが出力されます。プロセスごとにトレースを取得する場合は,プ
ロセスごとに異なるファイル出力先を指定してください。
JDBC ドライバは,Java 仮想マシンの機能を通じて OS が提供するファイルシステム上にログファイルを
作成します。そのため,次の点については,使用する Java 仮想マシンおよびファイルシステムに依存しま
す。
• 絶対パス名の接頭辞
• パスの区切り文字
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
254
• 出力先ファイル(絶対パス)の最大文字数
• 1 ファイル当たりのサイズ
(c) エラー発生時の処理
ファイルの作成や出力に失敗しても,Exception トレースログには情報が出力されません。また,エラー
メッセージが AP に返されたり,ファイル出力をリトライしたりすることもありません。
(d) 文字コード
Exception トレースログは,使用する Java 仮想マシンのデフォルトの変換文字セットで出力されます。
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
255
5.8 エスケープ句で指定できるスカラ関数
エスケープ句で指定できるスカラ関数を次の表に示します。
表 5‒21 エスケープ句で指定できるスカラ関数
スカラ関数
スカラ関数の標準形式
数学関数
ABS(number)
ACOS(float)
ASIN(float)
ATAN(float)
ATAN2(float1, float2)
CEILING(number)
COS(float)
DEGREES(number)
EXP(float)
FLOOR(number)
LOG(float)
LOG10(float)
MOD(integer1, integer2)
PI()
POWER(number, power)
RADIANS(number)
ROUND(number, places)
SIGN(number)
SIN(float)
SQRT(float)
TAN(float)
TRUNCATE(number[, places])
文字列関数
ASCII(string)
CHAR(code)
CONCAT(string1,string2)
LCASE(string)
LEFT(string,count)
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
256
スカラ関数
スカラ関数の標準形式
LENGTH(string)
LTRIM(string)
OCTET_LENGTH(string)
REPLACE(string1,string2[,string3])
RIGHT(string,count)
RTRIM(string)
SUBSTRING(string, start[, length])
UCASE(string)
時刻と日付の関数
CURDATE()
CURRENT_DATE()
CURRENT_TIME()
CURRENT_TIMESTAMP()
CURTIME()
DAYOFWEEK(date)
DAYOFYEAR(date)
EXTRACT(extract-field FROM extract-source)
NOW()
システム関数
USER()
データ型変換関数
CONVERT(value, SQLtype)
5. AP の作成
Hitachi Advanced Data Binder AP 開発ガイド
257
6
JDBC 1.2 API
この章では,JDBC 1.2 API の各インタフェースとメソッドについて説明します。
Hitachi Advanced Data Binder AP 開発ガイド
258
6.1 Driver インタフェース
ここでは,Driver インタフェースで提供されているメソッドについて説明します。
6.1.1 Driver インタフェースのメソッド一覧
(1) Driver インタフェースの主な機能
Driver インタフェースでは,主に次の機能が提供されています。
• データベースへの接続
• 接続用の URL の妥当性チェック
• DriverManager.getConnection メソッドで指定する接続プロパティの情報取得
• JDBC ドライバのバージョンの返却
(2) HADB でサポートしている Driver インタフェースのメソッド
HADB でサポートしている Driver インタフェースのメソッドの一覧を次の表に示します。
表 6‒1 Driver インタフェースのメソッドの一覧
項番
Driver インタフェースのメソッド
機能
1
acceptsURL(String url)
接続用の URL の接続情報で HADB サーバに接続できるかど
うかを確認します。
2
connect(String url, Properties info)
接続用の URL に指定した接続情報に従って HADB サーバに
接続します。
3
getMajorVersion()
JDBC ドライバのメジャーバージョンを取得します。
4
getMinorVersion()
JDBC ドライバのマイナーバージョンを取得します。
5
getPropertyInfo(String url, Properties info)
JDBC ドライバの有効なプロパティについての情報を取得しま
す。
6
jdbcCompliant()
JDBC ドライバが JDBC CompliantTM であるかどうかを返し
ます。
注
この表に記載されていないメソッドは,HADB ではサポートしていません。サポートしていないメソッ
ドを実行すると,SQLException が投入されます。
(3) 必要なパッケージ名称とクラス名称
Driver インタフェースを使用する場合に必要なパッケージ名称とクラス名称を次に示します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
259
• パッケージ名称:com.hitachi.hadb.jdbc
• クラス名称:HADBDriver
6.1.2 acceptsURL(String url)
(1) 機能
URL に指定されているデータベースに接続できるかどうかを確認します。
(2) 形式
public boolean acceptsURL(String url) throws SQLException
(3) 引数
String url:
接続用の URL を指定します。
接続用の URL の指定形式については,「5.3.1(2)(a) 引数 url の指定内容(接続用の URL の指定)
」
を参照してください。
(4) 戻り値
URL に指定したデータベースに接続できる場合は true が,接続できない場合は false が返却されます。
(5) 発生する例外
なし。
6.1.3 connect(String url, Properties info)
(1) 機能
接続用の URL に指定した接続情報に従って HADB サーバに接続します。
なお,connect メソッドを実行するには CONNECT 権限が必要です。
(2) 形式
public Connection connect(String url, Properties info) throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
260
(3) 引数
String url:
接続用の URL を指定します。
接続用の URL の指定形式については,「5.3.1(2)(a) 引数 url の指定内容(接続用の URL の指定)
」
を参照してください。
Properties info:
接続引数としてのプロパティ名称と値のペアのリストを指定します。指定形式については,「5.3.1(2)
(d) 引数 info の指定内容(ユーザプロパティの指定)
」を参照してください。
(4) 戻り値
Connection オブジェクトが返却されます。
指定された URL が不正な場合(URL に指定したデータベースに接続できない場合)
,null が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• データベースのアクセスエラーが発生した場合
• 指定した接続情報に誤りがある場合
(6) 留意事項
このメソッドを実行して HADB サーバに接続する場合,DriverManager.setLoginTimeout で設定した
HADB サーバへの接続処理のタイムアウト時間が適用されます。タイムアウト時間は,
DriverManager.getLoginTimeout の戻り値で確認できます。getLoginTimeout メソッドの戻り値が 0
の場合,デフォルト値の 300 秒がタイムアウト時間になります。
6.1.4 getMajorVersion()
(1) 機能
JDBC ドライバのメジャーバージョンを取得します。
(2) 形式
public synchronized int getMajorVersion()
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
261
(3) 引数
なし。
(4) 戻り値
JDBC ドライバのメジャーバージョン番号が返却されます。
(5) 発生する例外
なし。
6.1.5 getMinorVersion()
(1) 機能
JDBC ドライバのマイナーバージョンを取得します。
(2) 形式
public synchronized int getMinorVersion()
(3) 引数
なし。
(4) 戻り値
JDBC ドライバのマイナーバージョン番号が返却されます。
(5) 発生する例外
なし。
6.1.6 getPropertyInfo(String url, Properties info)
(1) 機能
JDBC ドライバの有効なプロパティについての情報を取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
262
(2) 形式
public synchronized DriverPropertyInfo[] getPropertyInfo(String url, Properties info)
throws SQLException
(3) 引数
String url:
接続用の URL を指定します。
接続用の URL の指定形式については,「5.3.1(2)(a) 引数 url の指定内容(接続用の URL の指定)
」
を参照してください。
Properties info:
接続引数としてのプロパティ名称,および値のペアのリストを指定します。
(4) 戻り値
有効なプロパティを記述する DriverPropertyInfo オブジェクトの配列が返却されます。プロパティが必
要ない場合は,この配列は空になることもあります。
DriverPropertyInfo の各フィールドの設定値を次の表に示します。
表 6‒2 DriverPropertyInfo の各フィールドの設定値
プロパティ名
DriverPropertyInfo フィールド
name
value
description
required
choices
プロパティ名と
同じ
null
"Host Name"
true
null
null
"Port Number"
true
null
adb_clt_rpc_con_wait_time
"300"
"Connect Wait
Time"
false
null
adb_clt_rpc_sql_wait_time
"0"
"Sql Wait
Time"
false
null
adb_clt_ap_name
"********"
"Application
Name"
false
null
adb_clt_group_name
null
"Client Group
Name"
false
null
adb_clt_fetch_size
"1024"
"Fetch Size"
false
null
adb_clt_sql_text_out
"N"
"Text Out"
false
{"Y","N"}
adb_clt_trn_iso_lv
"READ_COM
MITTED"
"Isolation
Level"
false
{"READ_COM
MITTED","RE
PEATABLE_R
EAD"}
adb_clt_rpc_srv_host
adb_clt_rpc_srv_port
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
263
プロパティ名
DriverPropertyInfo フィールド
name
value
description
required
choices
adb_clt_sql_order_mode
"BYTE"
"Order Mode"
false
{"BYTE","ISO"}
adb_clt_trn_access_mode
"READ_WRIT
E"
"Access Mode"
false
{"READ_WRIT
E","READ_ON
LY"}
adb_dbbuff_wrktbl_clt_blk
_num
"256"
"Work Table
Block Number"
false
null
adb_sql_prep_delrsvd_use_
srvdef
"Y"
"Delete
Reserved
Word Using
Server
Definition"
false
{"Y","N"}
adb_sql_exe_max_rthd_nu
m
"4"
"Sql Execute
Max Real
Thread
Number"
false
null
adb_sql_exe_hashgrp_area
_size
"4800"
"Hash Group
Area Size"
false
null
adb_sql_exe_hashtbl_area_
size
"2000"
"Hash Table
Area Size"
false
null
adb_jdbc_exc_trc_out_pat
h
null
"Exception
Trace Out
Path"
false
null
adb_jdbc_info_max
"5"
"Exception
Trace
Information
Max Number"
false
null
adb_jdbc_cache_info_max
"1000"
"Exception
Trace Cache
Information
Max Number"
false
null
adb_jdbc_trc_out_lv
"1"
"Exception
Trace Out
Level"
false
null
encodelang
null
"Encode Lang"
false
null
methodtrace
"OFF"
"JDBC
Interface
Trace"
false
{"ON","OFF"}
tracenum
"500"
"Trace Entry
Number"
false
null
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
264
プロパティ名
DriverPropertyInfo フィールド
name
value
description
required
choices
sqlwarningkeep
"TRUE"
"Keeping up
the Warning
Objects"
false
{"TRUE","FAL
SE"}
user
null
"UserID"
true
null
password
null
"Password"
true
null
url,info に指定された情報を解析し,HADB サーバに接続するための情報が返却されます。
なお,acceptsURL メソッドの戻り値が false の場合,戻り値には null が返却されます。
(5) 発生する例外
なし。
6.1.7 jdbcCompliant()
(1) 機能
JDBC ドライバが JDBC CompliantTM であるかどうかを返します。
(2) 形式
public synchronized boolean jdbcCompliant()
(3) 引数
なし。
(4) 戻り値
JDBC ドライバが JDBC Compliant の場合は true が,そうでない場合は false が返却されます。
(5) 発生する例外
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
265
6.1.8 エスケープ句
SQL 文中で{ }で囲まれた部分をエスケープ句と呼びます。エスケープ句は 1 つのキーワードと複数の
パラメタで構成されます。キーワードの大文字と小文字は区別しません。エスケープ句の一覧を次の表に
示します。
表 6‒3 エスケープ句の一覧
エスケープ句の種別
キーワード
日付
d
時刻
t
時刻印
ts
外結合
oj
スカラ関数
fn
エスケープ句で指定できるスカラ関数については,「5.8 エスケープ句で指定できるスカラ関数」を参照
してください。
エスケープ構文の解析
エスケープ構文の解析を有効にするかどうかは,Statement クラスの setEscapeProcessing メソッド
で指定します。指定がない場合は,有効となります。エスケープ構文の解析が有効な場合,SQL 文内
にエスケープ句がないか解析します。SQL 文内にエスケープ句があった場合は,HADB が実行できる
SQL 文に変換します。
エスケープ構文を使用しない場合は,Statement オブジェクトの setEscapeProcessing メソッドでエス
ケープ構文の解析を無効にすると,構文解析のオーバヘッドを削減できます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
266
6.2 Connection インタフェース
ここでは,Connection インタフェースで提供されているメソッドについて説明します。
6.2.1 Connection インタフェースのメソッド一覧
(1) Connection インタフェースの主な機能
Connection インタフェースでは,主に次の機能が提供されています。
• Statement クラスおよび PreparedStatement クラスのオブジェクト生成
• トランザクションの決着(コミットまたはロールバック)
• 自動コミットモードの設定
(2) HADB でサポートしている Connection インタフェースのメソッド
HADB でサポートしている Connection インタフェースのメソッドの一覧を次の表に示します。
表 6‒4 Connection インタフェースのメソッドの一覧
項番
Connection インタフェースのメソッド
機能
1
clearWarnings()
Connection オブジェクトに通知されたすべての警告をクリア
します。
2
close()
HADB サーバとの接続を切断します。
3
commit()
直前のコミットまたはロールバック以降に行われた変更をすべ
て有効とします。
4
createStatement()
5
createStatement(int resultSetType, int
resultSetConcurrency)
SQL 文を HADB サーバに送るための Statement オブジェク
トを生成します。
6
createStatement(int resultSetType, int
resultSetConcurrency, int resultSetHoldability)
7
getAutoCommit()
この Connection オブジェクトの現在の自動コミットモード
を取得します。
8
getCatalog()
この Connection オブジェクトの現在のカタログ名を取得し
ます。
9
getHADBOrderMode()
この Connection オブジェクトの,ORDER BY 句を指定した
SELECT 文の文字データの並び替え順序を取得します。HADB
独自のメソッドです。
getHoldability()
この Connection オブジェクトを使用して生成される
ResultSet オブジェクトの現在の保持機能を取得します。
10
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
267
項番
Connection インタフェースのメソッド
機能
11
getMetaData()
DatabaseMetaData オブジェクトを生成します。
12
getTransactionIsolation()
この Connection オブジェクトの現在のトランザクション隔
離性水準を取得します。
13
getTypeMap()
この Connection オブジェクトに関連した Map オブジェクト
を取得します。
14
getWarnings()
この Connection オブジェクトに関する呼び出しによって報
告される警告を,SQLWarning オブジェクトに取得します。
15
isClosed()
Connection オブジェクトがクローズされているかどうかを返
します。
16
isReadOnly()
この Connection オブジェクトが読み込み専用モードかどう
かを取得します。
17
isValid(int timeout)
現在の接続状態を取得します。
18
nativeSQL(String sql)
指定した SQL 文内のエスケープ句を,HADB が実行できる形
式に変換します。
19
prepareStatement(String sql)
20
prepareStatement(String sql, int resultSetType,
int resultSetConcurrency)
パラメタ付きの SQL 文を HADB サーバに送るための
PreparedStatement オブジェクトを生成します。
21
prepareStatement(String sql, int resultSetType,
int resultSetConcurrency, int
resultSetHoldability)
22
rollback()
トランザクションによって実行された変更をすべて元に戻し,
Connection オブジェクトが保持するロックをすべて解除しま
す。
23
setAutoCommit(boolean autoCommit)
この接続の自動コミットモードを設定します。
24
setCatalog(String catalog)
渡されたカタログ名を設定し,Connection オブジェクトの
データベースの作業用サブスペースを選択します。
25
setHADBOrderMode(int mode)
この Connection オブジェクトの,ORDER BY 句を指定した
SELECT 文の文字データの並び替え順序を設定します。HADB
独自のメソッドです。
26
setHoldability(int holdability)
この Connection オブジェクトを使用して生成された
ResultSet オブジェクトの保持機能を設定します。
27
setReadOnly(boolean readOnly)
この Connection オブジェクトを読み取り専用モードに設定
します。トランザクションアクセスモードを設定します。
28
setTransactionIsolation(int level)
この Connection オブジェクトのトランザクション隔離性水
準を設定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
268
注
この表に記載されていないメソッドは,HADB ではサポートしていません。サポートしていないメソッ
ドを実行すると,SQLException が投入されることがあります。
(3) 必要なパッケージ名称とクラス名称
Connection インタフェースを使用する場合に必要なパッケージ名称とクラス名称を次に示します。
• パッケージ名称:com.hitachi.hadb.jdbc
• クラス名称:AdbConnection
6.2.2 clearWarnings()
(1) 機能
Connection オブジェクトに通知されたすべての警告をクリアします。
このメソッドを実行した場合,この Connection オブジェクトに対する新しい警告が報告されるまでは,
getWarnings メソッドの戻り値は null になります。
(2) 形式
public synchronized void clearWarnings() throws SQLException
(3) 引数
なし。
(4) 戻り値
なし。
(5) 発生する例外
Connection オブジェクトがクローズされている場合,SQLException が投入されます。
6.2.3 close()
(1) 機能
HADB サーバとの接続を切断します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
269
通常接続時は,HADB サーバとの接続を切断するとともに,該当するオブジェクトを無効にし,不要なリ
ソースを解放します。
(2) 形式
public synchronized void close() throws SQLException
(3) 引数
なし。
(4) 戻り値
なし。
(5) 発生する例外
なし。
(6) 留意事項
• プーリング環境下でこのメソッドを実行した場合,HADB サーバとの物理的な接続は切断されません。
この場合,PooledConnection オブジェクトの close メソッドで物理的な接続の切断をします。
• プーリング環境下でこのメソッドを実行した結果,致命的なエラーが発生してコネクションプーリング
が使用できなくなった場合でも,ConnectionEventListener.connectionErrorOccurred は発生しま
せん。
• すでにクローズされた Connection オブジェクトでこのメソッドを実行しても,このメソッドは何もし
ません。
• 行の取り出し処理でエラーが発生していた場合,決着していなかったトランザクションはコミットされ
ないでロールバックされます。なお,HADB サーバからは正常に切断されて,リソースも解放されます。
6.2.4 commit()
(1) 機能
直前のコミットまたはロールバック以降に行われた変更をすべて有効とします。
自動コミットモードを有効にしている状態でこのメソッドを呼び出しても,例外を投入しないでコミット
処理を行います。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
270
(2) 形式
public synchronized void commit() throws SQLException
(3) 引数
なし。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Connection オブジェクトがクローズされている場合
• データベースのアクセスエラーが発生した場合
• 行の取り出し処理で発生したエラーを,コミット処理の延長で検知した場合
(6) 留意事項
• コミット処理が成功すると,ResultSet オブジェクトが無効になります。
• 行の取り出し処理のエラーを検知した例外が発生した場合,トランザクションはコミットされないで
ロールバックされます。
• コミット処理が失敗した場合,HADB サーバが異常終了します。
6.2.5 createStatement()
(1) 機能
SQL 文を HADB サーバに送るための Statement オブジェクトを生成します。
(2) 形式
public synchronized Statement createStatement() throws SQLException
(3) 引数
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
271
(4) 戻り値
Statement オブジェクトが返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Connection オブジェクトがクローズされている場合
• Statement オブジェクトの生成でエラーが発生した場合
• データベースのアクセスエラーが発生した場合
(6) 留意事項
このメソッドで生成した Statement オブジェクトから生成される ResultSet オブジェクトの保持機能は,
常に ResultSet.HOLD_CURSORS_OVER_COMMIT になります。
6.2.6 createStatement(int resultSetType, int resultSetConcurrency)
(1) 機能
SQL 文を HADB サーバに送るための Statement オブジェクトを生成します。
(2) 形式
public synchronized Statement createStatement(int resultSetType, int resultSetConcurrency)
throws SQLException
(3) 引数
int resultSetType:
結果セットタイプを指定します。
int resultSetConcurrency:
並行処理モードを指定します。
(4) 戻り値
Statement オブジェクトが返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
272
• Connection オブジェクトがクローズされている場合
• Statement オブジェクトの生成でエラーが発生した場合
• 結果セットタイプに ResultSet 定数以外を指定した場合
• 並行処理モードに ResultSet 定数以外を指定した場合
• データベースのアクセスエラーが発生した場合
(6) 留意事項
• このメソッドで生成した Statement オブジェクトから生成される ResultSet オブジェクトの保持機能
は,常に ResultSet.HOLD_CURSORS_OVER_COMMIT になります。
• 結果セットタイプに ResultSet.TYPE_SCROLL_SENSITIVE を指定した場合,
ResultSet.TYPE_SCROLL_INSENSITIVE に切り替え,SQLWarning を設定します。
• 並行処理モードは ResultSet.CONCUR_READ_ONLY だけサポートしています。
ResultSet.CONCUR_UPDATABLE を指定した場合,ResultSet.CONCUR_READ_ONLY に切り替
えて SQLWarning を設定します。
6.2.7 createStatement(int resultSetType, int resultSetConcurrency,
int resultSetHoldability)
(1) 機能
SQL 文を HADB サーバに送るための Statement オブジェクトを生成します。
(2) 形式
public synchronized Statement createStatement(int resultSetType, int resultSetConcurrency,
int resultSetHoldability) throws SQLException
(3) 引数
int resultSetType:
結果セットタイプを指定します。
int resultSetConcurrency:
並行処理モードを指定します。
int resultSetHoldability:
ResultSet オブジェクトの保持機能を指定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
273
(4) 戻り値
Statement オブジェクトが返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Connection オブジェクトがクローズされている場合
• Statement オブジェクトの生成でエラーが発生した場合
• 結果セットタイプに ResultSet 定数以外を指定した場合
• 並行処理モードに ResultSet 定数以外を指定した場合
• ResultSet オブジェクトの保持機能に ResultSet 定数以外を指定した場合
• データベースのアクセスエラーが発生した場合
(6) 留意事項
• 結果セットタイプに ResultSet.TYPE_SCROLL_SENSITIVE を指定した場合,
ResultSet.TYPE_SCROLL_INSENSITIVE に切り替えて,SQLWarning を設定します。
• 並行処理モードは ResultSet.CONCUR_READ_ONLY だけをサポートします。
ResultSet.CONCUR_UPDATABLE を指定した場合,ResultSet.CONCUR_READ_ONLY に切り替
えて,SQLWarning を設定します。
• ResultSet オブジェクトの保持機能は,ResultSet.HOLD_CURSORS_OVER_COMMIT だけをサポー
トしています。ResultSet.CLOSE_CURSORS_AT_COMMIT を指定した場合は,
ResultSet.HOLD_CURSORS_OVER_COMMIT に切り替えて,SQLWarning を設定します。
6.2.8 getAutoCommit()
(1) 機能
この Connection オブジェクトの現在の自動コミットモードを取得します。
(2) 形式
public synchronized boolean getAutoCommit() throws SQLException
(3) 引数
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
274
(4) 戻り値
Connection オブジェクトでの現在の自動コミットモードの状態が返却されます。
(5) 発生する例外
Connection オブジェクトがクローズされている場合,SQLException が投入されます。
6.2.9 getCatalog()
(1) 機能
この Connection オブジェクトの現在のカタログ名を取得します。
(2) 形式
public synchronized String getCatalog() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に null が返却されます。
(5) 発生する例外
Connection オブジェクトがクローズされている場合,SQLException が投入されます。
6.2.10 getHADBOrderMode()
(1) 機能
この Connection オブジェクトの,現在の ORDER BY 句を指定した SELECT 文の文字データの並び替
え順序を取得します。
(2) 形式
public int getHADBOrderMode() throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
275
(3) 引数
なし。
(4) 戻り値
現在の ORDER BY 句を指定した SELECT 文の文字データの並び替え順序が返却されます。次に示すどち
らかの値が返却されます。
• AdbConnection.HADB_SQL_ORDER_MODE_BYTE
• AdbConnection.HADB_SQL_ORDER_MODE_ISO
(5) 発生する例外
Connection オブジェクトがクローズされている場合,SQLException が投入されます。
(6) 留意事項
このメソッドは,AdbConnection インタフェースで提供される HADB 独自のメソッドです。実行方法に
ついては,「10.2 Wrapper インタフェース」を参照してください。
6.2.11 getHoldability()
(1) 機能
この Connection オブジェクトを使用して生成される ResultSet オブジェクトの現在の保持機能を取得し
ます。
(2) 形式
public synchronized int getHoldability() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に ResultSet.HOLD_CURSORS_OVER_COMMIT が返却されます。
(5) 発生する例外
Connection オブジェクトがクローズされている場合,SQLException が投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
276
6.2.12 getMetaData()
(1) 機能
DatabaseMetaData オブジェクトを生成します。
(2) 形式
public synchronized DatabaseMetaData getMetaData() throws SQLException
(3) 引数
なし。
(4) 戻り値
DatabaseMetaData オブジェクトが返却されます。
(5) 発生する例外
Connection オブジェクトがクローズされている場合,SQLException が投入されます。
6.2.13 getTransactionIsolation()
(1) 機能
この Connection オブジェクトの現在のトランザクション隔離性水準を取得します。
(2) 形式
public int getTransactionIsolation() throws SQLException
(3) 引数
なし。
(4) 戻り値
現在のトランザクション隔離性水準が返却されます。次に示すどちらかの値が返却されます。
• Connection.TRANSACTION_READ_COMMITTED
トランザクション隔離性水準に READ COMMITTED が適用されている場合に返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
277
• Connection.TRANSACTION_REPEATABLE_READ
トランザクション隔離性水準に REPEATABLE READ が適用されている場合に返却されます。
(5) 発生する例外
Connection オブジェクトがクローズされている場合,SQLException が投入されます。
6.2.14 getTypeMap()
(1) 機能
この Connection オブジェクトに関連した Map オブジェクトを取得します。
(2) 形式
public synchronized java.util.Map getTypeMap() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に情報を格納していない空の java.util.Map オブジェクトが返却されます。
(5) 発生する例外
Connection オブジェクトがクローズされている場合,SQLException が投入されます。
6.2.15 getWarnings()
(1) 機能
この Connection オブジェクトに関する呼び出しによって報告される警告を,SQLWarning オブジェク
トに取得します。
該当する Connection オブジェクトが保持する SQLWarning オブジェクトを取得します。取得した
SQLWarning オブジェクトの getNextWarning メソッドを実行すれば,2 つ目以降の警告を取得できます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
278
(2) 形式
public synchronized SQLWarning getWarnings() throws SQLException
(3) 引数
なし。
(4) 戻り値
最初の SQLWarning オブジェクトが返却されます。SQLWarning オブジェクトがない場合は null が返
却されます。
(5) 発生する例外
Connection オブジェクトがクローズされている場合,SQLException が投入されます。
6.2.16 isClosed()
(1) 機能
Connection オブジェクトがクローズされているかどうかを返します。
HADB サーバへの接続は,close メソッドが呼び出されるか,または特定の致命的なエラーが発生した場
合に切断されます。close メソッドを実行したあとに,このメソッドが実行された場合にだけ,true を返
すことを保証します。
なお,HADB サーバへの接続が,有効または無効かをこのメソッドで判定することはできません。
(2) 形式
public synchronized boolean isClosed() throws SQLException
(3) 引数
なし。
(4) 戻り値
Connection オブジェクトがクローズされている場合は true が,クローズされていない場合は false が返
却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
279
(5) 発生する例外
なし。
6.2.17 isReadOnly()
(1) 機能
この Connection オブジェクトが読み込み専用モードかどうかを取得します。
(2) 形式
public synchronized boolean isReadOnly() throws SQLException
(3) 引数
なし。
(4) 戻り値
この Connection オブジェクトが読み込み専用モードの場合は true が,読み込み専用モードでない状態の
場合は false が返却されます。
(5) 発生する例外
Connection オブジェクトがクローズされている場合,SQLException が投入されます。
6.2.18 isValid(int timeout)
(1) 機能
現在の接続状態を取得します。
(2) 形式
public synchronized boolean isValid(int timeout) throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
280
(3) 引数
int timeout:
待ち時間(秒)を 0〜65,535 の範囲で指定します。
0 を指定した場合は無制限となります。
65,536 以上を指定した場合には,65,535 が仮定されます。
(4) 戻り値
接続中であることを確認できた場合は,true が返却されます。Connection オブジェクトがクローズされ
ている場合,または引数で指定された待ち時間を過ぎた場合はタイムアウトとなり,false が返却されます。
(5) 発生する例外
引数に-1 以下が指定された場合は,SQLException が投入されます。
6.2.19 nativeSQL(String sql)
(1) 機能
指定した SQL 文内のエスケープ句を,HADB が実行できる形式に変換します。
(2) 形式
public synchronized String nativeSQL(String sql) throws SQLException
(3) 引数
String sql:
SQL 文を指定します。
(4) 戻り値
HADB が実行できる SQL 文が返却されます。
sql に null を指定した場合,null が返却されます。sql に空文字を指定した場合,空文字が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Connection オブジェクトがクローズされている場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
281
• 指定された SQL のエスケープ句の形式が次のように不正である場合
• "{"およびキーワードはあるが,"}"がない
• 指定された SQL 文の長さが,16,000,000 文字を超えている場合
(6) エスケープ句の構文規則
指定された SQL 文内のエスケープ句を,HADB が実行できる形式に変換して返します。エスケープ句の
構文規則を次に示します。
エスケープ句 ::= 日付・時刻・時刻印のエスケープシーケンス
| LIKE述語のエスケープ文字のエスケープシーケンス
| 外結合のエスケープシーケンス
| スカラ関数のエスケープシーケンス
日付・時刻・時刻印のエスケープシーケンス ::= 日付のエスケープシーケンス
| 時刻のエスケープシーケンス
| 時刻印のエスケープシーケンス
日付のエスケープシーケンス ::=
エスケープ開始子 d 日付データの既定の文字列表現※1 エスケープ終了子
時刻のエスケープシーケンス ::=
エスケープ開始子 t 時刻データの既定の文字列表現※2 エスケープ終了子
時刻印のエスケープシーケンス ::=
エスケープ開始子 ts 時刻印データの既定の文字列表現※3 エスケープ終了子
LIKE述語のエスケープ文字のエスケープシーケンス ::=
エスケープ開始子 escape エスケープ文字 エスケープ終了子
外結合のエスケープシーケンス ::= エスケープ開始子 oj 結合表 エスケープ終了子
スカラ関数のエスケープシーケンス ::= エスケープ開始子 fn スカラ関数 エスケープ終了子
スカラ関数 ::= 標準形式のスカラ関数※4
エスケープ開始子 ::= '{'
エスケープ終了子 ::= '}'
注※1
'YYYY-MM-DD'で表される文字列表現のことです。
注※2
'hh:mm:ss[.f...]'で表される文字列表現のことです。
注※3
'YYYY-MM-DD hh:mm:ss[.f...]'で表される文字列表現のことです。
注※4
標準形式のスカラ関数については,「5.8 エスケープ句で指定できるスカラ関数」を参照してください。
なお,下線部には,エスケープ句を指定できません。また,JDBC ドライバでは構文解析をしないで,変
換後もそのままとし,HADB サーバの構文解析に任せます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
282
エスケープシーケンスのキーワードを次に示します。キーワードについては,大文字と小文字を区別しま
せん。
1. 日付のエスケープシーケンス内の"d"
2. 時刻のエスケープシーケンス内の"t"
3. 時刻印のエスケープシーケンス内の"ts"
4. LIKE 述語のエスケープ文字のエスケープシーケンス内の"escape"
5. 外結合のエスケープシーケンス内の"oj"
6. スカラ関数のエスケープシーケンス内の"fn"
エスケープ句の入力規則を次に示します。
• エスケープ句内の区切り文字には,半角空白が指定できます。
• 区切り文字は,エスケープ開始子の後ろ,キーワードの後ろ,およびエスケープ終了子の前に挿入でき
ます。
• 1 つの SQL 文中に,複数のエスケープ句を指定できます。
• JDBC ドライバは指定された SQL 文内のエスケープ句を,HADB が実行できる形式に変換します。変
換するのは,{ }で囲まれたエスケープ句内だけです。エスケープ句外は,何も変換しません。
エスケープ句の変換規則を次の表に示します。
表 6‒5 エスケープ句の変換規則
対象エスケープ句
変換前
変換後
日付
エスケープ開始子 d 日付データの既定の文字列表現 エスケー
プ終了子
DATE 日付データの既定の文字列
表現
時刻
エスケープ開始子 t 時刻データの既定の文字列表現 エスケー
プ終了子
TIME 時刻データの既定の文字列
表現
時刻印
エスケープ開始子 ts 時刻印データの既定の文字列表現 エス
ケープ終了子
TIMESTAMP 時刻印データの既定
の文字列表現
LIKE
エスケープ開始子 escape エスケープ文字 エスケープ終了子
escape エスケープ文字
外結合
エスケープ開始子 oj 結合表 エスケープ終了子
結合表
スカラ関数
エスケープ開始子 fn スカラ関数 エスケープ終了子
HADB 形式のスカラ関数※
注※
標準形式のスカラ関数を,HADB 形式に変換します。
標準形式と HADB 形式が異なるスカラ関数の変換内容を次の表に示します。
基本的に,スカラ関数の引数の個数チェックはしません。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
283
表 6‒6 標準形式と HADB 形式が異なるスカラ関数の変換内容一覧
スカラ関数
変換前の形式
変換後の形式(HADB 形式)
数学関数
CEILING(number)
CEIL(number)
LOG(float)
LN(float)
LOG10(float)
LOG(10,float)
TRUNCATE(number[, places])
TRUNC(number[, places])
CHAR(code)
CHR(code)
LCASE(string)
LOWER(string)
OCTET_LENGTH(string)
LENGTHB(string)
SUBSTRING(string, start[, length])
SUBSTR(string, start[, length])
UCASE(string)
UPPER(string)
CURDATE()
CURRENT_DATE
CURRENT_DATE()
CURRENT_DATE
CURRENT_TIME()
CURRENT_TIME
CURRENT_TIMESTAMP()
CURRENT_TIMESTAMP
CURTIME()
CURRENT_TIME
NOW()
CURRENT_TIMESTAMP
USER()
CURRENT_USER
文字列関数
時刻と日付の関数
システム関数
6.2.20 prepareStatement(String sql)
(1) 機能
パラメタ付きの SQL 文を HADB サーバに送るための PreparedStatement オブジェクトを生成します。
(2) 形式
public synchronized PreparedStatement prepareStatement(String sql) throws SQLException
(3) 引数
String sql:
実行する SQL 文を指定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
284
(4) 戻り値
PreparedStatement オブジェクトが返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Connection オブジェクトがクローズされている場合
• PreparedStatement オブジェクトの生成でエラーが発生した場合
• データベースのアクセスエラーが発生した場合
• 指定された SQL 文の長さが,16,000,000 文字を超えている場合
(6) 留意事項
このメソッドで生成した PreparedStatement オブジェクトから生成される ResultSet オブジェクトの保
持機能は,常に ResultSet.HOLD_CURSORS_OVER_COMMIT となります。
6.2.21 prepareStatement(String sql, int resultSetType, int
resultSetConcurrency)
(1) 機能
パラメタ付きの SQL 文を HADB サーバに送るための PreparedStatement オブジェクトを生成します。
(2) 形式
public synchronized PreparedStatement prepareStatement(String sql, int resultSetType, int
resultSetConcurrency) throws SQLException
(3) 引数
String sql:
実行する SQL 文を指定します。
int resultSetType:
結果セットタイプを指定します。
int resultSetConcurrency:
並行処理モードを指定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
285
(4) 戻り値
PreparedStatement オブジェクトが返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Connection オブジェクトがクローズされている場合
• PreparedStatement オブジェクトの生成でエラーが発生した場合
• 結果セットタイプに ResultSet 定数以外を指定した場合
• 並行処理モードに ResultSet 定数以外を指定した場合
• データベースのアクセスエラーが発生した場合
• 指定された SQL 文の長さが,16,000,000 文字を超えている場合
(6) 留意事項
• 結果セットタイプに ResultSet.TYPE_SCROLL_SENSITIVE を指定した場合,
ResultSet.TYPE_SCROLL_INSENSITIVE に切り替えて,SQLWarning を設定します。
• 並行処理モードは ResultSet.CONCUR_READ_ONLY だけをサポートしています。
ResultSet.CONCUR_UPDATABLE を指定した場合,ResultSet.CONCUR_READ_ONLY に切り替
えて,SQLWarning を設定します。
• このメソッドで生成した PreparedStatement オブジェクトから生成される ResultSet オブジェクトの
保持機能は,常に ResultSet.HOLD_CURSORS_OVER_COMMIT となります。
6.2.22 prepareStatement(String sql, int resultSetType, int
resultSetConcurrency, int resultSetHoldability)
(1) 機能
パラメタ付きの SQL 文を HADB サーバに送るための PreparedStatement オブジェクトを生成します。
(2) 形式
public synchronized PreparedStatement prepareStatement(String sql, int resultSetType, int
resultSetConcurrency, int resultSetHoldability) throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
286
(3) 引数
String sql:
実行する SQL 文を指定します。
int resultSetType:
結果セットタイプを指定します。
int resultSetConcurrency:
並行処理モードを指定します。
int resultSetHoldability:
ResultSet オブジェクトの保持機能を指定します。
(4) 戻り値
PreparedStatement オブジェクトが返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Connection オブジェクトがクローズされている場合
• PreparedStatement オブジェクトの生成でエラーが発生した場合
• 結果セットタイプに ResultSet 定数以外を指定した場合
• 並行処理モードに ResultSet 定数以外を指定した場合
• ResultSet オブジェクトの保持機能に ResultSet 定数以外を指定した場合
• データベースのアクセスエラーが発生した場合
• 指定された SQL 文の長さが,16,000,000 文字を超えている場合
(6) 留意事項
• 結果セットタイプに ResultSet.TYPE_SCROLL_SENSITIVE を指定した場合,
ResultSet.TYPE_SCROLL_INSENSITIVE に切り替えて,SQLWarning を設定します。
• 並行処理モードは ResultSet.CONCUR_READ_ONLY だけをサポートします。
ResultSet.CONCUR_UPDATABLE を指定した場合,ResultSet.CONCUR_READ_ONLY に切り替
えて,SQLWarning を設定します。
• ResultSet オブジェクトの保持機能は ResultSet.HOLD_CURSORS_OVER_COMMIT だけをサポー
トしています。ResultSet.CLOSE_CURSORS_AT_COMMIT を指定した場合は,
ResultSet.HOLD_CURSORS_OVER_COMMIT に切り替えて,SQLWarning を設定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
287
6.2.23 rollback()
(1) 機能
トランザクションによって実行された変更をすべて元に戻し,Connection オブジェクトが保持するロッ
クをすべて解除します。
自動コミットモードを有効にしている状態で,このメソッドを呼び出しても例外を投入しないで,ロール
バック処理を行います。
(2) 形式
public synchronized void rollback() throws SQLException
(3) 引数
なし。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Connection オブジェクトがクローズされている場合
• データベースのアクセスエラーが発生した場合
(6) 留意事項
• ロールバック処理が成功すると,ResultSet オブジェクトが無効になります。
• ロールバック処理が失敗した場合,HADB サーバが異常終了します。
6.2.24 setAutoCommit(boolean autoCommit)
(1) 機能
この接続の自動コミットモードを設定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
288
(2) 形式
public synchronized void setAutoCommit(boolean autoCommit) throws SQLException
(3) 引数
boolean autoCommit:
自動コミットモードを有効にする場合は true を,無効にする場合は false を指定します。
(4) 戻り値
なし。
(5) 発生する例外
Connection オブジェクトがクローズされている場合,SQLException が投入されます。
(6) 留意事項
• 自動コミットモードが有効な場合,SQL 文の処理が終わると自動的にコミットされます。そのため,1
つの SQL 文は 1 つのトランザクションとして扱われます。自動コミットモードが無効な場合は,commit
メソッドまたは rollback メソッドの実行によって SQL 文が完了します。デフォルトでは,自動コミッ
トモードは有効です。
• SQL 文の完了時に自動コミットが実行されます。SQL 文が ResultSet オブジェクトを返す場合,
ResultSet オブジェクトがクローズされたときに,SQL 文が完了します。
• トランザクションの途中でこのメソッドが呼び出されても,そのトランザクションはコミットされませ
ん。
6.2.25 setCatalog(String catalog)
(1) 機能
渡されたカタログ名を設定し,Connection オブジェクトのデータベースの作業用サブスペースを選択し
ます。
(2) 形式
public synchronized void setCatalog(String catalog) throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
289
(3) 引数
String catalog:
この引数を指定しても無視されます。
(4) 戻り値
なし。
(5) 発生する例外
Connection オブジェクトがクローズされている場合,SQLException が投入されます。
6.2.26 setHADBOrderMode(int mode)
(1) 機能
この Connection オブジェクトの,ORDER BY 句を指定した SELECT 文の文字データの並び替え順序を
設定します。
このメソッドで設定する内容は,クライアント定義の adb_clt_sql_order_mode オペランドに対応してい
ます。
(2) 形式
public void setHADBOrderMode(int mode) throws SQLException
(3) 引数
int mode:
ORDER BY 句を指定した SELECT 文の文字データの並び替え順序を指定します。次のどちらかの値
を指定してください。
• AdbConnection.HADB_SQL_ORDER_MODE_BYTE
文字データをバイトコード順に並び替えます。
• AdbConnection.HADB_SQL_ORDER_MODE_ISO
文字データをソートコード順(ISO/IEC14651 準拠)に並び替えます。
(4) 戻り値
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
290
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Connection オブジェクトがクローズされている場合
• トランザクションがすでに開始している場合
• 並び替え順序に次の値以外を指定した場合
・AdbConnection.HADB_SQL_ORDER_MODE_BYTE
・AdbConnection.HADB_SQL_ORDER_MODE_ISO
(6) 留意事項
• ORDER BY 句を指定した SELECT 文の文字データの並び替え順序は,次に示す優先順位に従って決
定されます。番号が小さいほど優先順位が高くなります。1 と 2 では 1 の指定が優先されます。
1. setHADBOrderMode メソッドで指定した並び替え順序
2. システムプロパティの adb_clt_sql_order_mode で指定した並び替え順序
3. DriverManager クラスの getConnection メソッドの引数 info に指定した
adb_clt_sql_order_mode プロパティの値
4. DriverManager クラスの getConnection メソッドの引数 url に指定した
adb_clt_sql_order_mode の値
5. サーバ定義の adb_sql_order_mode オペランドで指定した並び替え順序
• setHADBOrderMode メソッドで指定した,ORDER BY 句を指定した SELECT 文の文字データの並
び替え順序は,Connection オブジェクトをいったんプールしたあとに再度使用した場合,前回の並び
替え順序を引き継ぎません。setHADBOrderMode メソッドを実行していない状態と同じになります。
• このメソッドは,AdbConnection インタフェースで提供される HADB 独自のメソッドです。実行方
法については,「10.2 Wrapper インタフェース」を参照してください。
6.2.27 setHoldability(int holdability)
(1) 機能
この Connection オブジェクトを使用して生成された ResultSet オブジェクトの保持機能を設定します。
(2) 形式
public synchronized void setHoldability(int holdability) throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
291
(3) 引数
int holdability:
この引数を指定しても無視されます。常に ResultSet.HOLD_CURSORS_OVER_COMMIT が指定さ
れたと見なします。
(4) 戻り値
なし。
(5) 発生する例外
Connection オブジェクトがクローズされている場合,SQLException が投入されます。
6.2.28 setReadOnly(boolean readOnly)
(1) 機能
この Connection オブジェクトを読み取り専用モードに設定します。トランザクションアクセスモードを
設定します。
(2) 形式
public synchronized void setReadOnly(boolean readOnly) throws SQLException
(3) 引数
boolean readOnly:
読み取り専用モードにする場合は true を,そうでない場合は false を指定します。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Connection オブジェクトがクローズされている場合
• トランザクションがすでに開始している場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
292
• 当該 Connection オブジェクトで,保持機能に HOLD_CURSORS_OVER_COMMIT を指定して作
成した ResultSet オブジェクトがクローズされていない場合
(6) 留意事項
• トランザクションアクセスモードは,次に示す優先順位に従って決定されます。番号が小さいほど優先
順位が高くなります。1 と 2 では 1 の指定が優先されます。
1. setReadOnly メソッドで指定したトランザクションアクセスモード
2. システムプロパティの adb_clt_trn_access_mode で指定したトランザクションアクセスモード
3. DriverManager クラスの getConnection メソッドの引数 info に指定した
adb_clt_trn_access_mode プロパティの値
4. DriverManager クラスの getConnection メソッドの引数 url に指定した
adb_clt_trn_access_mode の値
• setReadOnly メソッドで指定したトランザクションアクセスモードは,Connection オブジェクトを
いったんプールしたあとに再使用した場合,前回のトランザクションアクセスモードを引き継ぎませ
ん。setReadOnly メソッドを実行しないときと同じ状態になります。
6.2.29 setTransactionIsolation(int level)
(1) 機能
この Connection オブジェクトのトランザクション隔離性水準を設定します。
(2) 形式
public void setTransactionIsolation(int level) throws SQLException
(3) 引数
int level:
適用するトランザクション隔離性水準を指定します。次に示すどちらかの値を指定します。
• Connection.TRANSACTION_READ_COMMITTED
トランザクション隔離性水準に READ COMMITTED を適用する場合に指定します。
• Connection.TRANSACTION_REPEATABLE_READ
トランザクション隔離性水準に REPEATABLE READ を適用する場合に指定します。
(4) 戻り値
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
293
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Connection オブジェクトがクローズされている場合
• トランザクションがすでに開始している場合
• この Connection オブジェクトで,保持機能に HOLD_CURSORS_OVER_COMMIT を指定して作
成した ResultSet オブジェクトがクローズされていない場合
• トランザクション隔離性水準に次の値以外を指定した場合
• Connection.TRANSACTION_READ_COMMITTED
• Connection.TRANSACTION_REPEATABLE_READ
(6) 留意事項
• トランザクション隔離性水準は,次に示す優先順位に従って決定されます。番号が小さいほど優先順位
が高くなります。1 と 2 では 1 の指定が優先されます。
1. setTransactionIsolation メソッドで指定したトランザクション隔離性水準
2. システムプロパティの adb_clt_trn_iso_lv で指定したトランザクション隔離性水準
3. DriverManager クラスの getConnection メソッドの引数 info に指定した adb_clt_trn_iso_lv プ
ロパティの値
4. DriverManager クラスの getConnection メソッドの引数 url に指定した adb_clt_trn_iso_lv の値
5. サーバ定義の adb_sys_trn_iso_lv オペランドで指定したトランザクション隔離性水準
• setTransactionIsolation メソッドで指定したトランザクション隔離性水準は,Connection オブジェ
クトをいったんプールしたあとに再度使用した場合,前回のトランザクション隔離性水準を引き継ぎま
せん。setTransactionIsolation メソッドを実行していない状態と同じになります。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
294
6.3 Statement インタフェース
ここでは,Statement インタフェースで提供されているメソッドについて説明します。
6.3.1 Statement インタフェースのメソッド一覧
(1) Statement インタフェースの主な機能
Statement インタフェースでは,主に次の機能が提供されています。
• SQL 文の実行
• 検索結果としての結果セット(ResultSet オブジェクト)の生成
• 更新結果としての更新行数の返却
• 最大検索行数の設定
• 検索制限時間の設定
(2) HADB でサポートしている Statement インタフェースのメソッド
HADB でサポートしている Statement インタフェースのメソッドの一覧を次の表に示します。
表 6‒7 Statement インタフェースのメソッド一覧
項番
Statement インタフェースのメソッド
機能
1
addBatch(String sql)
Statement オブジェクトのバッチに SQL 文を登録します。
2
cancel()
該当するオブジェクト,および該当するオブジェクトと同一接続のオ
ブジェクトが実行している SQL の処理を取り消します。
3
clearBatch()
Statement オブジェクトのバッチに登録されている SQL 文をすべてク
リアします。
4
clearWarnings()
この Statement オブジェクトに関して報告されたすべての警告をクリ
アします。
5
close()
Statement オブジェクト,およびこの Statement オブジェクトから生
成された ResultSet オブジェクトのクローズを行います。
6
execute(String sql)
SQL 文を実行します。
7
executeBatch()
バッチに登録された SQL 文を実行し,更新行数の配列を返却します。
8
executeQuery(String sql)
検索系 SQL を実行し,検索結果を格納した ResultSet オブジェクトを
返却します。
9
executeUpdate(String sql)
SQL 文(検索系 SQL 以外の SQL 文)を実行し,更新行数を返却しま
す。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
295
項番
Statement インタフェースのメソッド
機能
10
getConnection()
Statement オブジェクトを生成した Connection オブジェクトを返却
します。
11
getFetchDirection()
この Statement オブジェクトから生成される結果集合のデフォルトの
フェッチ方向を取得します。
12
getFetchSize()
Statement オブジェクトから生成される ResultSet オブジェクトの,
デフォルトのフェッチサイズ(HADB サーバから HADB クライアン
トに検索結果を一括転送する行数)を取得します。
13
getMaxFieldSize()
この Statement オブジェクトによって生成される ResultSet オブジェ
クトの,CHAR および VARCHAR の列の最大バイト数を取得します。
14
getMaxRows()
この Statement オブジェクトによって生成される ResultSet オブジェ
クトの最大格納行数を取得します。
15
getMoreResults()
次の結果集合に移動します。
16
getQueryTimeout()
SQL 処理のタイムアウト時間(HADB クライアントと HADB サーバ
間の通信の最大待ち時間)を取得します。
17
getResultSet()
ResultSet オブジェクトとして,検索結果を取得します。
18
getResultSetConcurrency()
この Statement オブジェクトから生成される ResultSet オブジェクト
の並行処理モードを取得します。
19
getResultSetHoldability()
この Statement オブジェクトから生成される ResultSet オブジェクト
の保持機能を取得します。
20
getResultSetType()
この Statement オブジェクトから生成される ResultSet オブジェクト
の,結果セットタイプを取得します。
21
getUpdateCount()
更新行数を返します。
22
getWarnings()
この Statement オブジェクトに関する呼び出しによって報告される,
最初の警告を取得します。
23
isClosed()
この Statement オブジェクトがクローズされているかどうかを示す値
を取得します。
24
isPoolable()
Statement オブジェクトがプールできるかどうかを示す値を取得します。
25
setCursorName(String name)
後続の Statement オブジェクトの execute メソッドによって使用され
る SQL カーソル名を設定します。
26
setEscapeProcessing(boolean enable)
この Statement オブジェクトによるエスケープ構文の解析を有効にす
るかどうかを設定します。
27
setFetchDirection(int direction)
この Statement オブジェクトから生成される結果集合のフェッチ方向
を設定します。
28
setFetchSize(int rows)
この Statement オブジェクトから生成される ResultSet オブジェクト
の,デフォルトのフェッチサイズ(HADB サーバから HADB クライ
アントに検索結果を一括転送する行数)を設定します。
29
setMaxFieldSize(int max)
この Statement オブジェクトによって生成される ResultSet オブジェ
クトの,CHAR および VARCHAR の列の最大バイト数を設定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
296
項番
Statement インタフェースのメソッド
機能
30
setMaxRows(int max)
この Statement オブジェクトによって生成される ResultSet オブジェ
クトの最大格納行数を設定します。
31
setQueryTimeout(int seconds)
SQL 処理のタイムアウト時間(HADB クライアントと HADB サーバ
間の通信の最大待ち時間)を設定します。
注
この表に記載されていないメソッドは,HADB ではサポートしていません。サポートしていないメソッ
ドを実行すると,SQLException が投入されることがあります。
(3) 必要なパッケージ名称とクラス名称
Statement インタフェースを使用する場合に必要なパッケージ名称とクラス名称を次に示します。
• パッケージ名称:com.hitachi.hadb.jdbc
• クラス名称:AdbStatement
6.3.2 addBatch(String sql)
(1) 機能
Statement オブジェクトのバッチに SQL 文を登録します。最大 2,147,483,647 個の SQL 文を登録でき
ます。
(2) 形式
public synchronized void addBatch(String sql) throws SQLException
(3) 引数
String sql:
登録する SQL 文を指定します。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
297
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
• 上限値の 2,147,483,647 個を超える SQL 文を登録しようとした場合
• SQL 文に null または長さ 0 の文字列を指定している場合
• 指定された SQL 文の長さが,16,000,000 文字を超えている場合
6.3.3 cancel()
(1) 機能
該当するオブジェクト,および該当するオブジェクトと同一接続のオブジェクトが実行している SQL の処
理を取り消します。
このメソッドを使用して,実行中の SQL に非同期キャンセルを実行できます。
(2) 形式
public void cancel() throws SQLException
(3) 引数
なし。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
(6) 留意事項
• このメソッドは,該当する Statement オブジェクトが SQL の実行中でなくても,同一接続オブジェク
トに対して,ほかのオブジェクトが SQL を実行している場合は,非同期キャンセルを行います。
• 該当する Statement オブジェクトが SQL の実行中ではなく,かつ同一接続オブジェクトに対してほか
のオブジェクトが SQL を実行していない場合,このメソッドはキャンセルを実行しません。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
298
• SQL の非同期キャンセルに成功した場合,トランザクションがロールバックされます。
6.3.4 clearBatch()
(1) 機能
Statement オブジェクトのバッチに登録されている SQL 文をすべてクリアします。
(2) 形式
public synchronized void clearBatch() throws SQLException
(3) 引数
なし。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
6.3.5 clearWarnings()
(1) 機能
この Statement オブジェクトに関して報告されたすべての警告をクリアします。
(2) 形式
public synchronized void clearWarnings() throws SQLException
(3) 引数
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
299
(4) 戻り値
なし。
(5) 発生する例外
なし。
6.3.6 close()
(1) 機能
Statement オブジェクト,およびこの Statement オブジェクトから生成された ResultSet オブジェクトの
クローズを行います。
(2) 形式
public synchronized void close() throws SQLException
(3) 引数
なし。
(4) 戻り値
なし。
(5) 発生する例外
データベースのアクセスエラーが発生した場合,SQLException が投入されます。
6.3.7 execute(String sql)
(1) 機能
SQL 文を実行します。ResultSet オブジェクトや更新行数を getResultSet メソッドおよび
getUpdateCount メソッドで取得できます。
実行した SQL 文の種類と getResultSet メソッドおよび getUpdateCount メソッドの戻り値の関係を次
の表に示します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
300
表 6‒8 実行した SQL 文の種類と getResultSet メソッドおよび getUpdateCount メソッドの
戻り値の関係
実行した SQL 文の種類
getResultSet メソッドの戻り値
getUpdateCount メソッドの戻り値
検索系 SQL の場合
実行結果の ResultSet オブジェクト
-1
検索系 SQL 以外の SQL の場合
null
0 以上の値
SQL の実行がエラーになった場合
null
-1
参考
検索系 SQL とは SELECT 文のことです。また,検索系 SQL 以外の SQL とは,UPDATE 文など
の更新系 SQL のほかに,CREATE TABLE などの定義系 SQL も含んでいます。
更新系 SQL とは,INSERT 文,UPDATE 文,DELETE 文,PURGE CHUNK 文,および
TRUNCATE TABLE 文のことです。
(2) 形式
public synchronized boolean execute(String sql) throws SQLException
(3) 引数
String sql:
実行する SQL 文を指定します。
(4) 戻り値
実行した SQL 文が検索系 SQL の場合は true が,そうでない場合は false が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
• sql に null または長さ 0 の文字列を指定した場合
• データベースのアクセスエラーが発生した場合
• 指定された SQL 文の長さが,16,000,000 文字を超えている場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
301
6.3.8 executeBatch()
(1) 機能
バッチに登録された SQL 文を実行し,更新行数の配列を返却します。
バッチに登録されているすべての SQL 文を実行したあと,バッチに登録されている SQL 文をすべてクリ
アします。途中でエラーが発生した場合でも,バッチに登録されている SQL 文はすべてクリアされます。
(2) 形式
public synchronized int[] executeBatch() throws SQLException
(3) 引数
なし。
(4) 戻り値
実行した SQL 文ごとの更新行数を配列にして返却します。配列は,バッチに登録された SQL 文の順序に
なります。バッチに SQL 文が 1 つも登録されていない場合,またはバッチの 1 つ目の SQL 文がエラー
だった場合,要素数 0 の配列が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
次に示す場合は,例外 BatchUpdateException(SQLException のサブクラス)が投入されます。
• 検索系 SQL がバッチで実行された場合
• データベースのアクセスエラーが発生した場合
6.3.9 executeQuery(String sql)
(1) 機能
検索系 SQL を実行し,検索結果を格納した ResultSet オブジェクトを返却します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
302
(2) 形式
public synchronized ResultSet executeQuery(String sql) throws SQLException
(3) 引数
String sql:
実行する SQL 文(検索系 SQL)を指定します。
(4) 戻り値
検索結果を格納した ResultSet オブジェクトが返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
• 検索系 SQL 以外の SQL 文(INSERT 文など)を実行した場合
• sql に null または長さ 0 の文字列を指定した場合
• データベースのアクセスエラーが発生した場合
• 指定された SQL 文の長さが,16,000,000 文字を超えている場合
6.3.10 executeUpdate(String sql)
(1) 機能
SQL 文(検索系 SQL 以外の SQL 文)を実行し,更新行数を返却します。
(2) 形式
public synchronized int executeUpdate(String sql) throws SQLException
(3) 引数
String sql:
実行する SQL 文(検索系 SQL 以外の SQL 文)を指定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
303
(4) 戻り値
INSERT 文,UPDATE 文,および DELETE 文を実行した場合は,更新行数が返却されます。これら以外
の SQL 文を実行した場合は,0 が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
• 検索系 SQL(SELECT 文)を実行した場合
• sql に null または長さ 0 の文字列を指定した場合
• データベースのアクセスエラーが発生した場合
• 指定された SQL 文の長さが,16,000,000 文字を超えている場合
6.3.11 getConnection()
(1) 機能
Statement オブジェクトを生成した Connection オブジェクトを返却します。
(2) 形式
public synchronized Connection getConnection() throws SQLException
(3) 引数
なし。
(4) 戻り値
Connection オブジェクトが返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
304
6.3.12 getFetchDirection()
(1) 機能
この Statement オブジェクトから生成される結果集合のデフォルトのフェッチ方向を取得します。
(2) 形式
public synchronized int getFetchDirection() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に ResultSet.FETCH_FORWARD が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
6.3.13 getFetchSize()
(1) 機能
Statement オブジェクトから生成される ResultSet オブジェクトの,デフォルトのフェッチサイズ(HADB
サーバから HADB クライアントに検索結果を一括転送する行数)を取得します。
(2) 形式
public synchronized int getFetchSize() throws SQLException
(3) 引数
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
305
(4) 戻り値
この Statement オブジェクトから生成される ResultSet オブジェクトの,デフォルトのフェッチサイズ
(HADB サーバから HADB クライアントに検索結果を一括転送する行数)が返却されます。
setFetchSize メソッドで 0 を設定した場合,フェッチサイズにはシステムプロパティ,ユーザプロパ
ティ,または接続用の URL のプロパティの adb_clt_fetch_size の値が適用されますが,戻り値には 0 が
返却されます。フェッチサイズと戻り値の関係を次の表に示します。
表 6‒9 フェッチサイズと戻り値の関係
setFetchSize メソッドの設定値(m)
戻り値
0
0
1≦m≦65,535
m
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
6.3.14 getMaxFieldSize()
(1) 機能
この Statement オブジェクトによって生成される ResultSet オブジェクトの,CHAR および VARCHAR
の列の最大バイト数を取得します。最大バイト数を超えた分のデータは切り捨てられます。
(2) 形式
public synchronized int getMaxFieldSize() throws SQLException
(3) 引数
なし。
(4) 戻り値
CHAR および VARCHAR の列の最大バイト数が返却されます。setMaxFieldSize メソッドで設定した値
が返却されます。0 が返却された場合,最大バイト数の設定がないことを意味します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
306
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
6.3.15 getMaxRows()
(1) 機能
この Statement オブジェクトによって生成される ResultSet オブジェクトの最大格納行数を取得します。
最大格納行数を超えた場合,その行は ResultSet オブジェクトに格納されません。また,格納されなかっ
たことは通知されません。
(2) 形式
public synchronized int getMaxRows() throws SQLException
(3) 引数
なし。
(4) 戻り値
この Statement オブジェクトによって生成される,ResultSet オブジェクトの最大格納行数が返却されま
す。setMaxRows メソッドで設定した値が返却されます。0 が返却された場合,最大格納行数の設定がな
いことを意味します。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
6.3.16 getMoreResults()
(1) 機能
次の結果集合に移動します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
307
(2) 形式
public synchronized boolean getMoreResults() throws SQLException
(3) 引数
なし。
(4) 戻り値
次の結果集合が存在する場合は true が,そうでない場合は false が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
6.3.17 getQueryTimeout()
(1) 機能
SQL 処理のタイムアウト時間(HADB クライアントと HADB サーバ間の通信の最大待ち時間)を取得し
ます。
(2) 形式
public synchronized int getQueryTimeout() throws SQLException
(3) 引数
なし。
(4) 戻り値
setQueryTimeout メソッドで設定した SQL 処理のタイムアウト時間(単位:秒)が返却されます。
setQueryTimeout メソッドを実行していない場合は,0 が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
308
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
6.3.18 getResultSet()
(1) 機能
ResultSet オブジェクトとして,検索結果を取得します。
(2) 形式
public synchronized ResultSet getResultSet() throws SQLException
(3) 引数
なし。
(4) 戻り値
Statement オブジェクトが保持している ResultSet オブジェクトが返却されます。ResultSet オブジェク
ト内に検索結果がない場合は,null が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
6.3.19 getResultSetConcurrency()
(1) 機能
この Statement オブジェクトから生成される ResultSet オブジェクトの並行処理モードを取得します。
(2) 形式
public synchronized int getResultSetConcurrency() throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
309
(3) 引数
なし。
(4) 戻り値
常に ResultSet.CONCUR_READ_ONLY が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
6.3.20 getResultSetHoldability()
(1) 機能
この Statement オブジェクトから生成される ResultSet オブジェクトの保持機能を取得します。
(2) 形式
public synchronized int getResultSetHoldability() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に ResultSet.HOLD_CURSORS_OVER_COMMIT が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
310
6.3.21 getResultSetType()
(1) 機能
この Statement オブジェクトから生成される ResultSet オブジェクトの,結果セットタイプを取得します。
(2) 形式
public synchronized int getResultSetType() throws SQLException
(3) 引数
なし。
(4) 戻り値
ResultSet.TYPE_FORWARD_ONLY または ResultSet.TYPE_SCROLL_INSENSITIVE が返却されま
す。
ResultSet.TYPE_FORWARD_ONLY:
カーソルが順方向だけ移動できます。
ResultSet.TYPE_SCROLL_INSENSITIVE:
カーソルがスクロールできますが,値の変更は反映されません。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
6.3.22 getUpdateCount()
(1) 機能
更新行数を返します。
(2) 形式
public synchronized int getUpdateCount() throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
311
(3) 引数
なし。
(4) 戻り値
戻り値の詳細を次の表に示します。
表 6‒10 getUpdateCount メソッドの戻り値の詳細
Statement オブジェクトのメソッドの実行条件
getUpdateCo
unt の戻り値
executeXXX メソッドを実行していない場合
-1
executeXXX メソッド
を実行している場合
最後に実行した executeXXX メソッドのあとに,getMoreResults メソッドを実
行した場合
-1
最後に実行した executeXXX メソッドでエラーが発生した場合
-1
最後に executeBatch メソッドを実行した場合
-1
最後に executeBatch メ
ソッド以外の
executeXXX メソッドを
実行した場合
最後に実行した SQL 文が検索系 SQL の場合
-1
最後に実行した SQL が検
索系 SQL 以外の SQL 文の
場合
INSERT,UPDATE,
DELETE
更新行数
そのほか
0
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
6.3.23 getWarnings()
(1) 機能
この Statement オブジェクトに関する呼び出しによって報告される,最初の警告を取得します。2 つ以上
の警告がある場合,後続の警告は,最初の警告にチェーンされ,直前に取得された警告の SQLWarning
オブジェクトの getNextWarning メソッドを呼び出すことによって取得できます。
(2) 形式
public synchronized SQLWarning getWarnings() throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
312
(3) 引数
なし。
(4) 戻り値
最初の SQLWarning オブジェクトが返却されます。SQLWarning オブジェクトがない場合は,null が返
却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
6.3.24 isClosed()
(1) 機能
この Statement オブジェクトがクローズされているかどうかを示す値を取得します。
(2) 形式
public synchronized boolean isClosed() throws SQLException
(3) 引数
なし。
(4) 戻り値
Statement オブジェクトがクローズされている場合は true が返却されます。Statement オブジェクトが
クローズされていない場合は false が返却されます。
(5) 発生する例外
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
313
6.3.25 isPoolable()
(1) 機能
Statement オブジェクトがプールできるかどうかを示す値を取得します。
(2) 形式
public synchronized boolean isPoolable() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
6.3.26 setCursorName(String name)
(1) 機能
後続の Statement オブジェクトの execute メソッドによって使用される SQL カーソル名を設定します。
(2) 形式
public synchronized void setCursorName(String name) throws SQLException
(3) 引数
String name:
SQL カーソル名を指定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
314
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
6.3.27 setEscapeProcessing(boolean enable)
(1) 機能
この Statement オブジェクトによるエスケープ構文の解析を有効にするかどうかを設定します。
(2) 形式
public synchronized void setEscapeProcessing(boolean enable) throws SQLException
(3) 引数
boolean enable:
エスケープ構文の解析を有効にする場合は true を,無効にする場合は false を指定します。
このメソッドを実行しない場合,true が仮定されます。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
315
6.3.28 setFetchDirection(int direction)
(1) 機能
この Statement オブジェクトから生成される結果集合のフェッチ方向を指定します。
(2) 形式
public synchronized void setFetchDirection(int direction) throws SQLException
(3) 引数
int direction:
フェッチ方向を指定します。ResultSet.FETCH_FORWARD だけ指定できます。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
• direction に ResultSet.FETCH_FORWARD 以外が指定された場合
6.3.29 setFetchSize(int rows)
(1) 機能
この Statement オブジェクトから生成される ResultSet オブジェクトの,デフォルトのフェッチサイズ
(HADB サーバから HADB クライアントに検索結果を一括転送する行数)を設定します。
(2) 形式
public synchronized void setFetchSize(int rows) throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
316
(3) 引数
int rows:
一括転送する行数を 0〜65,535 の範囲で指定します。
1 以上の値を指定した場合,指定値に従って複数の行データを HADB サーバから HADB クライアント
に一括転送します。
0 を指定した場合,またはこのメソッドを実行しない場合は,システムプロパティ,ユーザプロパ
ティ,または接続用の URL のプロパティの adb_clt_fetch_size の値が適用されます。
setFetchSize メソッドの設定値とプロパティの adb_clt_fetch_size の設定値の関係を次の表に示します。
表 6‒11 setFetchSize メソッドの設定値とプロパティの adb_clt_fetch_size の設定値の
関係
setFetchSize メソッドの設定値
(m)
0
1≦m≦65,535
プロパティの adb_clt_fetch_size の設定値
(n)
一括転送される行数
1≦n≦65,535
n
指定なし
1
1≦n≦65,535
m
指定なし
m
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
• rows に 0〜65,535 以外の値を指定した場合
• rows に指定した値が,最大格納行数(setMaxRows メソッドの設定値)よりも大きい場合
(6) 留意事項
HADB サーバに対して一度の通信で要求する行数は,次の表に示す優先順位に従って決定されます。
表 6‒12 HADB サーバに対して一度の通信で要求する行数の優先順位
優先順位
HADB サーバに対して一度の通信で要求する行数
1
ResultSet クラスの setFetchSize メソッドの引数で指定した値
2
Statement クラスの setFetchSize メソッドの引数で指定した値
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
317
優先順位
HADB サーバに対して一度の通信で要求する行数
3
システムプロパティ adb_clt_fetch_size で設定した値
4
DriverManager クラスの getConnection メソッドの引数 info に指定した adb_clt_fetch_size プロ
パティの値
5
DriverManager クラスの getConnection メソッドの引数 url に指定した adb_clt_fetch_size の値
なお,検索結果の行数が上記の表に示す転送行数より多い場合,検索が終了するまで(または AP からの
検索要求がなくなるまで),HADB サーバに対して転送を要求します。
6.3.30 setMaxFieldSize(int max)
(1) 機能
この Statement オブジェクトによって生成される ResultSet オブジェクトの,CHAR および VARCHAR
の列の最大バイト数を設定します。最大バイト数を超えた分のデータは切り捨てられます。
生成済みの ResultSet オブジェクトに対しては,このメソッドの設定値は適用されません。
(2) 形式
public synchronized void setMaxFieldSize(int max) throws SQLException
(3) 引数
int max:
CHAR および VARCHAR の列に適用する最大バイト数を指定します。
0 を指定した場合,最大バイト数の設定をしません。
このメソッドを実行しない場合,0(最大バイト数を設定しない)が仮定されます。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
• max に 0 未満の値を指定した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
318
6.3.31 setMaxRows(int max)
(1) 機能
この Statement オブジェクトによって生成される ResultSet オブジェクトの最大格納行数を設定します。
最大格納行数を超えた場合,その行は ResultSet オブジェクトに格納されません。また,格納されなかっ
たことは通知されません。
生成済みの ResultSet オブジェクトに対しては,このメソッドの設定値は適用されません。
(2) 形式
public synchronized void setMaxRows(int max) throws SQLException
(3) 引数
int max:
最大格納行数を指定します。
0 を指定した場合,最大格納行数を設定しません。ただし,結果セットタイプが
ResultSet.TYPE_SCROLL_INSENSITIVE の場合は,0 を指定しても Integer.MAX_VALUE が最大
格納行数となります。
このメソッドを実行しない場合,0(最大格納行数を設定しない)が仮定されます。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
• max に 0 未満の値を指定した場合
6.3.32 setQueryTimeout(int seconds)
(1) 機能
SQL 処理のタイムアウト時間(HADB クライアントと HADB サーバ間の通信の最大待ち時間)を設定し
ます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
319
(2) 形式
public synchronized void setQueryTimeout(int seconds) throws SQLException
(3) 引数
int seconds:
SQL 処理のタイムアウト時間(単位:秒)を 0〜65,535 の範囲で指定します。
0 を指定した場合,またはこのメソッドを実行しない場合は,システムプロパティ,ユーザプロパ
ティ,または接続用の URL のプロパティの adb_clt_rpc_sql_wait_time の設定値が有効になります。
SQL 処理時間がタイムアウト時間を超えた場合,SQL はキャンセルされ,トランザクションがロール
バックされます。そのあと,HADB サーバから切り離されます。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• Statement オブジェクトがクローズされている場合
• Statement オブジェクトを生成した Connection オブジェクトがクローズされている場合
• seconds に 0 未満の値を指定した場合
(6) 留意事項
seconds に 65,536(プロパティの adb_clt_rpc_sql_wait_time の最大値)以上の値を指定した場合,こ
のメソッドの指定値は無視されます。
6.3.33 Statement インタフェースに関する注意事項
(1) executeXXX メソッド実行時の注意事項
該当する Statement オブジェクトが生成した ResultSet オブジェクトがクローズされていない状態で
executeXXX メソッドを実行すると,以前生成した ResultSet オブジェクトをクローズします。このた
め,executeXXX メソッド実行後,以前に生成した ResultSet オブジェクトを使用して検索結果を取得し
ようとすると,SQLException が投入されます。SQLException が発生する例を次に示します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
320
■SQLException が発生する例
Statement st =
ResultSet rs1 =
ResultSet rs2 =
rs1.next(); //
rs2.next();
con.createStatement();
st.executeQuery("select * from tb1");
st.executeQuery("select * from tb2");
SQLExceptionを投入する。
(2) Statement オブジェクトのクローズ
Statement オブジェクトを使用したあとは,必ず明示的に close メソッドで Statement オブジェクトをク
ローズしてください。Statement オブジェクトを明示的にクローズすると,HADB 内の対応する文ハンド
ルが解放されます。Statement オブジェクトをクローズしないと,文ハンドルが不足することがあります。
ただし,文ハンドルは COMMIT または ROLLBACK でトランザクションを決着した場合も解放されま
す。したがって,トランザクションをある程度の間隔で決着させると,文ハンドルの不足を回避できます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
321
6.4 PreparedStatement インタフェース
ここでは,PreparedStatement インタフェースで提供されているメソッドについて説明します。
6.4.1 PreparedStatement インタフェースのメソッド一覧
(1) PreparedStatement インタフェースの主な機能
PreparedStatement インタフェースでは,主に次の機能が提供されています。
• ?パラメタ指定の SQL の実行
• ?パラメタの設定
• 検索結果としての ResultSet オブジェクトの生成,返却
• 更新結果としての更新行数の返却
PreparedStatement インタフェースは Statement インタフェースのサブインタフェースであるため,
Statement インタフェースの機能をすべて継承します。
(2) HADB でサポートしている PreparedStatement インタフェースのメ
ソッド
HADB でサポートしている PreparedStatement インタフェースのメソッドの一覧を次の表に示します。
表 6‒13 PreparedStatement インタフェースのメソッド一覧
項番
PreparedStatement インタフェースのメソッド
機能
1
addBatch()
PreparedStatement オブジェクトのバッチに,現在のパラメ
タセットを追加します。
2
clearParameters()
現在設定されているパラメタセットの値をすべてクリアします。
3
execute()
前処理済みの SQL 文を実行します。
4
executeQuery()
前処理済みの検索系 SQL を実行し,実行結果を格納した
ResultSet オブジェクトを返却します。
5
executeUpdate()
前処理済みの SQL 文(検索系 SQL 以外の SQL 文)を実行
し,更新行数を返却します。
6
getMetaData()
この PreparedStatement が実行されるときに返される
ResultSet オブジェクトの列に関する情報を格納する
ResultSetMetaData オブジェクトを返却します。
7
getParameterMetaData()
この PreparedStatement オブジェクト内のパラメタのメタ情
報を表す ParameterMetaData オブジェクトを返却します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
322
項番
PreparedStatement インタフェースのメソッド
機能
8
setAsciiStream(int parameterIndex,
InputStream x, int length)
指定した InputStream オブジェクトの持つ値を,?パラメタ
値に設定します。
9
setBigDecimal(int parameterIndex, BigDecimal
x)
指定した BigDecimal オブジェクトを?パラメタ値に設定し
ます。
10
setBinaryStream(int parameterIndex,
InputStream x, int length)
指定した InputStream オブジェクトが持つ値を?パラメタ値
に設定します。
11
setBoolean(int parameterIndex, boolean x)
指定した boolean 値を?パラメタ値に設定します。
12
setByte(int parameterIndex, byte x)
指定した byte 値を?パラメタ値に設定します。
13
setBytes(int parameterIndex, byte[] x)
指定した byte 配列を?パラメタ値に設定します。
14
setCharacterStream(int parameterIndex,
Reader reader, int length)
指定した Reader オブジェクトを?パラメタ値に設定します。
15
setDate(int parameterIndex, Date x)
指定した java.sql.Date オブジェクトを?パラメタ値に設定し
ます。
16
setDate(int parameterIndex, Date x, Calendar
cal)
ローカルタイムで指定した java.sql.Date オブジェクトを,指
定したカレンダーのタイムゾーンの時間に変換し,?パラメタ
値に設定します。
17
setDouble(int parameterIndex, double x)
指定した double 値を?パラメタ値に設定します。
18
setFloat(int parameterIndex, float x)
指定した float 値を?パラメタ値に設定します。
19
setInt(int parameterIndex, int x)
指定した int 値を?パラメタ値に設定します。
20
setLong(int parameterIndex, long x)
指定した long 値を?パラメタ値に設定します。
21
setNull(int parameterIndex,int sqlType)
指定した?パラメタにナル値を設定します。
22
setObject(int parameterIndex, Object x)
指定したオブジェクトが持つ値を?パラメタ値に設定します。
23
setObject(int parameterIndex, Object x, int
targetSqlType)
24
setObject(int parameterIndex, Object x, int
targetSqlType, int scale)
25
setShort(int parameterIndex, short x)
指定した short 値を?パラメタ値に設定します。
26
setString(int parameterIndex, String x)
指定した String オブジェクトを?パラメタ値に設定します。
27
setTime(int parameterIndex, Time x)
指定した java.sql.Time オブジェクトを?パラメタ値に設定し
ます。
28
setTime(int parameterIndex, Time x, Calendar
cal)
ローカルタイムで指定した java.sql.Time オブジェクトを,指
定したカレンダーのタイムゾーンの時間に変換し,?パラメタ
値に設定します。
29
setTimestamp(int parameterIndex, Timestamp
x)
指定した java.sql.Timestamp オブジェクトを?パラメタ値に
設定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
323
項番
30
PreparedStatement インタフェースのメソッド
機能
setTimestamp(int parameterIndex, Timestamp
x, Calendar cal)
ローカルタイムで指定した java.sql.Timestamp オブジェクト
を,指定したカレンダーのタイムゾーンの時間に変換し,?パ
ラメタ値に設定します。
注
この表に記載されていないメソッドは,HADB ではサポートしていません。サポートしていないメソッ
ドを実行すると,SQLException が投入されます。
(3) 必要なパッケージ名称とクラス名称
PreparedStatement インタフェースを使用する場合に必要なパッケージ名称とクラス名称を次に示します。
• パッケージ名称:com.hitachi.hadb.jdbc
• クラス名称:AdbPreparedStatement
6.4.2 addBatch()
(1) 機能
PreparedStatement オブジェクトのバッチに,現在のパラメタセットを追加します。最大 2,147,483,647
個パラメタセットを登録できます。
(2) 形式
public synchronized void addBatch() throws SQLException
(3) 引数
なし。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
324
• すべての?パラメタに値がセットされていない場合
• バッチの登録数が 2,147,483,647 個を超えた場合
6.4.3 clearParameters()
(1) 機能
現在設定されているパラメタセットの値をすべてクリアします。
(2) 形式
public synchronized void clearParameters() throws SQLException
(3) 引数
なし。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
6.4.4 execute()
(1) 機能
前処理済みの SQL 文を実行します。
実行結果の ResultSet オブジェクトや更新行数を,PreparedStatement オブジェクトの getResultSet メ
ソッド,および PreparedStatement オブジェクトの getUpdateCount メソッドで取得できます。
execute メソッド実行後の getResultSet メソッドおよび getUpdateCount メソッドの戻り値について
は,「表 6-8 実行した SQL 文の種類と getResultSet メソッドおよび getUpdateCount メソッドの戻り
値の関係」を参照してください。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
325
(2) 形式
public synchronized boolean execute() throws SQLException
(3) 引数
なし。
(4) 戻り値
実行した SQL が検索系 SQL の場合は true が,そうでない場合は false が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• 値を設定していない?パラメタがある場合
• データベースのアクセスエラーが発生した場合
6.4.5 executeQuery()
(1) 機能
前処理済みの検索系 SQL を実行し,実行結果を格納した ResultSet オブジェクトを返却します。
(2) 形式
public synchronized ResultSet executeQuery() throws SQLException
(3) 引数
なし。
(4) 戻り値
実行結果を格納した ResultSet オブジェクトが返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
326
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• 検索系 SQL 以外の SQL 文(INSERT 文など)を実行した場合
• 値を設定していない?パラメタがある場合
• データベースのアクセスエラーが発生した場合
6.4.6 executeUpdate()
(1) 機能
前処理済みの SQL 文(検索系 SQL 以外の SQL 文)を実行し,更新行数を返却します。
(2) 形式
public synchronized int executeUpdate() throws SQLException
(3) 引数
なし。
(4) 戻り値
INSERT 文,UPDATE 文,および DELETE 文を実行した場合は,更新行数が返却されます。これら以外
の SQL 文を実行した場合は,0 が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• このオブジェクトを生成した Connection オブジェクトがクローズされている場合
• 検索系 SQL を実行した場合
• 値を設定していない?パラメタがある場合
• データベースのアクセスエラーが発生した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
327
6.4.7 getMetaData()
(1) 機能
この PreparedStatement が実行されるときに返される ResultSet オブジェクトの列に関する情報を格納
する ResultSetMetaData オブジェクトを返却します。
(2) 形式
public synchronized ResultSetMetaData getMetaData() throws SQLException
(3) 引数
なし。
(4) 戻り値
この PreparedStatement オブジェクトのメタ情報が,ResultSetMetaData オブジェクトに格納されて返
却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
6.4.8 getParameterMetaData()
(1) 機能
この PreparedStatement オブジェクト内のパラメタのメタ情報を表す ParameterMetaData オブジェク
トを返却します。返却する ParameterMetaData は,Connection.prepareStatement()実行時点でサー
バから取得したパラメタのメタ情報となります。
(2) 形式
public synchronized ParameterMetaData getParameterMetaData() throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
328
(3) 引数
なし。
(4) 戻り値
この PreparedStatement オブジェクトのメタ情報が,ParametertMetaData オブジェクトに格納されて
返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
6.4.9 setAsciiStream(int parameterIndex, InputStream x, int length)
(1) 機能
指定した InputStream オブジェクトの持つ値を,?パラメタ値に設定します。
(2) 形式
public synchronized void setAsciiStream(int parameterIndex, InputStream x, int length)
throws SQLException
(3) 引数
int parameterIndex:
?パラメタの番号を指定します。
InputStream x:
?パラメタに設定する値を持つ java.io.InputStream オブジェクトを指定します。
int length:
設定するバイト数を指定します。
(4) 戻り値
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
329
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• length に 0 未満の値を指定した場合
• 存在しない?パラメタの番号を指定した場合
• ?パラメタの HADB のデータ型がこのメソッドでは設定できないデータ型の場合
• 指定した値が列のデータ型の範囲外,または変換できない形式の場合
(6) 留意事項
setAsciiStream メソッドの実行時,x からの入力が終わったあとでも,x に対して close メソッドは実行
されません。
6.4.10 setBigDecimal(int parameterIndex, BigDecimal x)
(1) 機能
指定した BigDecimal オブジェクトを?パラメタ値に設定します。
(2) 形式
public synchronized void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException
(3) 引数
int parameterIndex:
?パラメタの番号を指定します。
BigDecimal x:
?パラメタに設定する java.math.BigDecimal オブジェクトを指定します。
(4) 戻り値
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
330
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• 存在しない?パラメタの番号を指定した場合
• ?パラメタの HADB のデータ型がこのメソッドでは設定できないデータ型の場合
• 指定した値が列のデータ型の範囲外,または変換できない形式の場合
6.4.11 setBinaryStream(int parameterIndex, InputStream x, int
length)
(1) 機能
指定した InputStream オブジェクトが持つ値を?パラメタ値に設定します。
(2) 形式
public synchronized void setBinaryStream(int parameterIndex, InputStream x, int length)
throws SQLException
(3) 引数
int parameterIndex:
?パラメタの番号を指定します。
InputStream x:
?パラメタに設定する値を持つ java.io.InputStream オブジェクトを指定します。
int length:
設定するバイト数を指定します。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
331
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• length に 0 未満の値を指定した場合
• 存在しない?パラメタの番号を指定した場合
• ?パラメタの HADB のデータ型がこのメソッドでは設定できないデータ型の場合
• 指定した値が列のデータ型の範囲外,または変換できない形式の場合
(6) 留意事項
setBinaryStream メソッドの実行時,x からの入力が終わったあとでも,x に対して close メソッドは実
行されません。
6.4.12 setBoolean(int parameterIndex, boolean x)
(1) 機能
指定した boolean 値を?パラメタ値に設定します。
(2) 形式
public synchronized void setBoolean(int parameterIndex, boolean x) throws SQLException
(3) 引数
int parameterIndex:
?パラメタの番号を指定します。
boolean x:
?パラメタに設定する値を指定します。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
332
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• 存在しない?パラメタの番号を指定した場合
• ?パラメタの HADB のデータ型がこのメソッドでは設定できないデータ型の場合
6.4.13 setByte(int parameterIndex, byte x)
(1) 機能
指定した byte 値を?パラメタ値に設定します。
(2) 形式
public synchronized void setByte(int parameterIndex, byte x) throws SQLException
(3) 引数
int parameterIndex:
?パラメタの番号を指定します。
byte x:
?パラメタに設定する値を指定します。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• 存在しない?パラメタの番号を指定した場合
• ?パラメタの HADB のデータ型がこのメソッドでは設定できないデータ型の場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
333
6.4.14 setBytes(int parameterIndex, byte[] x)
(1) 機能
指定した byte 配列を?パラメタ値に設定します。
(2) 形式
public synchronized void setBytes(int parameterIndex, byte[] x) throws SQLException
(3) 引数
int parameterIndex:
?パラメタの番号を指定します。
byte[] x:
?パラメタに設定する値を指定します。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• 存在しない?パラメタの番号を指定した場合
• ?パラメタの HADB のデータ型がこのメソッドでは設定できないデータ型の場合
• 指定した値が列のデータ型の範囲外,または変換できない形式の場合
6.4.15 setCharacterStream(int parameterIndex, Reader reader, int
length)
(1) 機能
指定した Reader オブジェクトを?パラメタ値に設定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
334
(2) 形式
public synchronized void setCharacterStream(int parameterIndex, Reader reader, int length)
throws SQLException
(3) 引数
int parameterIndex:
?パラメタの番号を指定します。
Reader reader:
?パラメタに設定する値を持つ java.io.Reader オブジェクトを指定します。
int length:
文字数を指定します。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• length に 0 未満の値を指定した場合
• 存在しない?パラメタの番号を指定した場合
• ?パラメタの HADB のデータ型がこのメソッドでは設定できないデータ型の場合
• 指定した値が列のデータ型の範囲外,または変換できない形式の場合
• エンコードに失敗した場合
6.4.16 setDate(int parameterIndex, Date x)
(1) 機能
指定した java.sql.Date オブジェクトを?パラメタ値に設定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
335
(2) 形式
public synchronized void setDate(int parameterIndex, Date x) throws SQLException
(3) 引数
int parameterIndex:
?パラメタの番号を指定します。
Date x:
?パラメタに設定する値を持つ java.sql.Date オブジェクトを指定します。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• 存在しない?パラメタの番号を指定した場合
• ?パラメタの HADB のデータ型がこのメソッドでは設定できないデータ型の場合
• 指定した値が列のデータ型の範囲外,または変換できない形式の場合
6.4.17 setDate(int parameterIndex, Date x, Calendar cal)
(1) 機能
ローカルタイムで指定した java.sql.Date オブジェクトを,指定したカレンダーのタイムゾーンの時間に
変換し,?パラメタ値に設定します。
(2) 形式
public synchronized void setDate(int parameterIndex, Date x, Calendar cal) throws
SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
336
(3) 引数
int parameterIndex:
?パラメタの番号を指定します。
Date x:
?パラメタに設定する値を持つ java.sql.Date オブジェクトを指定します。
Calendar cal:
データベースに格納する値のタイムゾーンが設定されたカレンダーを指定します。null を指定した場
合,Java 仮想マシンのデフォルトのタイムゾーンのカレンダーが適用されます。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• 存在しない?パラメタの番号を指定した場合
• ?パラメタの HADB のデータ型がこのメソッドでは設定できないデータ型の場合
• 指定した値が列のデータ型の範囲外,または変換できない形式の場合
6.4.18 setDouble(int parameterIndex, double x)
(1) 機能
指定した double 値を?パラメタ値に設定します。
(2) 形式
public synchronized void setDouble(int parameterIndex, double x) throws SQLException
(3) 引数
int parameterIndex:
?パラメタの番号を指定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
337
double x:
?パラメタに設定する値を指定します。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• 存在しない?パラメタの番号を指定した場合
• ?パラメタの HADB のデータ型がこのメソッドでは設定できないデータ型の場合
• 指定した値が列のデータ型の範囲外,または変換できない形式の場合
6.4.19 setFloat(int parameterIndex, float x)
(1) 機能
指定した float 値を?パラメタ値に設定します。
(2) 形式
public synchronized void setFloat(int parameterIndex, float x) throws SQLException
(3) 引数
int parameterIndex:
?パラメタの番号を指定します。
float x:
?パラメタに設定する値を指定します。
(4) 戻り値
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
338
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• 存在しない?パラメタの番号を指定した場合
• ?パラメタの HADB のデータ型がこのメソッドでは設定できないデータ型の場合
• 指定した値が列のデータ型の範囲外,または変換できない形式の場合
6.4.20 setInt(int parameterIndex, int x)
(1) 機能
指定した int 値を?パラメタ値に設定します。
(2) 形式
public synchronized void setInt(int parameterIndex, int x) throws SQLException
(3) 引数
int parameterIndex:
?パラメタの番号を指定します。
int x:
?パラメタに設定する値を指定します。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• 存在しない?パラメタの番号を指定した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
339
• ?パラメタの HADB のデータ型がこのメソッドでは設定できないデータ型の場合
• 指定した値が列のデータ型の範囲外,または変換できない形式の場合
6.4.21 setLong(int parameterIndex, long x)
(1) 機能
指定した long 値を?パラメタ値に設定します。
(2) 形式
public synchronized void setLong(int parameterIndex, long x) throws SQLException
(3) 引数
int parameterIndex:
?パラメタの番号を指定します。
long x:
?パラメタに設定する値を指定します。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• 存在しない?パラメタの番号を指定した場合
• ?パラメタの HADB のデータ型がこのメソッドでは設定できないデータ型の場合
• 指定した値が列のデータ型の範囲外,または変換できない形式の場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
340
6.4.22 setNull(int parameterIndex,int sqlType)
(1) 機能
指定した?パラメタにナル値を設定します。
(2) 形式
public synchronized void setNull(int parameterIndex,int sqlType) throws SQLException
(3) 引数
int parameterIndex:
?パラメタの番号を指定します。
int sqlType:
JDBC の SQL データ型を指定します。
この引数を指定しても無視されます。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• 存在しない?パラメタの番号を指定した場合
6.4.23 setObject(int parameterIndex, Object x)
(1) 機能
指定したオブジェクトが持つ値を?パラメタ値に設定します。
(2) 形式
public synchronized void setObject(int parameterIndex, Object x) throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
341
(3) 引数
int parameterIndex:
?パラメタの番号を指定します。
Object x:
?パラメタに設定する値を持つオブジェクトを指定します。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• 存在しない?パラメタの番号を指定した場合
• ?パラメタの HADB のデータ型がこのメソッドでは設定できないデータ型の場合
• 指定した値が列のデータ型の範囲外,または変換できない形式の場合
6.4.24 setObject(int parameterIndex, Object x, int targetSqlType)
(1) 機能
指定したオブジェクトが持つ値を?パラメタ値に設定します。
(2) 形式
public synchronized void setObject(int parameterIndex, Object x, int targetSqlType) throws
SQLException
(3) 引数
int parameterIndex:
?パラメタの番号を指定します。
Object x:
?パラメタに設定する値を持つオブジェクトを指定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
342
int targetSqlType:
JDBC の SQL データ型を指定します。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• 存在しない?パラメタの番号を指定した場合
• ?パラメタの HADB のデータ型がこのメソッドでは設定できないデータ型の場合
• 指定した値が列のデータ型の範囲外,または変換できない形式の場合
• targetSqlType が次のどれかの場合
Types.ARRAY,Types.BLOB,Types.CLOB,Types.JAVA_OBJECT,Types.REF,
Types.STRUCT
6.4.25 setObject(int parameterIndex, Object x, int targetSqlType, int
scale)
(1) 機能
指定したオブジェクトが持つ値を?パラメタ値に設定します。
(2) 形式
public synchronized void setObject(int parameterIndex, Object x, int targetSqlType, int
scale) throws SQLException
(3) 引数
int parameterIndex:
?パラメタの番号を指定します。
Object x:
?パラメタに設定する値を持つオブジェクトを指定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
343
int targetSqlType:
JDBC の SQL データ型を指定します。
int scale:
位取りを指定します。ただし,指定値は無視されます。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• 存在しない?パラメタの番号を指定した場合
• ?パラメタの HADB のデータ型がこのメソッドでは設定できないデータ型の場合
• 指定した値が列のデータ型の範囲外,または変換できない形式の場合
• targetSqlType が次のどれかの場合
Types.ARRAY,Types.BLOB,Types.CLOB,Types.JAVA_OBJECT,Types.REF,
Types.STRUCT
6.4.26 setShort(int parameterIndex, short x)
(1) 機能
指定した short 値を?パラメタ値に設定します。
(2) 形式
public synchronized void setShort(int parameterIndex, short x) throws SQLException
(3) 引数
int parameterIndex:
?パラメタの番号を指定します。
short x:
?パラメタに設定する値を指定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
344
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• 存在しない?パラメタの番号を指定した場合
• ?パラメタの HADB のデータ型がこのメソッドでは設定できないデータ型の場合
• 指定した値が列のデータ型の範囲外,または変換できない形式の場合
6.4.27 setString(int parameterIndex, String x)
(1) 機能
指定した String オブジェクトを?パラメタ値に設定します。
(2) 形式
public synchronized void setString(int parameterIndex, String x) throws SQLException
(3) 引数
int parameterIndex:
?パラメタの番号を指定します。
String x:
?パラメタに設定する値を持つ String オブジェクトを指定します。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
345
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• 存在しない?パラメタの番号を指定した場合
• ?パラメタの HADB のデータ型がこのメソッドでは設定できないデータ型の場合
• 指定した値が列のデータ型の範囲外,または変換できない形式の場合
• エンコードに失敗した場合
6.4.28 setTime(int parameterIndex, Time x)
(1) 機能
指定した java.sql.Time オブジェクトを?パラメタ値に設定します。
(2) 形式
public synchronized void setTime(int parameterIndex, Time x) throws SQLException
(3) 引数
int parameterIndex:
?パラメタの番号を指定します。
Time x:
?パラメタに設定する値を持つ java.sql.Time オブジェクトを指定します。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• 存在しない?パラメタの番号を指定した場合
• ?パラメタの HADB のデータ型がこのメソッドでは設定できないデータ型の場合
• 指定した値が列のデータ型の範囲外,または変換できない形式の場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
346
6.4.29 setTime(int parameterIndex, Time x, Calendar cal)
(1) 機能
ローカルタイムで指定した java.sql.Time オブジェクトを,指定したカレンダーのタイムゾーンの時間に
変換し,?パラメタ値に設定します。
(2) 形式
public synchronized void setTime(int parameterIndex, Time x, Calendar cal) throws
SQLException
(3) 引数
int parameterIndex:
?パラメタの番号を指定します。
Time x:
?パラメタに設定する値を持つ java.sql.Time オブジェクトを指定します。
Calendar cal:
データベースに格納する値のタイムゾーンが設定されたカレンダーを指定します。null を指定した場
合,Java 仮想マシンのデフォルトのタイムゾーンのカレンダーが適用されます。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• 存在しない?パラメタの番号を指定した場合
• ?パラメタの HADB のデータ型がこのメソッドでは設定できないデータ型の場合
• 指定した値が列のデータ型の範囲外,または変換できない形式の場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
347
6.4.30 setTimestamp(int parameterIndex, Timestamp x)
(1) 機能
指定した java.sql.Timestamp オブジェクトを?パラメタ値に設定します。
(2) 形式
public synchronized void setTimestamp(int parameterIndex, Timestamp x) throws SQLException
(3) 引数
int parameterIndex:
?パラメタの番号を指定します。
Timestamp x:
?パラメタに設定する値を持つ java.sql.Timestamp オブジェクトを指定します。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• 存在しない?パラメタの番号を指定した場合
• ?パラメタの HADB のデータ型がこのメソッドでは設定できないデータ型の場合
• 指定した値が列のデータ型の範囲外,または変換できない形式の場合
6.4.31 setTimestamp(int parameterIndex, Timestamp x, Calendar
cal)
(1) 機能
ローカルタイムで指定した java.sql.Timestamp オブジェクトを,指定したカレンダーのタイムゾーンの
時間に変換し,?パラメタ値に設定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
348
(2) 形式
public synchronized void setTimestamp(int parameterIndex, Timestamp x, Calendar cal) throws
SQLException
(3) 引数
int parameterIndex:
?パラメタの番号を指定します。
Timestamp x:
?パラメタに設定する値を持つ java.sql.Timestamp オブジェクトを指定します。
Calendar cal:
データベースに格納する値のタイムゾーンが設定されたカレンダーを指定します。null を指定した場
合,Java 仮想マシンのデフォルトのタイムゾーンのカレンダーが適用されます。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• PreparedStatement オブジェクトがクローズされている場合
• この PreparedStatement オブジェクトを生成した Connection オブジェクトがクローズされている
場合
• 存在しない?パラメタの番号を指定した場合
• ?パラメタの HADB のデータ型がこのメソッドでは設定できないデータ型の場合
• 指定した値が列のデータ型の範囲外,または変換できない形式の場合
6.4.32 PreparedStatement インタフェースに関する注意事項
PreparedStatement インタフェースは Statement インタフェースのサブインタフェースであるため,
Statement インタフェースの注意事項はすべて該当します。
ここでは,それ以外の PreparedStatement インタフェース固有の注意事項について説明します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
349
(1) ?パラメタの設定
• setXXX メソッドによってマッピングできるかどうかについては,「5.6.1(3) ?パラメタ設定時のマッ
ピング」を参照してください。
• setXXX メソッドに指定した列番号が存在しない場合は,SQLException が投入されます。
• setXXX メソッドに指定した値が,対応する?パラメタのデータ型が表現できる値の範囲を超えた場
合,オーバフローが発生して SQLException が投入されます。オーバフローが発生するおそれのある
setXXX メソッドと HADB のデータ型の組み合わせについては,「5.6.3 オーバフローが発生したと
きの処理」を参照してください。
• setXXX メソッドで設定した値は,次に示すどれかの操作をするまで有効になります。
• 該当する PreparedStatement オブジェクトに対して,clearParameters メソッドを実行する
• 該当する PreparedStatement オブジェクトに対して,setXXX メソッドを実行し,かつ設定対象
の?パラメタは同じである
• 該当する PreparedStatement オブジェクトに対して,close メソッドを実行する
(2) HADB の DECIMAL 型の?パラメタに対する値指定
HADB の DECIMAL 型の?パラメタに対して setXXX メソッドで値を設定する場合,?パラメタの精度
および位取りと,値の精度および位取りが一致していないときの処理を次に示します。
• 実際の精度よりも大きいとき:SQLException が投入されます。
• 実際の精度よりも小さいとき:拡張します。
• 実際の位取りよりも大きいとき:実際の位取りで切り捨てます。
• 実際の位取りよりも小さいとき:0 で補完し拡張します。
(3) HADB の TIME 型および TIMESTAMP 型の?パラメタに対する値指定
小数秒精度が低いデータ型に小数秒精度が高いデータ型を指定した場合,差分の小数秒精度が切り捨てら
れます。逆に,小数秒精度が高いデータ型に小数秒精度が低いデータ型を指定した場合,差分の小数秒精
度に 0 を補い拡張されます。
(4) HADB の CHAR または VARCHAR 型の?パラメタに対する値指定
HADB の CHAR 型または VARCHAR 型の?パラメタに対して setXXX メソッドで値を指定する場合,?
パラメタの定義長よりも値を文字列表現にしたときの長さが大きいと,SQLException が投入されます。
(5) setObject で指定できるオブジェクト
setObject メソッドの引数 x に指定できるオブジェクトは,次に示す型のオブジェクトです。
• byte[]
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
350
• java.lang.Byte
• java.lang.Double
• java.lang.Float
• java.lang.Integer
• java.lang.Long
• java.lang.Short
• java.lang.String
• java.math.BigDecimal
• java.sql.Boolean
• java.sql.Date
• java.sql.Time
• java.sql.Timestamp
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
351
6.5 ResultSet インタフェース
ここでは,ResultSet インタフェースで提供されているメソッドについて説明します。
6.5.1 ResultSet インタフェースのメソッド一覧
(1) ResultSet インタフェースの主な機能
ResultSet インタフェースでは,主に次の機能が提供されています。
• 行単位の結果セット内の移動
• 結果データの返却
• 検索結果データがナル値かどうかの通知
(2) HADB でサポートしている ResultSet インタフェースのメソッド
HADB でサポートしている ResultSet インタフェースのメソッドの一覧を次の表に示します。
表 6‒14 ResultSet インタフェースのメソッドの一覧
項番
ResultSet インタフェースのメソッド
機能
1
absolute(int row)
ResultSet オブジェクト内の指定された行にカーソルを移動し
ます。
2
afterLast()
ResultSet オブジェクト内の最終行の後ろにカーソルを移動し
ます。
3
beforeFirst()
ResultSet オブジェクト内の先頭行の前にカーソルを移動しま
す。
4
clearWarnings()
この ResultSet オブジェクトに関して報告された,すべての警
告をクリアします。
5
close()
ResultSet オブジェクトでオープンしていたカーソルをクロー
ズし,JDBC リソースを解放します。
6
findColumn(String columnName)
指定した列名の列番号を返します。
7
first()
ResultSet オブジェクト内の先頭行にカーソルを移動します。
8
getAsciiStream(int columnIndex)
9
getAsciiStream(String columnName)
ResultSet オブジェクトの現在行の列の値を
java.io.InputStream オブジェクトに取得します。
10
getBigDecimal(int columnIndex)
11
getBigDecimal(String columnName)
ResultSet オブジェクトの現在行の列の値を
java.math.BigDecimal オブジェクトに取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
352
項番
ResultSet インタフェースのメソッド
機能
12
getBinaryStream(int columnIndex)
13
getBinaryStream(String columnName)
ResultSet オブジェクトの現在行の列の値を
java.io.InputStream オブジェクトに取得します。
14
getBoolean(int columnIndex)
15
getBoolean(String columnName)
16
getByte(int columnIndex)
17
getByte(String columnName)
18
getBytes(int columnIndex)
19
getBytes(String columnName)
20
getCharacterStream(int columnIndex)
21
getCharacterStream(String columnName)
22
getConcurrency()
この ResultSet オブジェクトの並行処理モードを取得します。
23
getCursorName()
この ResultSet オブジェクトが使用する SQL カーソルの名前
を取得します。
24
getDate(int columnIndex)
25
getDate(int columnIndex, Calendar cal)
ResultSet オブジェクトの現在行の列の値を java.sql.Date オ
ブジェクトに取得します。
26
getDate(String columnName)
27
getDate(String columnName, Calendar cal)
28
getDouble(int columnIndex)
29
getDouble(String columnName)
30
getFetchDirection()
この ResultSet オブジェクトのフェッチ方向を取得します。
31
getFetchSize()
ResultSet オブジェクトのフェッチサイズを取得します。
32
getFloat(int columnIndex)
33
getFloat(String columnName)
ResultSet オブジェクトの現在行の列の値を,Java プログラ
ミング言語の float で取得します。
34
getHoldability()
この ResultSet オブジェクトの保持機能の状態を表す値を取得
します。
35
getInt(int columnIndex)
36
getInt(String columnName)
ResultSet オブジェクトの現在行の列の値を,Java プログラ
ミング言語の int で取得します。
37
getLong(int columnIndex)
38
getLong(String columnName)
39
getMetaData()
この ResultSet オブジェクトのメタ情報を取得します。
40
getObject(int columnIndex)
ResultSet オブジェクトの現在行の列の値を,Java プログラ
ミング言語の Object で取得します。
ResultSet オブジェクトの現在行の列の値を,Java プログラ
ミング言語の boolean で取得します。
ResultSet オブジェクトの現在行の列の値を,Java プログラ
ミング言語の byte で取得します。
ResultSet オブジェクトの現在行の列の値を,Java プログラ
ミング言語の byte 配列で取得します。
ResultSet オブジェクトの現在行の列の値を java.io.Reader
オブジェクトに取得します。
ResultSet オブジェクトの現在行の列の値を,Java プログラ
ミング言語の double で取得します。
ResultSet オブジェクトの現在行の列の値を,Java プログラ
ミング言語の long で取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
353
項番
ResultSet インタフェースのメソッド
機能
41
getObject(String columnName)
42
getRow()
現在の行の番号を取得します。
43
getShort(int columnIndex)
44
getShort(String columnName)
ResultSet オブジェクトの現在行の列の値を,Java プログラ
ミング言語の short で取得します。
45
getStatement()
この ResultSet オブジェクトを生成した Statement オブジェ
クトを取得します。
46
getString(int columnIndex)
47
getString(String columnName)
ResultSet オブジェクトの現在行の列の値を,Java プログラ
ミング言語の String で取得します。
48
getTime(int columnIndex)
49
getTime(int columnIndex, Calendar cal)
50
getTime(String columnName)
51
getTime(String columnName, Calendar cal)
52
getTimestamp(int columnIndex)
53
getTimestamp(int columnIndex, Calendar cal)
54
getTimestamp(String columnName)
55
getTimestamp(String columnName, Calendar
cal)
56
getType()
ResultSet オブジェクトの型を返します。
57
getWarnings()
この ResultSet オブジェクトに関する呼び出しによって報告さ
れる,最初の警告を取得します。
58
isAfterLast()
ResultSet オブジェクトの最終行の後ろに,カーソルがあるか
どうかの情報を取得します。
59
isBeforeFirst()
ResultSet オブジェクトの先頭行の前に,カーソルがあるかど
うかの情報を取得します。
60
isClosed()
この ResultSet オブジェクトがクローズされているかどうかを
示す値を取得します。
61
isFirst()
ResultSet オブジェクトの先頭行に,カーソルがあるかどうか
の情報を取得します。
62
isLast()
ResultSet オブジェクトの最終行に,カーソルがあるかどうか
の情報を取得します。
63
last()
ResultSet オブジェクトの最終行に,カーソルを移動します。
64
next()
カーソルを次の行に移動します。
65
previous()
カーソルを 1 つ前の行に移動します。
66
relative(int rows)
カーソルを移動します。
ResultSet オブジェクトの現在行の列の値を java.sql.Time オ
ブジェクトに取得します。
ResultSet オブジェクトの現在行の列の値を
java.sql.Timestamp オブジェクトに取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
354
項番
ResultSet インタフェースのメソッド
機能
67
setFetchDirection(int direction)
ResultSet オブジェクトのフェッチ方向を設定します。
68
setFetchSize(int rows)
69
wasNull()
ResultSet オブジェクトを検索する際のフェッチサイズ
(フェッチする行数)を設定します。
最後に取得した列の値がナル値かどうかの情報を返します。
注
この表に記載されていないメソッドは,HADB ではサポートしていません。サポートしていないメソッ
ドを実行すると,SQLException が投入されることがあります。
(3) 必要なパッケージ名称とクラス名称
ResultSet インタフェースを使用する場合に必要なパッケージ名称とクラス名称を次に示します。
• パッケージ名称:com.hitachi.hadb.jdbc
• クラス名称:AdbResultSet
6.5.2 absolute(int row)
(1) 機能
ResultSet オブジェクト内の指定された行にカーソルを移動します。
(2) 形式
public synchronized boolean absolute(int row) throws SQLException
(3) 引数
int row:
カーソルの移動先の行番号を指定します。正の番号を指定した場合,行番号は結果セットの先頭からカ
ウントされます。負の番号を指定した場合,行番号は結果セットの終端からカウントされます。
(4) 戻り値
absolute メソッドを呼び出したあとのカーソル位置が,先頭行の前または最終行の後ろの場合は false が,
そうでない場合は true が返却されます。
absolute メソッド実行時のカーソルの移動先と戻り値を次の表に示します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
355
表 6‒15 absolute メソッド実行時のカーソルの移動先と戻り値
結果集合の行数※
row の指定値
カーソルの移動先
戻り値
0
0 以外
先頭行の前のまま
false
n
n < row
最終行の後ろ
false
1≦row≦n
row
true
-n≦row≦-1
(n + 1)+ row
true
row <-n
先頭行の前
false
注※ setMaxRows の値より実際の行数の方が多い場合は,setMaxRows の値になります。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• この ResultSet オブジェクトの型が ResultSet.TYPE_FORWARD_ONLY の場合
• row に 0 を指定した場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• データベースのアクセスエラーが発生した場合
6.5.3 afterLast()
(1) 機能
ResultSet オブジェクト内の最終行の後ろにカーソルを移動します。このメソッド実行時のカーソルの移
動先を次の表に示します。
表 6‒16 afterLast メソッド実行時のカーソルの移動先
結果集合の行数※
現在のカーソルの位置
カーソルの移動先
0
先頭行の前
先頭行の前のまま
n
先頭行の前
最終行の後ろ
1≦現在の行≦n
最終行の後ろ
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
356
結果集合の行数※
現在のカーソルの位置
カーソルの移動先
最終行の後ろ
最終行の後ろのまま
注※ setMaxRows の値より実際の行数の方が多い場合は,setMaxRows の値になります。
(2) 形式
public synchronized void afterLast() throws SQLException
(3) 引数
なし。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• この ResultSet オブジェクトの型が ResultSet.TYPE_FORWARD_ONLY の場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• データベースのアクセスエラーが発生した場合
6.5.4 beforeFirst()
(1) 機能
ResultSet オブジェクト内の先頭行の前にカーソルを移動します。このメソッド実行時のカーソルの移動
先を次の表に示します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
357
表 6‒17 beforeFirst メソッド実行時のカーソルの移動先
結果集合の行数※
現在のカーソルの位置
カーソルの移動先
0
先頭行の前
先頭行の前のまま
n
先頭行の前
先頭行の前のまま
1≦現在の行≦n
先頭行の前
最終行の後ろ
先頭行の前
注※ setMaxRows の値より実際の行数の方が多い場合は,setMaxRows の値になります。
(2) 形式
public synchronized void beforeFirst() throws SQLException
(3) 引数
なし。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• この ResultSet オブジェクトの型が ResultSet.TYPE_FORWARD_ONLY の場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• データベースのアクセスエラーが発生した場合
6.5.5 clearWarnings()
(1) 機能
この ResultSet オブジェクトに関して報告された,すべての警告をクリアします。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
358
(2) 形式
public synchronized void clearWarnings() throws SQLException
(3) 引数
なし。
(4) 戻り値
なし。
(5) 発生する例外
トランザクションの決着によって ResultSet オブジェクトが無効になった場合,SQLException が投入さ
れます。
6.5.6 close()
(1) 機能
ResultSet オブジェクトでオープンしていたカーソルをクローズし,JDBC リソースを解放します。
(2) 形式
public synchronized void close() throws SQLException
(3) 引数
なし。
(4) 戻り値
なし。
(5) 発生する例外
データベースのアクセスエラーが発生した場合,SQLException が投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
359
6.5.7 findColumn(String columnName)
(1) 機能
指定した列名の列番号を返します。
(2) 形式
public synchronized int findColumn(String columnName) throws SQLException
(3) 引数
String columnName:
列名を指定します。この列名に対応する列番号が返却されます。
列名指定時の注意事項を次に示します。
• 大文字と小文字を区別しません。
• 指定した文字列すべてを列名として扱うため,文字列に二重引用符(")が含まれている場合,二重
引用符(")も列名の一部として扱われます。
• 指定した列名が複数ある場合,列番号が小さい列が優先されます。
(4) 戻り値
指定した列名に対応する列番号が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 指定した列がない場合
• columnName に null を指定するか,または長さ 0 の文字列を指定した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
360
6.5.8 first()
(1) 機能
ResultSet オブジェクト内の先頭行にカーソルを移動します。
(2) 形式
public synchronized boolean first() throws SQLException
(3) 引数
なし。
(4) 戻り値
結果集合の行数が 0 の場合は false が,そうでない場合は true が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• この ResultSet オブジェクトの型が ResultSet.TYPE_FORWARD_ONLY の場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• データベースのアクセスエラーが発生した場合
6.5.9 getAsciiStream(int columnIndex)
(1) 機能
ResultSet オブジェクトの現在行の列の値を java.io.InputStream オブジェクトに取得します。値を取得
する列は,引数で指定します。
なお,ASCII 文字への変換は行いません。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
361
(2) 形式
public synchronized InputStream getAsciiStream(int columnIndex) throws SQLException
(3) 引数
int columnIndex:
列番号を指定します。
(4) 戻り値
検索結果を格納した java.io.InputStream オブジェクトが返却されます。検索結果と戻り値の関係を次の
表に示します。
表 6‒18 検索結果と戻り値の関係(getAsciiStream メソッドの場合)
HADB のデータ型
検索結果
戻り値
CHAR
ナル値
null
上記以外
検索結果を格納した java.io.InputStream オブジェクト
該当しません
SQLException が投入される
VARCHAR
BINARY
VARBINARY
そのほか
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列番号を指定した場合
• このメソッドでは取得できないデータ型の場合
• JDBC ドライバ内でエラーが発生した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
362
6.5.10 getAsciiStream(String columnName)
(1) 機能
ResultSet オブジェクトの現在行の列の値を java.io.InputStream オブジェクトに取得します。値を取得
する列は,引数で指定します。
なお,ASCII 文字への変換は行いません。
(2) 形式
public synchronized InputStream getAsciiStream(String columnName) throws SQLException
(3) 引数
String columnName:
列名を指定します。
(4) 戻り値
検索結果を格納した java.io.InputStream オブジェクトが返却されます。検索結果と戻り値の関係につい
ては,
「表 6-18 検索結果と戻り値の関係(getAsciiStream メソッドの場合)
」を参照してください。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列名を指定した場合
• このメソッドでは取得できないデータ型の場合
• JDBC ドライバ内でエラーが発生した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
363
6.5.11 getBigDecimal(int columnIndex)
(1) 機能
ResultSet オブジェクトの現在行の列の値を java.math.BigDecimal オブジェクトに取得します。値を取
得する列は,引数で指定します。
(2) 形式
public synchronized BigDecimal getBigDecimal(int columnIndex) throws SQLException
(3) 引数
int columnIndex:
列番号を指定します。
(4) 戻り値
指定された列番号に対応する列値が返却されます。検索結果と戻り値の関係を次の表に示します。
表 6‒19 検索結果と戻り値の関係(getBigDecimal メソッドの場合)
HADB のデータ型
検索結果
戻り値
CHAR
ナル値
null
[半角空白]整数の文字列表現,10 進
数の文字列表現,または浮動小数点
数の文字列表現[半角空白]
検索結果を持つ java.math.BigDecimal オブジェクト(文
字列の前後の半角空白を取り除いた値を
java.math.BigDecimal オブジェクトにします)
上記以外
SQLException が投入される
ナル値
null
上記以外
検索結果を持つ java.math.BigDecimal オブジェクト
ナル値
null
上記以外
検索結果を持つ java.math.BigDecimal オブジェクト
ナル値
null
上記以外
検索結果を持つ java.math.BigDecimal オブジェクト
ナル値
null
上記以外
検索結果を持つ java.math.BigDecimal オブジェクト
ナル値
null
true
BigDecimal(1)で java.math.BigDecimal オブジェクトに
したもの
VARCHAR
SMALLINT
INTEGER
DECIMAL
DOUBLE PRECISION
BOOLEAN※
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
364
HADB のデータ型
そのほか
検索結果
戻り値
false
BigDecimal(0)で java.math.BigDecimal オブジェクトに
したもの
該当しません
SQLException が投入される
注※
DatabaseMetadata から生成した Resultset オブジェクトの場合,BOOLEAN 型データが存在します。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列番号を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が BigDecimal として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6.5.12 getBigDecimal(String columnName)
(1) 機能
ResultSet オブジェクトの現在行の列の値を java.math.BigDecimal オブジェクトに取得します。値を取
得する列は,引数で指定します。
(2) 形式
public synchronized BigDecimal getBigDecimal(String columnName) throws SQLException
(3) 引数
String columnName:
列名を指定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
365
(4) 戻り値
指定された列名に対応する列値が返却されます。
検索結果と戻り値の関係については,「表 6-19 検索結果と戻り値の関係(getBigDecimal メソッドの場
合)」を参照してください。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列名を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が BigDecimal として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6.5.13 getBinaryStream(int columnIndex)
(1) 機能
ResultSet オブジェクトの現在行の列の値を java.io.InputStream オブジェクトに取得します。値を取得
する列は,引数で指定します。
(2) 形式
public synchronized InputStream getBinaryStream(int columnIndex) throws SQLException
(3) 引数
int columnIndex:
列番号を指定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
366
(4) 戻り値
検索結果を格納した java.io.InputStream オブジェクトが返却されます。検索結果と戻り値の関係を次の
表に示します。
表 6‒20 検索結果と戻り値の関係(getBinaryStream メソッドの場合)
HADB のデータ型
検索結果
戻り値
BINARY
ナル値
null
上記以外
検索結果を格納した java.io.InputStream オブジェクト
該当しません
SQLException が投入される
VARBINARY
そのほか
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列番号を指定した場合
• このメソッドでは取得できないデータ型の場合
• JDBC ドライバ内でエラーが発生した場合
6.5.14 getBinaryStream(String columnName)
(1) 機能
ResultSet オブジェクトの現在行の列の値を java.io.InputStream オブジェクトに取得します。値を取得
する列は,引数で指定します。
(2) 形式
public synchronized InputStream getBinaryStream(String columnName) throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
367
(3) 引数
String columnName:
列名を指定します。
(4) 戻り値
検索結果を格納した java.io.InputStream オブジェクトが返却されます。検索結果と戻り値の関係につい
ては,
「表 6-20 検索結果と戻り値の関係(getBinaryStream メソッドの場合)」を参照してください。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列名を指定した場合
• このメソッドでは取得できないデータ型の場合
• JDBC ドライバ内でエラーが発生した場合
6.5.15 getBoolean(int columnIndex)
(1) 機能
ResultSet オブジェクトの現在行の列の値を,Java プログラミング言語の boolean で取得します。値を取
得する列は,引数で指定します。
(2) 形式
public synchronized boolean getBoolean(int columnIndex) throws SQLException
(3) 引数
int columnIndex:
列番号を指定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
368
(4) 戻り値
true または false が返却されます。検索結果と戻り値の関係を次の表に示します。
表 6‒21 検索結果と戻り値の関係(getBoolean メソッドの場合)
HADB のデータ型
検索結果
戻り値
CHAR
ナル値
false
[半角空白]1[半角空白]
true
上記以外
false
ナル値
false
0
false
上記以外
true
ナル値
false
0
false
上記以外
true
ナル値
false
0[.00…0]
false
上記以外
true
ナル値
false
0.0 または-0.0
false
上記以外
true
ナル値
false
ナル値以外
検索結果
該当しません
SQLException が投入される
VARCHAR
SMALLINT
INTEGER
DECIMAL
DOUBLE PRECISION
BOOLEAN※
そのほか
注※
DatabaseMetadata から生成した Resultset オブジェクトの場合,BOOLEAN 型データが存在します。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
369
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列番号を指定した場合
• このメソッドでは取得できないデータ型の場合
• JDBC ドライバ内でエラーが発生した場合
6.5.16 getBoolean(String columnName)
(1) 機能
ResultSet オブジェクトの現在行の列の値を,Java プログラミング言語の boolean で取得します。値を取
得する列は,引数で指定します。
(2) 形式
public synchronized boolean getBoolean(String columnName) throws SQLException
(3) 引数
String columnName:
列名を指定します。
(4) 戻り値
true または false が返却されます。検索結果と戻り値の関係については,「表 6-21 検索結果と戻り値の
関係(getBoolean メソッドの場合)
」を参照してください。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列名を指定した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
370
• このメソッドでは取得できないデータ型の場合
• JDBC ドライバ内でエラーが発生した場合
6.5.17 getByte(int columnIndex)
(1) 機能
ResultSet オブジェクトの現在行の列の値を,Java プログラミング言語の byte で取得します。値を取得
する列は,引数で指定します。
(2) 形式
public synchronized byte getByte(int columnIndex) throws SQLException
(3) 引数
int columnIndex:
列番号を指定します。
(4) 戻り値
列値が返却されます。検索結果と戻り値の関係を次の表に示します。
表 6‒22 検索結果と戻り値の関係(getByte メソッドの場合)
HADB のデータ型
検索結果
戻り値
CHAR
ナル値
0
[半角空白]整数の文字列表現,10 進数の文字列表現,
または浮動小数点数の文字列表現[半角空白]であり,か
つ Byte.MIN_VALUE 以上で,Byte.MAX_VALUE
以下
検索結果を byte 値にしたもの
[半角空白]整数の文字列表現,10 進数の文字列表現,
または浮動小数点数の文字列表現[半角空白]であり,か
つ Byte.MAX_VALUE より大きいか,
Byte.MIN_VALUE より小さい
SQLException が投入される
VARCHAR
[半角空白][+]Infinity[半角空白]
[半角空白]-Infinity[半角空白]
[半角空白][+|-]NaN[半角空白]
上記以外
SMALLINT
ナル値
0
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
371
HADB のデータ型
INTEGER
DECIMAL
DOUBLE PRECISION
BOOLEAN※
そのほか
検索結果
戻り値
Byte.MIN_VALUE 以上かつ Byte.MAX_VALUE 以下
検索結果を byte 値にしたもの
上記以外
SQLException が投入される
ナル値
0
Byte.MIN_VALUE 以上かつ Byte.MAX_VALUE 以下
検索結果を byte 値にしたもの
上記以外
SQLException が投入される
ナル値
0
Byte.MIN_VALUE 以上かつ Byte.MAX_VALUE 以下
検索結果の整数部分の値を byte 値
にしたもの
上記以外
SQLException が投入される
ナル値
0
Byte.MIN_VALUE 以上かつ Byte.MAX_VALUE 以下
検索結果の整数部分の値を byte 値
にしたもの
上記以外
SQLException が投入される
ナル値
0
true
1
false
0
該当しません
SQLException が投入される
注※
DatabaseMetadata から生成した Resultset オブジェクトの場合,BOOLEAN 型データが存在します。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列番号を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が byte として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
372
6.5.18 getByte(String columnName)
(1) 機能
ResultSet オブジェクトの現在行の列の値を,Java プログラミング言語の byte で取得します。値を取得
する列は,引数で指定します。
(2) 形式
public synchronized byte getByte(String columnName) throws SQLException
(3) 引数
String columnName:
列名を指定します。
(4) 戻り値
列値が返却されます。検索結果と戻り値の関係については,「表 6-22 検索結果と戻り値の関係(getByte
メソッドの場合)
」を参照してください。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列名を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が byte として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
373
6.5.19 getBytes(int columnIndex)
(1) 機能
ResultSet オブジェクトの現在行の列の値を,Java プログラミング言語の byte 配列で取得します。値を
取得する列は,引数で指定します。
(2) 形式
public synchronized byte[] getBytes(int columnIndex) throws SQLException
(3) 引数
int columnIndex:
列番号を指定します。
(4) 戻り値
列値が返却されます。検索結果と戻り値の関係を次の表に示します。
表 6‒23 検索結果と戻り値の関係(getBytes メソッドの場合)
HADB のデータ型
検索結果
戻り値
BINARY
ナル値
null
上記以外
検索結果を Byte 配列にしたもの
ROW
検索結果がナル値になることはあり
ません
検索結果を Byte 配列にしたもの
そのほか
該当しません
SQLException が投入される
VARBINARY
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列番号を指定した場合
• このメソッドでは取得できないデータ型の場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
374
• JDBC ドライバ内でエラーが発生した場合
6.5.20 getBytes(String columnName)
(1) 機能
ResultSet オブジェクトの現在行の列の値を,Java プログラミング言語の byte 配列で取得します。値を
取得する列は,引数で指定します。
バイトは JDBC ドライバによって返された行の値を表します。
(2) 形式
public synchronized byte[] getBytes(String columnName) throws SQLException
(3) 引数
String columnName:
列名を指定します。
(4) 戻り値
列値が返却されます。検索結果と戻り値の関係については,「表 6-23 検索結果と戻り値の関係(getBytes
メソッドの場合)」を参照してください。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列名を指定した場合
• このメソッドでは取得できないデータ型の場合
• JDBC ドライバ内でエラーが発生した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
375
6.5.21 getCharacterStream(int columnIndex)
(1) 機能
ResultSet オブジェクトの現在行の列の値を java.io.Reader オブジェクトに取得します。値を取得する列
は,引数で指定します。
(2) 形式
public synchronized Reader getCharacterStream(int columnIndex) throws SQLException
(3) 引数
int columnIndex:
列番号を指定します。
(4) 戻り値
列値を格納した java.io.Reader オブジェクトが返却されます。検索結果と戻り値の関係を次の表に示しま
す。
表 6‒24 検索結果と戻り値の関係(getCharacterStream メソッドの場合)
HADB のデータ型
検索結果
戻り値
CHAR
ナル値
null
上記以外
検索結果を格納した java.io.Reader オブジェクト
該当しません
SQLException が投入される
VARCHAR
BINARY
VARBINARY
そのほか
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列番号を指定した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
376
• このメソッドでは取得できないデータ型の場合
• エンコードに失敗した場合
• JDBC ドライバ内でエラーが発生した場合
6.5.22 getCharacterStream(String columnName)
(1) 機能
ResultSet オブジェクトの現在行の列の値を java.io.Reader オブジェクトに取得します。値を取得する列
は,引数で指定します。
(2) 形式
public synchronized Reader getCharacterStream(String columnName) throws SQLException
(3) 引数
String columnName:
列名を指定します。
(4) 戻り値
列値を格納した java.io.Reader オブジェクトが返却されます。検索結果と戻り値の関係については,「表
6-24 検索結果と戻り値の関係(getCharacterStream メソッドの場合)」を参照してください。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列名を指定した場合
• このメソッドでは取得できないデータ型の場合
• エンコードに失敗した場合
• JDBC ドライバ内でエラーが発生した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
377
6.5.23 getConcurrency()
(1) 機能
この ResultSet オブジェクトの並行処理モードを取得します。
(2) 形式
public synchronized int getConcurrency() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に ResultSet.CONCUR_READ_ONLY が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
6.5.24 getCursorName()
(1) 機能
この ResultSet オブジェクトが使用する SQL カーソルの名前を取得します。
(2) 形式
public synchronized String getCursorName() throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
378
(3) 引数
なし。
(4) 戻り値
常に空の文字列が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
6.5.25 getDate(int columnIndex)
(1) 機能
ResultSet オブジェクトの現在行の列の値を java.sql.Date オブジェクトに取得します。値を取得する列
は,引数で指定します。
(2) 形式
public synchronized java.sql.Date getDate(int columnIndex) throws SQLException
(3) 引数
int columnIndex:
列番号を指定します。
(4) 戻り値
列値を格納した java.sql.Date オブジェクトが返却されます。検索結果と戻り値の関係を次の表に示します。
DATE 型,TIME 型,TIMESTAMP 型,または文字列型(CHAR,VARCHAR)の変換については,
「5.6.2(2) getXXX メソッド実行時のデータ変換処理(DATE 型,TIME 型,TIMESTAMP 型,または
文字列型の場合)」を参照してください。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
379
表 6‒25 検索結果と戻り値の関係(getDate メソッドの場合)
HADB のデータ型
検索結果
戻り値
CHAR
ナル値
null
[半角空白]日付形式※[半角空白]
検索結果の前後の半角空白を取り除き java.sql.Date
オブジェクトにしたもの
上記以外
SQLException が投入される
ナル値
null
上記以外
検索結果を java.sql.Date オブジェクトにしたもの
ナル値
null
上記以外
検索結果を java.sql.Date オブジェクトにしたもの
ナル値
null
上記以外
検索結果を java.sql.Date オブジェクトにしたもの
該当しません
SQLException が投入される
VARCHAR
DATE
TIME
TIMESTAMP
そのほか
注※
日付形式とは,'YYYY-MM-DD'で表される文字列表現のことです。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列番号を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が java.sql.Date として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
380
6.5.26 getDate(int columnIndex, Calendar cal)
(1) 機能
ResultSet オブジェクトの現在行の列の値を java.sql.Date オブジェクトに取得します。値を取得する列
は,引数で指定します。
このメソッドは,指定されたカレンダーを使って日付に適切なミリ秒値を作成します。
(2) 形式
public synchronized java.sql.Date getDate(int columnIndex, Calendar cal) throws SQLException
(3) 引数
int columnIndex:
列番号を指定します。
Calendar cal:
データベースに格納されている値のタイムゾーンが設定されたカレンダーを指定します。
(4) 戻り値
列値を格納した java.sql.Date オブジェクトが返却されます。検索結果と戻り値の関係については,「表
6-25 検索結果と戻り値の関係(getDate メソッドの場合)」を参照してください。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列番号を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が java.sql.Date として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
381
6.5.27 getDate(String columnName)
(1) 機能
ResultSet オブジェクトの現在行の列の値を java.sql.Date オブジェクトに取得します。値を取得する列
は,引数で指定します。
(2) 形式
public synchronized java.sql.Date getDate(String columnName) throws SQLException
(3) 引数
String columnName:
列名を指定します。
(4) 戻り値
列値を格納した java.sql.Date オブジェクトが返却されます。検索結果と戻り値の関係については,「表
6-25 検索結果と戻り値の関係(getDate メソッドの場合)」を参照してください。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列名を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が java.sql.Date として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
382
6.5.28 getDate(String columnName, Calendar cal)
(1) 機能
ResultSet オブジェクトの現在行の列の値を java.sql.Date オブジェクトに取得します。値を取得する列
は,引数で指定します。
このメソッドは,指定されたカレンダーを使って日付に適切なミリ秒値を作成します。
(2) 形式
public synchronized java.sql.Date getDate(String columnName, Calendar cal) throws
SQLException
(3) 引数
String columnName:
列名を指定します。
Calendar cal:
データベースに格納されている値のタイムゾーンが設定されたカレンダーを指定します。
(4) 戻り値
列値を格納した java.sql.Date オブジェクトが返却されます。検索結果と戻り値の関係については,「表
6-25 検索結果と戻り値の関係(getDate メソッドの場合)」を参照してください。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列名を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が java.sql.Date として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
383
6.5.29 getDouble(int columnIndex)
(1) 機能
ResultSet オブジェクトの現在行の列の値を,Java プログラミング言語の double で取得します。値を取
得する列は,引数で指定します。
(2) 形式
public synchronized double getDouble(int columnIndex) throws SQLException
(3) 引数
int columnIndex:
列番号を指定します。
(4) 戻り値
列値が返却されます。検索結果と戻り値の関係を次の表に示します。
表 6‒26 検索結果と戻り値の関係(getDouble メソッドの場合)
HADB のデータ型
検索結果
戻り値
CHAR
ナル値
0.0
[半角空白]整数の文字列表現,10 進数の文字列表現,または
浮動小数点数の文字列表現[半角空白]であり,かつDouble.MAX_VALUE 以上,かつ Double.MIN_VALUE 以
下,かつ Double.MIN_VALUE 以上かつ
Double.MAX_VALUE 以下
検索結果を double 値にしたもの
[半角空白]整数の文字列表現,10 進数の文字列表現,または
浮動小数点数の文字列表現[半角空白]かつ
Double.MAX_VALUE より大きい
Infinity
[半角空白]整数の文字列表現,10 進数の文字列表現,または
浮動小数点数の文字列表現[半角空白]かつDouble.MAX_VALUE より小さい
-Infinity
[半角空白]整数の文字列表現,10 進数の文字列表現,または
浮動小数点数の文字列表現[半角空白]かつ
Double.MIN_VALUE より小さく 0 より大きい
0.0
[半角空白]整数の文字列表現,10 進数の文字列表現,または
浮動小数点数の文字列表現[半角空白]かつDouble.MIN_VALUE より大きく 0 より小さい
-0.0
[半角空白]-Infinity[半角空白]
-Infinity
VARCHAR
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
384
HADB のデータ型
検索結果
戻り値
[半角空白][+]Infinity[半角空白]
Infinity
[半角空白][+|-]NaN[半角空白]
NaN
上記以外(double 値にできない)
SQLException が投入される
ナル値
0.0
上記以外
検索結果を double 値にしたもの
ナル値
0.0
上記以外
検索結果を double 値にしたもの
ナル値
0.0
上記以外
検索結果を double 値にしたもの
DOUBLE
PRECISION
ナル値
0.0
上記以外
検索結果を double 値にしたもの
BOOLEAN※
ナル値
0.0
true
1.0
false
0.0
該当しません
SQLException が投入される
SMALLINT
INTEGER
DECIMAL
そのほか
注※
DatabaseMetadata から生成した Resultset オブジェクトの場合,BOOLEAN 型データが存在します。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列番号を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が double として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
385
6.5.30 getDouble(String columnName)
(1) 機能
ResultSet オブジェクトの現在行の列の値を,Java プログラミング言語の double で取得します。値を取
得する列は,引数で指定します。
(2) 形式
public synchronized double getDouble(String columnName) throws SQLException
(3) 引数
String columnName:
列名を指定します。
(4) 戻り値
列値が返却されます。
検索結果と戻り値の関係については,「表 6-26 検索結果と戻り値の関係(getDouble メソッドの場合)
」
を参照してください。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列名を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が double として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
386
6.5.31 getFetchDirection()
(1) 機能
この ResultSet オブジェクトのフェッチ方向を取得します。
(2) 形式
public synchronized int getFetchDirection() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に ResultSet.FETCH_FORWARD が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
6.5.32 getFetchSize()
(1) 機能
ResultSet オブジェクトのフェッチサイズを取得します。
(2) 形式
public synchronized int getFetchSize() throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
387
(3) 引数
なし。
(4) 戻り値
この ResultSet オブジェクトの現在のフェッチサイズが返却されます。setFetchSize メソッドで設定した
値が返却されます。setFetchSize メソッドで値を設定していない場合は 0 が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
6.5.33 getFloat(int columnIndex)
(1) 機能
ResultSet オブジェクトの現在行の列の値を,Java プログラミング言語の float で取得します。値を取得
する列は,引数で指定します。
(2) 形式
public synchronized float getFloat(int columnIndex) throws SQLException
(3) 引数
int columnIndex:
列番号を指定します。
(4) 戻り値
列値が返却されます。検索結果と戻り値の関係を次の表に示します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
388
表 6‒27 検索結果と戻り値の関係(getFloat メソッドの場合)
HADB のデータ型
検索結果
戻り値
CHAR
ナル値
0.0
[半角空白]整数の文字列表現,10 進数の文字列表現,または
浮動小数点数の文字列表現[半角空白]であり,かつ次のどち
らか
検索結果を float 値にしたもの
VARCHAR
• -Float.MAX_VALUE 以上-Float.MIN_VALUE 以下
• Float.MIN_VALUE 以上 Float.MAX_VALUE 以下
SMALLINT
INTEGER
DECIMAL
DOUBLE
PRECISION
[半角空白]整数の文字列表現,10 進数の文字列表現,または
浮動小数点数の文字列表現[半角空白]かつ
Float.MAX_VALUE より大きい
Infinity
[半角空白]整数の文字列表現,10 進数の文字列表現,または
浮動小数点数の文字列表現[半角空白]かつFloat.MAX_VALUE より小さい
-Infinity
[半角空白]整数の文字列表現,10 進数の文字列表現,または
浮動小数点数の文字列表現[半角空白]かつ Float.MIN_VALUE
より小さく 0 より大きい
0.0
[半角空白]整数の文字列表現,10 進数の文字列表現,または
浮動小数点数の文字列表現[半角空白]かつ-Float.MIN_VALUE
より大きく 0 より小さい
-0.0
[半角空白]-Infinity[半角空白]
-Infinity
[半角空白][+]Infinity[半角空白]
Infinity
[半角空白][+|-]NaN[半角空白]
NaN
上記以外(float 値にできない)
SQLException が投入される
ナル値
0.0
上記以外
検索結果を float 値にしたもの
ナル値
0.0
上記以外
検索結果を float 値にしたもの
ナル値
0.0
上記以外
検索結果を float 値にしたもの
ナル値
0.0
次のどちらか
検索結果を float 値にしたもの
• -Float.MAX_VALUE 以上-Float.MIN_VALUE 以下
• Float.MIN_VALUE 以上 Float.MAX_VALUE 以下
Float.MAX_VALUE より大きい
Infinity
-Float.MAX_VALUE より小さい
-Infinity
Float.MIN_VALUE より小さく 0 より大きい
0.0
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
389
HADB のデータ型
BOOLEAN※
そのほか
検索結果
戻り値
-Float.MIN_VALUE より大きく 0 より小さい
-0.0
ナル値
0.0
true
1.0
false
0.0
該当しません
SQLException が投入される
注※
DatabaseMetadata から生成した Resultset オブジェクトの場合,BOOLEAN 型データが存在します。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列番号を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が float として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6.5.34 getFloat(String columnName)
(1) 機能
ResultSet オブジェクトの現在行の列の値を,Java プログラミング言語の float で取得します。値を取得
する列は,引数で指定します。
(2) 形式
public synchronized float getFloat(String columnName) throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
390
(3) 引数
String columnName:
列名を指定します。
(4) 戻り値
列値が返却されます。
検索結果と戻り値の関係については,「表 6-27 検索結果と戻り値の関係(getFloat メソッドの場合)
」
を参照してください。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列名を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が float として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6.5.35 getHoldability()
(1) 機能
この ResultSet オブジェクトの保持機能の状態を表す値を取得します。
(2) 形式
public synchronized int getHoldability() throws SQLException
(3) 引数
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
391
(4) 戻り値
常に ResultSet.HOLD_CURSORS_OVER_COMMIT が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
• この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされている場合
• この ResultSet オブジェクトを生成した Statement オブジェクトを生成した Connection オブジェク
トがクローズされている場合
6.5.36 getInt(int columnIndex)
(1) 機能
ResultSet オブジェクトの現在行の列の値を,Java プログラミング言語の int で取得します。値を取得す
る列は,引数で指定します。
(2) 形式
public synchronized int getInt(int columnIndex) throws SQLException
(3) 引数
int columnIndex:
列番号を指定します。
(4) 戻り値
列値が返却されます。検索結果と戻り値の関係を次の表に示します。
表 6‒28 検索結果と戻り値の関係(getInt メソッドの場合)
HADB のデータ型
検索結果
戻り値
CHAR
ナル値
0
[半角空白]整数の文字列表現,10 進数の文字列表現,または
浮動小数点数の文字列表現[半角空白]であり,かつ
Integer.MIN_VALUE 以上,Integer.MAX_VALUE 以下
検索結果の整数部分の値を int 値に
したもの
VARCHAR
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
392
HADB のデータ型
検索結果
戻り値
[半角空白]整数の文字列表現,10 進数の文字列表現,または
浮動小数点数の文字列表現[半角空白]であり,かつ
Integer.MAX_VALUE より大きいか Integer.MIN_VALUE
より小さい
SQLException が投入される
[半角空白]-Infinity[半角空白]
[半角空白][+]Infinity[半角空白]
[半角空白][+|-]NaN[半角空白]
上記以外(double 値にできない)
SMALLINT
INTEGER
DECIMAL
DOUBLE
PRECISION
BOOLEAN※
そのほか
ナル値
0
上記以外
検索結果を int 値にしたもの
ナル値
0
Integer.MIN_VALUE 以上かつ Integer.MAX_VALUE 以下
検索結果を int 値にしたもの
上記以外
SQLException が投入される
ナル値
0
Integer.MIN_VALUE 以上かつ Integer.MAX_VALUE 以下
検索結果の整数部分の値を int 値に
したもの
上記以外
SQLException が投入される
ナル値
0
Integer.MIN_VALUE 以上かつ Integer.MAX_VALUE 以下
検索結果の整数部分の値を int 値に
したもの
上記以外
SQLException が投入される
ナル値
0
true
1
false
0
該当しません
SQLException が投入される
注※
DatabaseMetadata から生成した Resultset オブジェクトの場合,BOOLEAN 型データが存在します。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
393
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列番号を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が int として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6.5.37 getInt(String columnName)
(1) 機能
ResultSet オブジェクトの現在行の列の値を,Java プログラミング言語の int で取得します。値を取得す
る列は,引数で指定します。
(2) 形式
public synchronized int getInt(String columnName) throws SQLException
(3) 引数
String columnName:
列名を指定します。
(4) 戻り値
列値が返却されます。
検索結果と戻り値の関係については,「表 6-28 検索結果と戻り値の関係(getInt メソッドの場合)
」を参
照してください。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
394
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列名を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が int として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6.5.38 getLong(int columnIndex)
(1) 機能
ResultSet オブジェクトの現在行の列の値を,Java プログラミング言語の long で取得します。値を取得
する列は,引数で指定します。
(2) 形式
public synchronized long getLong(int columnIndex) throws SQLException
(3) 引数
int columnIndex:
列番号を指定します。
(4) 戻り値
列値が返却されます。検索結果と戻り値の関係を次の表に示します。
表 6‒29 検索結果と戻り値の関係(getLong メソッドの場合)
HADB のデータ型
検索結果
戻り値
CHAR
ナル値
0
[半角空白]整数の文字列表現,10 進数の文字列表現,または
浮動小数点の文字列表現[半角空白]であり,かつ
Long.MIN_VALUE 以上,Long.MAX_VALUE 以下
検索結果の整数部分の値を long 値
にしたもの
[半角空白]整数の文字列表現,10 進数の文字列表現,または
浮動小数点の文字列表現[半角空白]であり,かつ
Long.MAX_VALUE より大きいか Long.MIN_VALUE より
小さい
SQLException が投入される
VARCHAR
[半角空白]-Infinity[半角空白]
[半角空白][+]Infinity[半角空白]
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
395
HADB のデータ型
検索結果
戻り値
[半角空白][+|-]NaN[半角空白]
上記以外(double 値,または BigDecimal オブジェクトにで
きない)
SMALLINT
INTEGER
DECIMAL
DOUBLE
PRECISION
BOOLEAN※
そのほか
ナル値
0
上記以外
検索結果を long 値にしたもの
ナル値
0
上記以外
検索結果を long 値にしたもの
ナル値
0
Long.MIN_VALUE 以上かつ Long.MAX_VALUE 以下
検索結果の整数部分の値を long 値
にしたもの
ナル値
0
Long.MIN_VALUE 以上かつ Long.MAX_VALUE 以下
検索結果の整数部分の値を long 値
にしたもの
上記以外
SQLException が投入される
ナル値
0
true
1
false
0
該当しません
SQLException が投入される
注※
DatabaseMetadata から生成した Resultset オブジェクトの場合,BOOLEAN 型データが存在します。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列番号を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が long として取得できない場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
396
• JDBC ドライバ内でエラーが発生した場合
6.5.39 getLong(String columnName)
(1) 機能
ResultSet オブジェクトの現在行の列の値を,Java プログラミング言語の long で取得します。値を取得
する列は,引数で指定します。
(2) 形式
public synchronized long getLong(String columnName) throws SQLException
(3) 引数
String columnName:
列名を指定します。
(4) 戻り値
列値が返却されます。
検索結果と戻り値の関係については,「表 6-29 検索結果と戻り値の関係(getLong メソッドの場合)
」を
参照してください。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列名を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が long として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
397
6.5.40 getMetaData()
(1) 機能
この ResultSet オブジェクトのメタ情報を取得します。
(2) 形式
public synchronized ResultSetMetaData getMetaData() throws SQLException
(3) 引数
なし。
(4) 戻り値
この ResultSet オブジェクトのメタ情報が,ResultSetMetaData オブジェクトに格納されて返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
6.5.41 getObject(int columnIndex)
(1) 機能
ResultSet オブジェクトの現在行の列の値を,Java プログラミング言語の Object で取得します。値を取
得する列は,引数で指定します。
(2) 形式
public synchronized Object getObject(int columnIndex) throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
398
(3) 引数
int columnIndex:
列番号を指定します。
(4) 戻り値
列値が Java オブジェクトとして返却されます。
Java オブジェクトの型は,JDBC 仕様で指定されている組み込み型のマッピングに従って,列の SQL 型
に対応するデフォルトの Java オブジェクトの型になります。
検索結果と戻り値の関係を次の表に示します。
表 6‒30 検索結果と戻り値の関係(getObject メソッドの場合)
HADB のデータ型
検索結果
戻り値
CHAR
ナル値
null
上記以外
検索結果
ナル値
null
上記以外
検索結果で生成した Integer オブジェクト
ナル値
null
上記以外
検索結果で生成した Long オブジェクト
ナル値
null
上記以外
検索結果
ナル値
null
上記以外
検索結果で生成した Double オブジェクト
ナル値
null
上記以外
検索結果で生成した java.sql.Date オブジェクト
ナル値
null
上記以外
検索結果で生成した java.sql.Time オブジェクト
ナル値
null
上記以外
検索結果で生成した java.sql.Timestamp オブジェクト
ナル値
null
上記以外
検索結果
ROW
−※1
検索結果
BOOLEAN※2
ナル値
null
VARCHAR
SMALLINT
INTEGER
DECIMAL
DOUBLE PRECISION
DATE
TIME
TIMESTAMP
BINARY
VARBINARY
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
399
HADB のデータ型
検索結果
戻り値
ナル値以外
検索結果で生成した Boolean オブジェクト
注※1
検索結果がナル値になることはありません。
注※2
DatabaseMetadata から生成した Resultset オブジェクトの場合,BOOLEAN 型データが存在します。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列番号を指定した場合
• JDBC ドライバ内でエラーが発生した場合
6.5.42 getObject(String columnName)
(1) 機能
ResultSet オブジェクトの現在行の列の値を,Java プログラミング言語の Object で取得します。値を取
得する列は,引数で指定します。
(2) 形式
public synchronized Object getObject(String columnName) throws SQLException
(3) 引数
String columnName:
列名を指定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
400
(4) 戻り値
列値が Java オブジェクトとして返却されます。検索結果と戻り値の関係については,「表 6-30 検索結果
と戻り値の関係(getObject メソッドの場合)」を参照してください。
Java オブジェクトの型は,JDBC 仕様で指定されている組み込み型のマッピングに従って,列の SQL 型
に対応するデフォルトの Java オブジェクトの型になります。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列名を指定した場合
• JDBC ドライバ内でエラーが発生した場合
6.5.43 getRow()
(1) 機能
現在の行の番号を取得します。最初の行は 1 になり,2 番目は 2 になります。先頭行の前または最終行の
後ろの場合は 0 になります。
(2) 形式
public synchronized int getRow() throws SQLException
(3) 引数
なし。
(4) 戻り値
現在の行番号が返却されます。現在の行が Integer.MAX_VALUE より大きい場合は,
Integer.MAX_VALUE が返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
401
また,最大検索行数が 2,147,483,647 を超える場合は,2,147,483,647 が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
6.5.44 getShort(int columnIndex)
(1) 機能
ResultSet オブジェクトの現在行の列の値を,Java プログラミング言語の short で取得します。値を取得
する列は,引数で指定します。
(2) 形式
public synchronized short getShort(int columnIndex) throws SQLException
(3) 引数
int columnIndex:
列番号を指定します。
(4) 戻り値
列値が返却されます。検索結果と戻り値の関係を次の表に示します。
表 6‒31 検索結果と戻り値の関係(getShort メソッドの場合)
HADB のデータ型
検索結果
戻り値
CHAR
ナル値
0
[半角空白]整数の文字列表現,10 進数の文字列表現,または
浮動小数点数の文字列表現[半角空白]であり,かつ
Short.MIN_VALUE 以上,Short.MAX_VALUE 以下
検索結果の整数部分の値を short 値
にしたもの
VARCHAR
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
402
HADB のデータ型
検索結果
戻り値
[半角空白]整数の文字列表現,10 進数の文字列表現,または
浮動小数点数の文字列表現[半角空白]であり,かつ
Short.MAX_VALUE より大きいか Short.MIN_VALUE より
小さい
SQLException が投入される
[半角空白]-Infinity[半角空白]
[半角空白][+]Infinity[半角空白]
[半角空白][+|-]NaN[半角空白]
上記以外(double 値にできない)
SMALLINT
INTEGER
DECIMAL
DOUBLE
PRECISION
BOOLEAN※
そのほか
ナル値
0
Short.MIN_VALUE 以上かつ Short.MAX_VALUE 以下
検索結果を short 値にしたもの
上記以外
SQLException が投入される
ナル値
0
Short.MIN_VALUE 以上かつ Short.MAX_VALUE 以下
検索結果を short 値にしたもの
上記以外
SQLException が投入される
ナル値
0
Short.MIN_VALUE 以上かつ Short.MAX_VALUE 以下
検索結果の整数部分の値を short 値
にしたもの
上記以外
SQLException が投入される
ナル値
0
Short.MIN_VALUE 以上かつ Short.MAX_VALUE 以下
検索結果の整数部分の値を short 値
にしたもの
上記以外
SQLException が投入される
ナル値
0
true
1
false
0
該当しません
SQLException が投入される
注※
DatabaseMetadata から生成した Resultset オブジェクトの場合,BOOLEAN 型データが存在します。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
403
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列番号を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が short として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6.5.45 getShort(String columnName)
(1) 機能
ResultSet オブジェクトの現在行の列の値を,Java プログラミング言語の short で取得します。値を取得
する列は,引数で指定します。
(2) 形式
public synchronized short getShort(String columnName) throws SQLException
(3) 引数
String columnName:
列名を指定します。
(4) 戻り値
列値が返却されます。検索結果と戻り値の関係については,「表 6-31 検索結果と戻り値の関係(getShort
メソッドの場合)」を参照してください。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
404
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列名を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が short として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6.5.46 getStatement()
(1) 機能
この ResultSet オブジェクトを生成した Statement オブジェクトを取得します。
(2) 形式
public synchronized Statement getStatement() throws SQLException
(3) 引数
なし。
(4) 戻り値
ResultSet オブジェクトを生成した Statement オブジェクトが返却されます。結果集合が
DatabaseMetaData インタフェースのメソッドで生成された場合は,null が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
405
6.5.47 getString(int columnIndex)
(1) 機能
ResultSet オブジェクトの現在行の列の値を,Java プログラミング言語の String で取得します。値を取得
する列は,引数で指定します。
(2) 形式
public synchronized String getString(int columnIndex) throws SQLException
(3) 引数
int columnIndex:
列番号を指定します。
(4) 戻り値
列値が返却されます。検索結果と戻り値の関係を次の表に示します。
表 6‒32 検索結果と戻り値の関係(getString メソッドの場合)
HADB のデータ型
検索結果
戻り値
CHAR
ナル値
null
上記以外
検索結果
ナル値
null
上記以外
検索結果を文字列表現にした String オブジェクト
ナル値
null
上記以外
検索結果を文字列表現にした String オブジェクト
ナル値
null
上記以外
検索結果を文字列表現にした String オブジェクト
DOUBLE
PRECISION
ナル値
null
上記以外
検索結果を文字列表現にした String オブジェクト
DATE
ナル値
null
上記以外
YYYY-MM-DD 形式の文字列の String オブジェクト
ナル値
null
上記以外
hh:mm:ss[.f...]形式の文字列の String オブジェクト
ナル値
null
VARCHAR
SMALLINT
INTEGER
DECIMAL
TIME
TIMESTAMP
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
406
HADB のデータ型
BINARY
VARBINARY
BOOLEAN※
検索結果
戻り値
上記以外
YYYY-MM-DD△hh:mm:ss[.f...]形式(△は半角空白)の文字列の String
オブジェクト
ナル値
null
上記以外
検索結果
ナル値
null
true
文字列"true"の String オブジェクト
false
文字列"false"の String オブジェクト
注※
DatabaseMetadata から生成した Resultset オブジェクトの場合,BOOLEAN 型データが存在します。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列番号を指定した場合
• エンコードに失敗した場合
• このメソッドでは取得できないデータ型の場合
• JDBC ドライバ内でエラーが発生した場合
6.5.48 getString(String columnName)
(1) 機能
ResultSet オブジェクトの現在行の列の値を,Java プログラミング言語の String で取得します。値を取得
する列は,引数で指定します。
(2) 形式
public synchronized String getString(String columnName) throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
407
(3) 引数
String columnName:
列名を指定します。
(4) 戻り値
列値が返却されます。検索結果と戻り値の関係については,「表 6-32 検索結果と戻り値の関係(getString
メソッドの場合)」を参照してください。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列名を指定した場合
• エンコードに失敗した場合
• このメソッドでは取得できないデータ型の場合
• JDBC ドライバ内でエラーが発生した場合
6.5.49 getTime(int columnIndex)
(1) 機能
ResultSet オブジェクトの現在行の列の値を java.sql.Time オブジェクトに取得します。値を取得する列
は,引数で指定します。
(2) 形式
public synchronized java.sql.Time getTime(int columnIndex) throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
408
(3) 引数
int columnIndex:
列番号を指定します。
(4) 戻り値
列値が返却されます。検索結果と戻り値の関係を次の表に示します。
DATE 型,TIME 型,TIMESTAMP 型,または文字列型(CHAR,VARCHAR)の変換については,
「5.6.2(2) getXXX メソッド実行時のデータ変換処理(DATE 型,TIME 型,TIMESTAMP 型,または
文字列型の場合)」を参照してください。
表 6‒33 検索結果と戻り値の関係(getTime メソッドの場合)
HADB のデータ型
検索結果
戻り値
CHAR
ナル値
null
[半角空白]時刻形式※[半角空白]
検索結果の前後の半角空白を取り除き java.sql.Time オブジェク
トにしたもの
上記以外
SQLException が投入される
ナル値
null
上記以外
検索結果を java.sql.Time オブジェクトにしたもの
ナル値
null
上記以外
検索結果を java.sql.Time オブジェクトにしたもの
該当しません
SQLException が投入される
VARCHAR
TIME
TIMESTAMP
そのほか
注※
時刻形式とは,'hh:mm:ss[.f...]'で表される文字列表現のことです。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列番号を指定した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
409
• このメソッドでは取得できないデータ型の場合
• 列の値が java.sql.Time として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6.5.50 getTime(int columnIndex, Calendar cal)
(1) 機能
ResultSet オブジェクトの現在行の列の値を java.sql.Time オブジェクトに取得します。値を取得する列
は,引数で指定します。
このメソッドは,指定されたカレンダーを使って時刻に適切なミリ秒値を作成します。
(2) 形式
public synchronized java.sql.Time getTime(int columnIndex, Calendar cal) throws SQLException
(3) 引数
int columnIndex:
列番号を指定します。
Calendar cal:
データベースに格納されている値のタイムゾーンが設定されたカレンダーを指定します。
(4) 戻り値
列値が返却されます。検索結果と戻り値の関係については,「表 6-33 検索結果と戻り値の関係(getTime
メソッドの場合)」を参照してください。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列番号を指定した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
410
• このメソッドでは取得できないデータ型の場合
• 列の値が java.sql.Time として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6.5.51 getTime(String columnName)
(1) 機能
ResultSet オブジェクトの現在行の列の値を java.sql.Time オブジェクトに取得します。値を取得する列
は,引数で指定します。
(2) 形式
public synchronized java.sql.Time getTime(String columnName) throws SQLException
(3) 引数
String columnName:
列名を指定します。
(4) 戻り値
列値が返却されます。検索結果と戻り値の関係については,「表 6-33 検索結果と戻り値の関係(getTime
メソッドの場合)
」を参照してください。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列名を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が java.sql.Time として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
411
6.5.52 getTime(String columnName, Calendar cal)
(1) 機能
ResultSet オブジェクトの現在行の列の値を java.sql.Time オブジェクトに取得します。値を取得する列
は,引数で指定します。
このメソッドは,指定されたカレンダーを使って時刻に適切なミリ秒値を作成します。
(2) 形式
public synchronized java.sql.Time getTime(String columnName, Calendar cal) throws
SQLException
(3) 引数
String columnName:
列名を指定します。
Calendar cal:
データベースに格納されている値のタイムゾーンが設定されたカレンダーを指定します。
(4) 戻り値
列値が返却されます。検索結果と戻り値の関係については,「表 6-33 検索結果と戻り値の関係(getTime
メソッドの場合)」を参照してください。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列名を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が java.sql.Time として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
412
6.5.53 getTimestamp(int columnIndex)
(1) 機能
ResultSet オブジェクトの現在行の列の値を java.sql.Timestamp オブジェクトに取得します。値を取得
する列は,引数で指定します。
(2) 形式
public synchronized java.sql.Timestamp getTimestamp(int columnIndex) throws SQLException
(3) 引数
int columnIndex:
列番号を指定します。
(4) 戻り値
列値が返却されます。検索結果と戻り値の関係を次の表に示します。
DATE 型,TIME 型,TIMESTAMP 型または文字列型(CHAR,VARCHAR)の変換については,
「5.6.2(2) getXXX メソッド実行時のデータ変換処理(DATE 型,TIME 型,TIMESTAMP 型,または
文字列型の場合)」を参照してください。
表 6‒34 検索結果と戻り値の関係(getTimestamp メソッドの場合)
HADB のデータ型
検索結果
戻り値
CHAR
ナル値
null
[半角空白]時刻印形式※[半角空白]
検索結果の前後の半角空白を取り除き java.sql.Timestamp オ
ブジェクトにしたもの
上記以外
SQLException が投入される
ナル値
null
上記以外
検索結果を java.sql.Timestamp オブジェクトにしたもの
ナル値
null
上記以外
検索結果を java.sql.Timestamp オブジェクトにしたもの
ナル値
null
上記以外
検索結果を java.sql.Timestamp オブジェクトにしたもの
該当しません
SQLException が投入される
VARCHAR
DATE
TIME
TIMESTAMP
そのほか
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
413
注※
時刻印形式とは,'YYYY-MM-DD hh:mm:ss[.f...]'で表される文字列表現のことです。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列番号を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が java.sql.Timestamp として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6.5.54 getTimestamp(int columnIndex, Calendar cal)
(1) 機能
ResultSet オブジェクトの現在行の列の値を java.sql.Timestamp オブジェクトに取得します。値を取得
する列は,引数で指定します。
このメソッドは,指定されたカレンダーを使ってタイムスタンプに適切なミリ秒値を作成します。
(2) 形式
public synchronized java.sql.Timestamp getTimestamp(int columnIndex, Calendar cal) throws
SQLException
(3) 引数
int columnIndex:
列番号を指定します。
Calendar cal:
データベースに格納されている値のタイムゾーンが設定されたカレンダーを指定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
414
(4) 戻り値
列値が返却されます。検索結果と戻り値の関係については,「表 6-34 検索結果と戻り値の関係
(getTimestamp メソッドの場合)」を参照してください。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列番号を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が java.sql.Timestamp として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6.5.55 getTimestamp(String columnName)
(1) 機能
ResultSet オブジェクトの現在行の列の値を java.sql.Timestamp オブジェクトに取得します。値を取得
する列は,引数で指定します。
(2) 形式
public synchronized java.sql.Timestamp getTimestamp(String columnName) throws SQLException
(3) 引数
String columnName:
列名を指定します。
(4) 戻り値
列値が返却されます。検索結果と戻り値の関係については,「表 6-34 検索結果と戻り値の関係
(getTimestamp メソッドの場合)」を参照してください。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
415
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列名を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が java.sql.Timestamp として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6.5.56 getTimestamp(String columnName, Calendar cal)
(1) 機能
ResultSet オブジェクトの現在行の列の値を java.sql.Timestamp オブジェクトに取得します。値を取得
する列は,引数で指定します。
このメソッドは,指定されたカレンダーを使ってタイムスタンプに適切なミリ秒値を作成します。
(2) 形式
public synchronized java.sql.Timestamp getTimestamp(String columnName, Calendar cal) throws
SQLException
(3) 引数
String columnName:
列名を指定します。
Calendar cal:
データベースに格納されている値のタイムゾーンが設定されたカレンダーを指定します。
(4) 戻り値
列値が返却されます。検索結果と戻り値の関係については,「表 6-34 検索結果と戻り値の関係
(getTimestamp メソッドの場合)」を参照してください。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
416
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• 存在しない列名を指定した場合
• このメソッドでは取得できないデータ型の場合
• 列の値が java.sql.Timestamp として取得できない場合
• JDBC ドライバ内でエラーが発生した場合
6.5.57 getType()
(1) 機能
ResultSet オブジェクトの型を返します。
(2) 形式
public synchronized int getType() throws SQLException
(3) 引数
なし。
(4) 戻り値
次に示すどちらかの値が返却されます。
ResultSet.TYPE_FORWARD_ONLY:
カーソルが順方向にだけ移動できます。
ResultSet.TYPE_SCROLL_INSENSITIVE:
カーソルがスクロールできますが,値の変更は反映されません。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
417
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
6.5.58 getWarnings()
(1) 機能
この ResultSet オブジェクトに関する呼び出しによって報告される,最初の警告を取得します。2 つ以上
の警告がある場合,後続の警告は最初の警告にチェーンされ,直前に取得された警告の SQLWarning オ
ブジェクトの getNextWarning メソッドを呼び出すことによって取得されます。
(2) 形式
public synchronized SQLWarning getWarnings() throws SQLException
(3) 引数
なし。
(4) 戻り値
最初の SQLWarning オブジェクトが返却されます。SQLWarning オブジェクトがない場合は null が返
却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
418
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
6.5.59 isAfterLast()
(1) 機能
ResultSet オブジェクトの最終行の後ろに,カーソルがあるかどうかの情報を取得します。
(2) 形式
public synchronized boolean isAfterLast() throws SQLException
(3) 引数
なし。
(4) 戻り値
カーソルが最終行の後ろにある場合は,true が返却されます。最終行の後ろにない場合,または結果集合
の行数が 0 行の場合は,false が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• データベースのアクセスエラーが発生した場合
6.5.60 isBeforeFirst()
(1) 機能
ResultSet オブジェクトの先頭行の前に,カーソルがあるかどうかの情報を取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
419
(2) 形式
public synchronized boolean isBeforeFirst() throws SQLException
(3) 引数
なし。
(4) 戻り値
カーソルが先頭行の前にある場合は,true が返却されます。先頭行の前にない場合,または結果集合の行
数が 0 行の場合は,false が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• データベースのアクセスエラーが発生した場合
6.5.61 isClosed()
(1) 機能
この ResultSet オブジェクトがクローズされているかどうかを示す値を取得します。
close メソッドを実行したあとに,このメソッドが実行された場合にだけ,true を返却することを保証し
ます。
(2) 形式
public synchronized boolean isClosed() throws SQLException
(3) 引数
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
420
(4) 戻り値
この ResultSet オブジェクトがクローズされている場合は,true が返却されます。ResultSet オブジェク
トがクローズされていない場合は,false が返却されます。
(5) 発生する例外
なし。
6.5.62 isFirst()
(1) 機能
ResultSet オブジェクトの先頭行に,カーソルがあるかどうかの情報を取得します。
(2) 形式
public synchronized boolean isFirst() throws SQLException
(3) 引数
なし。
(4) 戻り値
カーソルが先頭行にある場合は true が,そうでない場合は false が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
421
6.5.63 isLast()
(1) 機能
ResultSet オブジェクトの最終行に,カーソルがあるかどうかの情報を取得します。
(2) 形式
public synchronized boolean isLast() throws SQLException
(3) 引数
なし。
(4) 戻り値
カーソルが最終行にある場合は true が,そうでない場合は false が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• データベースのアクセスエラーが発生した場合
6.5.64 last()
(1) 機能
ResultSet オブジェクトの最終行に,カーソルを移動します。
(2) 形式
public synchronized boolean last() throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
422
(3) 引数
なし。
(4) 戻り値
カーソルが最終行に移動した場合は true が,結果集合の行数が 0 の場合は false が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• この ResultSet オブジェクトの型が ResultSet.TYPE_FORWARD_ONLY の場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• データベースのアクセスエラーが発生した場合
6.5.65 next()
(1) 機能
カーソルを次の行に移動します。カーソルが先頭行の前にある場合は先頭行に,最終行にある場合は最終
行の後ろに移動します。
(2) 形式
public synchronized boolean next() throws SQLException
(3) 引数
なし。
(4) 戻り値
このメソッドを実行したことによって,カーソルの位置が先頭行の前または最終行の後ろに移動した場合
は false が,そうでない場合は true が返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
423
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• データベースのアクセスエラーが発生した場合
6.5.66 previous()
(1) 機能
カーソルを 1 つ前の行に移動します。
(2) 形式
public synchronized boolean previous() throws SQLException
(3) 引数
なし。
(4) 戻り値
このメソッドを実行したことによって,カーソルの位置が先頭行の前に移動した場合は false が,そうで
ない場合は true が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• この ResultSet オブジェクトの型が ResultSet.TYPE_FORWARD_ONLY の場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
424
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
6.5.67 relative(int rows)
(1) 機能
カーソルを移動します。
(2) 形式
public synchronized boolean relative(int rows) throws SQLException
(3) 引数
int rows:
カーソルの移動行数(現在の行から移動する行数)を指定します。
正の値を指定した場合,カーソルは順方向に移動します。負の値を指定した場合は逆方向に移動します。
(4) 戻り値
このメソッドを実行したことによって,カーソルの位置が先頭行の前または最終行の後ろに移動した場合
は false が,そうでない場合は true が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• この ResultSet オブジェクトの型が ResultSet.TYPE_FORWARD_ONLY の場合
• 現在の位置が取得できない場合
• 現在のカーソル位置が有効な行にない場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• データベースのアクセスエラーが発生した場合
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
425
6.5.68 setFetchDirection(int direction)
(1) 機能
ResultSet オブジェクトのフェッチ方向を設定します。
(2) 形式
public synchronized void setFetchDirection(int direction) throws SQLException
(3) 引数
int direction:
フェッチ方向を指定します。
ResultSet.FETCH_FORWARD だけを指定できます。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• direction に ResultSet.FETCH_FORWARD 以外が指定された場合
6.5.69 setFetchSize(int rows)
(1) 機能
ResultSet オブジェクトを検索する際のフェッチサイズ(フェッチする行数)を設定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
426
(2) 形式
public synchronized void setFetchSize(int rows) throws SQLException
(3) 引数
int rows:
フェッチする行数を 0〜65,535 の範囲で指定します。
0 を指定した場合は,システムプロパティ,ユーザプロパティ,または接続用の URL のプロパティの
adb_clt_fetch_size の値を基に検索が実施されます。
このメソッドを実行しない場合,Statement オブジェクトに指定した行数値を基に検索が実施されま
す。Statement オブジェクトに行数値を指定していない,または Statement オブジェクトから生成し
た ResultSet オブジェクトでない場合は,プロパティの adb_clt_fetch_size の値を基に検索が実施さ
れます。
(4) 戻り値
なし。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
• rows に 0〜65,535 以外の値を指定した場合
• rows に指定した値が,最大格納行数(この ResultSet オブジェクトを生成した Statement オブジェク
トの setMaxRows メソッドの設定値)よりも大きい場合
(6) 留意事項
留意事項については,「6.3.29(6) 留意事項」を参照してください。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
427
6.5.70 wasNull()
(1) 機能
最後に取得した列の値がナル値かどうかの情報を返します。
(2) 形式
public synchronized boolean wasNull() throws SQLException
(3) 引数
なし。
(4) 戻り値
最後に取得した列の値がナル値の場合は true が,そうでない場合は false が返却されます。
getXXX メソッドによって列の値を取得する前は,false が返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• この ResultSet オブジェクトがクローズされている場合
この ResultSet オブジェクトを生成した Statement オブジェクトがクローズされたことによって,
ResultSet オブジェクトがクローズされた場合も含みます。
• この ResultSet オブジェクトを生成した Statement オブジェクトを作成した Connection がクローズ
されている場合
• トランザクションの決着によって ResultSet オブジェクトが無効になった場合
6.5.71 ResultSet インタフェースでサポートしているフィールド
ResultSet インタフェースでサポートしているフィールドを次の表に示します。
表 6‒35 ResultSet インタフェースでサポートしているフィールド
フィールド
備考
public static final int FETCH_FORWARD
−
public static final int FETCH_REVERSE
−
public static final int FETCH_UNKNOWN
−
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
428
フィールド
備考
public static final int TYPE_FORWARD_ONLY
−
public static final int TYPE_SCROLL_INSENSITIVE
−
public static final int TYPE_SCROLL_SENSITIVE
この値が指定された場合,TYPE_SCROLL_INSENSITIVE
が指定されたと仮定されます。
public static final int CONCUR_READ_ONLY
−
public static final int CONCUR_UPDATABLE
この値が指定された場合,CONCUR_READ_ONLY が指定
されたと仮定されます。
public static final int
HOLD_CURSORS_OVER_COMMIT
この値が指定された場合でも,トランザクションが決着すると
ResultSet オブジェクトが無効となります。
public static final int CLOSE_CURSORS_AT_COMMIT
この値が指定された場合,
HOLD_CURSORS_OVER_COMMIT が指定されたと仮定さ
れます。ただし,トランザクションが決着すると ResultSet オ
ブジェクトは無効となります。
(凡例)−:特にありません。
6.5.72 ResultSet インタフェースに関する注意事項
(1) getXXX メソッドによる値の取得
• getXXX メソッドによってマッピングできるかどうかについては,「5.6.1(2) 検索データ取得時のマッ
ピング」を参照してください。
• getXXX メソッドに指定した列番号または列名称が存在しない場合は,SQLException が投入されます。
• getXXX メソッドに指定する値が,実際の値を表現できない場合(例:INTEGER 型の 40,000 という
値を getShort で取得する場合)
,オーバフローによって SQLException が投入されます。オーバフロー
が発生するおそれがある getXXX メソッドと HADB のデータ型の組み合わせについては,「5.6.3 オーバフローが発生したときの処理」を参照してください。
(2) データマッピング(変換)
検索データ取得時に使用する getXXX メソッドによってマッピングできるかどうかについては,「5.6.1(2) 検索データ取得時のマッピング」を参照してください。マッピングできない JDBC の SQL データ型に対
して getXXX メソッドが呼び出された場合,SQLException が投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
429
(3) 結果セットタイプが ResultSet.TYPE_SCROLL_INSENSITIVE,または
ResultSet.TYPE_SCROLL_SENSITIVE の場合のメモリ使用量
結果セットタイプが ResultSet.TYPE_SCROLL_INSENSITIVE または
ResultSet.TYPE_SCROLL_SENSITIVE のときに,ResultSet インタフェースの次に示すメソッドを実行
すると,検索結果蓄積用のメモリを JDBC ドライバが確保します。
• ResultSet.next メソッド
• ResultSet.last メソッド
• ResultSet.absolute メソッド
• ResultSet.relative メソッド
• ResultSet.afterLast メソッド
JDBC ドライバは,検索結果中の値ごとにメモリオブジェクトを割り当てて蓄積します。値が可変長であ
る場合,メモリオブジェクトは検索データの実サイズに合わせた大きさとなります。
(4) next,absolute,relative,last,および afterLast メソッド
next メソッドを実行すると,JDBC ドライバは次の表に示すようにデータベースからデータを取得,蓄積
します。
表 6‒36 next メソッド実行時の,データベースからのデータの取得,蓄積
状態
結果セットタイプ
ResultSet.TYPE_FORWARD_ONLY
ResultSet.TYPE_SCROLL_INSENSITIVE,
または
ResultSet.TYPE_SCROLL_SENSITIVE
next メソッドで移動した現在行の
データを JDBC ドライバ内に読み込
んでいない
遷移した現在行を接続先のデータベース
から取得します。
next メソッドで移動した現在行の
データを JDBC ドライバ内に読み込
んでいる
遷移した現在行をデータベースから取得し,
JDBC ドライバのメモリに読み込み,蓄積し
ます。
データベースからデータを取得しません。
absolute,relative,last,および afterLast メソッドを実行すると,JDBC ドライバは次の表に示すよう
にデータベースからデータを取得,蓄積します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
430
表 6‒37 absolute,relative,last,および afterLast メソッド実行時の,データベースからの
データの取得,蓄積
状態
結果セットタイプが
ResultSet.TYPE_SCROLL_INSENSITIVE,
または ResultSet.TYPE_SCROLL_SENSITIVE
検索結果の先頭行から指定行※までに,JDBC ドライバ
が読み込んでいないデータがある
読み込んでいない行をデータベースから取得し,JDBC ドライバの
メモリに蓄積します。
検索結果の先頭行から指定行※まで,JDBC ドライバは
データを読み込んでいる
データベースからデータを取得しません。
注
結果セットタイプが ResultSet.TYPE_FORWARD_ONLY の場合,SQLException が投入されます。
注※
last メソッドおよび afterLast メソッドの場合,先頭行から最終行になります。
(5) getAsciiStream および getCharacterStream メソッドに関する注意
事項
getAsciiStream および getCharacterStream メソッドによって返却されたオブジェクトは,JDBC ドライ
バが暗黙的にクローズすることはありません。メソッドの呼び出し側で close メソッドを実行してください。
(6) 検索結果行数の上限
ResultSet オブジェクトが HADB サーバから取得できる検索結果の行数を次の表に示します。次の表に示
す行以上の検索結果は,JDBC ドライバが破棄します。
表 6‒38 ResultSet オブジェクトが HADB サーバから取得できる検索結果の行数
ResultSet オブジェクト
結果セットタイプ
ResultSet.TYPE_SCROLL_INSENSITIVE,
左記以外
または ResultSet.TYPE_SCROLL_SENSITIVE
setMaxRows メソッドを実行した
Statement オブジェクトから生成し
た ResultSet オブジェクト
上記以外の ResultSet オブジェクト
検索結果行数は,setMaxRows メソッドで指定した行数です。
検索結果行数は,setMaxRows メソッドの上限
(2,147,483,647)です。
上限はありません。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
431
6.6 DatabaseMetaData インタフェース
ここでは,DatabaseMetaData インタフェースで提供されているメソッドについて説明します。
6.6.1 DatabaseMetaData インタフェースのメソッド一覧
(1) DatabaseMetaData インタフェースの主な機能
DatabaseMetaData インタフェースでは,主に次の機能が提供されています。
• 接続先のデータベースに関する各種情報の返却
• 表一覧,列一覧などの一覧情報の返却(ResultSet(結果セット)に格納)
(2) HADB でサポートしている DatabaseMetaData インタフェースのメ
ソッド
HADB でサポートしている DatabaseMetaData インタフェースのメソッドの一覧を次の表に示します。
表 6‒39 DatabaseMetaData インタフェースのメソッドの一覧
項番
DatabaseMetaData インタフェースのメソッド
機能
1
allProceduresAreCallable()
getProcedures メソッドによって返されるすべてのプロシジャ
が,現在の HADB ユーザから呼び出せるかどうかを取得しま
す。
2
allTablesAreSelectable()
getTables メソッドによって返されるすべての表が,現在の
HADB ユーザによって使用できるかどうかを取得します。
3
autoCommitFailureClosesAllResultSets()
自動コミットモード有効時に SQLException が発生した場合,
すべてのオープンされた ResultSet がクローズされるかどうか
を返却します。
4
dataDefinitionCausesTransactionCommit()
トランザクションのデータ定義文が,トランザクションを強制
的にコミットさせるかどうかを取得します。
5
dataDefinitionIgnoredInTransactions()
トランザクションでデータ定義文が無視されるかどうかを取得
します。
6
deletesAreDetected(int type)
ResultSet クラスの rowDeleted メソッドを呼び出すことに
よって可視の行が削除されたことを検出できるかどうかを取得
します。
7
doesMaxRowSizeIncludeBlobs()
getMaxRowSize メソッドの戻り値が SQL データの型の
LONGVARCHAR および LONGVARBINARY を含むかど
うかを取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
432
項番
DatabaseMetaData インタフェースのメソッド
機能
8
getAttributes(String catalog, String
schemaPattern, String typeNamePattern, String
attributeNamePattern)
指定されたスキーマおよびカタログで使用可能なユーザ定義の
型 (UDT)のための指定された型の指定された属性に関する記
述を取得します。
9
getBestRowIdentifier(String catalog, String
schema, String table, int scope, boolean
nullable)
行を一意に識別する表の最適な列セットに関する記述を取得し
ます。
10
getCatalogs()
カタログ名を取得します。
11
getCatalogSeparator()
カタログ名と表名のセパレータを取得します。
12
getCatalogTerm()
catalog に対する推奨用語を取得します。
13
getClientInfoProperties()
ドライバがサポートするクライアント情報プロパティのリスト
を返却します。
14
getColumnPrivileges(String catalog, String
schema, String table, String
columnNamePattern)
表の列へのアクセス権に関する記述を取得します。
15
getColumns(String catalog, String
schemaPattern, String tableNamePattern,
String columnNamePattern)
表の列情報を取得します。
16
getConnection()
この DatabaseMetaData インスタンスを生成した
Connection インスタンスを取得します。
17
getCrossReference(String parentCatalog, String
parentSchema, String parentTable, String
foreignCatalog, String foreignSchema, String
foreignTable)
指定された参照表と指定された被参照表とのクロスリファレン
ス情報を取得します。
18
getDatabaseMajorVersion()
データベース(HADB サーバ)のメジャーバージョンを取得
します。
19
getDatabaseMinorVersion()
データベース(HADB サーバ)のマイナーバージョンを取得
します。
20
getDatabaseProductName()
接続するデータベース(HADB サーバ)の製品名称を取得し
ます。
21
getDatabaseProductVersion()
接続するデータベース(HADB サーバ)のバージョンを取得
します。
22
getDefaultTransactionIsolation()
このデータベースのデフォルトのトランザクション隔離性水準
を取得します。
23
getDriverMajorVersion()
JDBC ドライバのメジャーバージョンを取得します。
24
getDriverMinorVersion()
JDBC ドライバのマイナーバージョンを取得します。
25
getDriverName()
JDBC ドライバの名前を取得します。
26
getDriverVersion()
JDBC ドライバのバージョンを取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
433
項番
DatabaseMetaData インタフェースのメソッド
機能
27
getExportedKeys(String catalog, String schema,
String table)
参照表の外部キーに関する情報を取得します。
28
getExtraNameCharacters()
二重引用符(")で囲まれていない識別名に使用できるすべて
の特殊文字を取得します。
29
getFunctionColumns(String catalog, String
schemaPattern, String functionNamePattern,
String columnNamePattern)
関数のパラメタおよび返される型に関する情報を返却します。
30
getFunctions(String catalog, String
schemaPattern, String functionNamePattern)
関数に関する情報を返却します。
31
getIdentifierQuoteString()
SQL 識別子を引用するのに使用する文字列を取得します。
32
getImportedKeys(String catalog, String schema,
String table)
被参照表の主キーに関する情報を取得します。
33
getIndexInfo(String catalog, String schema,
String table, boolean unique, boolean
approximate)
インデクスに関する情報を取得します。
34
getJDBCMajorVersion()
ドライバの JDBC メジャーバージョンを取得します。
35
getJDBCMinorVersion()
ドライバの JDBC マイナーバージョンを取得します。
36
getMaxBinaryLiteralLength()
バイナリリテラル中に入れることができる 16 進数の最大文字
数を取得します。
37
getMaxCatalogNameLength()
カタログ名の最大文字数を取得します。
38
getMaxCharLiteralLength()
文字データとして指定できる最大文字数を取得します。
39
getMaxColumnNameLength()
列名に指定できる最大文字数を取得します。
40
getMaxColumnsInGroupBy()
GROUP BY 句中に指定できるグループ化列の数の最大値を取
得します。
41
getMaxColumnsInIndex()
インデクス構成列数の最大値を取得します。
42
getMaxColumnsInOrderBy()
ORDER BY 句中に指定できる列数の最大値を取得します。
43
getMaxColumnsInSelect()
選択リストに指定できる選択式の最大数を取得します。
44
getMaxColumnsInTable()
表に定義できる列数の最大値を取得します。
45
getMaxConnections()
同時に HADB サーバに接続できる HADB クライアントの最
大数を取得します。
46
getMaxCursorNameLength()
カーソル名の最大文字数を取得します。
47
getMaxIndexLength()
インデクスのキー長の最大値を取得します。
48
getMaxProcedureNameLength()
プロシジャ名の最大文字数を取得します。
49
getMaxRowSize()
1 行の最大バイト数を取得します。
50
getMaxSchemaNameLength()
スキーマ名の最大文字数を取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
434
項番
DatabaseMetaData インタフェースのメソッド
機能
51
getMaxStatementLength()
SQL 文に指定できる文字列長の最大値を取得します。
52
getMaxStatements()
同時実行できる SQL 文の最大数を取得します。
53
getMaxTableNameLength()
表名に指定できる最大文字数を取得します。
54
getMaxTablesInSelect()
SELECT 文中に指定できる表数の最大値を取得します。
55
getMaxUserNameLength()
認可識別子の最大文字数を取得します。
56
getNumericFunctions()
使用できる数学関数をコンマで区切ったリストで取得します。
57
getPrimaryKeys(String catalog, String schema,
String table)
指定された表の主キー列の記述を取得します。
58
getProcedureColumns(String catalog, String
schemaPattern, String procedureNamePattern,
String columnNamePattern)
ストアドプロシジャパラメタに関する記述を取得します。
59
getProcedures(String catalog, String
schemaPattern, String procedureNamePattern)
ストアドプロシジャに関する記述を取得します。
60
getProcedureTerm()
procedure に対する推奨用語を取得します。
61
getResultSetHoldability()
ResultSet オブジェクトのデフォルトの保持機能を取得します。
62
getRowIdLifetime()
RowId 型をサポートしているかどうかを示します。また,サ
ポートしている場合は,RowId オブジェクトが有効である期
間も示します。
63
getSchemas()
スキーマ名を取得します。
64
getSchemas(String catalog, String
schemaPattern)
スキーマ名を取得します。
65
getSchemaTerm()
schema に対する推奨用語を取得します。
66
getSearchStringEscape()
ワイルドカード文字をエスケープするために使用する文字列を
取得します。
67
getSQLKeywords()
データベース固有の SQL キーワードであり,かつ SQL:2003
のキーワードではないすべてのキーワードを,コンマで区切っ
たリストで取得します。
68
getSQLStateType()
SQLException クラスの getSQLState メソッドによって返さ
れる SQLSTATE が X/Open(現在は Open Group)の
SQL CLI であるか SQL:2003 であるかを取得します。
69
getStringFunctions()
使用できる文字列関数をコンマで区切ったリストで取得します。
70
getSuperTables(String catalog, String
schemaPattern, String tableNamePattern)
特定のスキーマで定義されているテーブル階層の情報を取得し
ます。
71
getSuperTypes(String catalog, String
schemaPattern, String typeNamePattern)
特定のスキーマで定義されているユーザ定義型(UDT)階層
の情報を取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
435
項番
DatabaseMetaData インタフェースのメソッド
機能
72
getSystemFunctions()
使用できるシステム関数をコンマで区切ったリストで取得しま
す。
73
getTablePrivileges(String catalog, String
schemaPattern, String tableNamePattern)
表に対するアクセス権限に関する情報を取得します。
74
getTables(String catalog, String schemaPattern,
String tableNamePattern, String[] types)
表に関する情報を取得します。
75
getTableTypes()
表の種類を取得します。
76
getTimeDateFunctions()
使用できる時間関数と日付関数をコンマで区切ったリストで取
得します。
77
getTypeInfo()
標準 SQL の型に関する情報を取得します。
78
getUDTs(String catalog, String schemaPattern,
String typeNamePattern, int[] types)
ユーザ定義型(UDT)に関する情報を取得します。
79
getURL()
HADB サーバの接続先情報を指定した URL を取得します。
80
getUserName()
HADB サーバに接続した認可識別子を取得します。
81
getVersionColumns(String catalog, String
schema, String table)
行の任意の値が変更された場合に,自動的に更新される表の列
に関する記述を取得します。
82
insertsAreDetected(int type)
ResultSet クラスの rowInserted メソッドを呼び出すことに
よって可視の行が挿入されたことを検出できるかどうかを取得
します。
83
isCatalogAtStart()
完全修飾された表名の開始部分(または終了部分)にカタログ
が現れるかどうかを取得します。
84
isReadOnly()
読み取り専用モードかどうかを取得します。
85
locatorsUpdateCopy()
LOB への変更が,コピーに対して行われたのか,LOB に直接
行われたのかを示します。
86
nullPlusNonNullIsNull()
ナル値と非ナル値の連結をナル値とするかどうかを取得します。
87
nullsAreSortedAtEnd()
ナル値が,終了時にソート順に関係なくソートされるかどうか
を取得します。
88
nullsAreSortedAtStart()
ナル値が,開始時にソート順に関係なくソートされるかどうか
を取得します。
89
nullsAreSortedHigh()
ナル値が高位にソートされるかどうかを取得します。
90
nullsAreSortedLow()
ナル値が下位にソートされるかどうかを取得します。
91
othersDeletesAreVisible(int type)
ほかで行われた削除が可視かどうかを取得します。
92
othersInsertsAreVisible(int type)
ほかで行われた挿入が可視かどうかを取得します。
93
othersUpdatesAreVisible(int type)
ほかで行われた更新が可視かどうかを取得します。
94
ownDeletesAreVisible(int type)
結果セット自身の削除が可視かどうかを取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
436
項番
DatabaseMetaData インタフェースのメソッド
機能
95
ownInsertsAreVisible(int type)
結果セット自身の挿入が可視かどうかを取得します。
96
ownUpdatesAreVisible(int type)
結果セット自身の更新が可視かどうかを取得します。
97
storesLowerCaseIdentifiers()
大文字と小文字が混在する二重引用符なしの SQL 識別子を,
大文字と小文字を区別しないで処理し,小文字で格納するかど
うかを取得します。
98
storesLowerCaseQuotedIdentifiers()
大文字と小文字が混在する二重引用符付きの SQL 識別子を,
大文字と小文字を区別しないで処理し,小文字で格納するかど
うかを取得します。
99
storesMixedCaseIdentifiers()
大文字と小文字が混在する二重引用符なしの SQL 識別子を,
大文字と小文字を区別しないで処理し,大文字と小文字混在で
格納するかどうかを取得します。
100
storesMixedCaseQuotedIdentifiers()
大文字と小文字が混在する二重引用符付きの SQL 識別子を,
大文字と小文字を区別しないで処理し,大文字と小文字混在で
格納するかどうかを取得します。
101
storesUpperCaseIdentifiers()
大文字と小文字が混在する二重引用符なしの SQL 識別子を,
大文字と小文字を区別しないで処理し,大文字で格納するかど
うかを取得します。
102
storesUpperCaseQuotedIdentifiers()
大文字と小文字が混在する二重引用符付きの SQL 識別子を,
大文字と小文字を区別しないで処理し,大文字で格納するかど
うかを取得します。
103
supportsAlterTableWithAddColumn()
列追加のある ALTER TABLE がサポートされているかどうか
を取得します。
104
supportsAlterTableWithDropColumn()
列削除のある ALTER TABLE がサポートされているかどうか
を取得します。
105
supportsANSI92EntryLevelSQL()
ANSI92 エントリレベルの SQL 文法がサポートされているか
どうかを取得します。
106
supportsANSI92FullSQL()
ANSI92 完全レベルの SQL 文法がサポートされているかどう
かを取得します。
107
supportsANSI92IntermediateSQL()
ANSI92 中間レベルの SQL 文法がサポートされているかどう
かを取得します。
108
supportsBatchUpdates()
バッチ更新がサポートされているかどうかを取得します。
109
supportsCatalogsInDataManipulation()
データ操作文でカタログ名を使用できるかどうかを取得します。
110
supportsCatalogsInIndexDefinitions()
インデクス定義文でカタログ名を使用できるかどうかを取得し
ます。
111
supportsCatalogsInPrivilegeDefinitions()
権限付与の定義文(GRANT 文)
,または権限取り消しの定義
文(REVOKE 文)で,カタログ名を使用できるかどうかを取
得します。
112
supportsCatalogsInProcedureCalls()
プロシジャ呼び出し文でカタログ名を使用できるかどうかを取
得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
437
項番
DatabaseMetaData インタフェースのメソッド
機能
113
supportsCatalogsInTableDefinitions()
表定義文でカタログ名を使用できるかどうかを取得します。
114
supportsColumnAliasing()
列の別名がサポートされているかどうかを取得します。
115
supportsConvert()
SQL の型間の CONVERT 関数がサポートされているかどう
かを取得します。
116
supportsConvert(int fromType, int toType)
指定された SQL の型間の CONVERT 関数がサポートされて
いるかどうかを取得します。
117
supportsCoreSQLGrammar()
ODBC Core SQL 文法がサポートされているかどうかを取得
します。
118
supportsCorrelatedSubqueries()
外への参照列を含む副問合せがサポートされているかどうかを
取得します。
119
supportsDataDefinitionAndDataManipulation
Transactions()
トランザクションで,データ定義文とデータ操作文の両方がサ
ポートされているかどうかを取得します。
120
supportsDataManipulationTransactionsOnly()
トランザクションでデータ操作文だけがサポートされているか
どうかを取得します。
121
supportsDifferentTableCorrelationNames()
表相関名がサポートされている場合,表名と異なる名前である
という制限を付けるかどうかを取得します。
122
supportsExpressionsInOrderBy()
ORDER BY リスト中で値式がサポートされているかどうかを
取得します。
123
supportsExtendedSQLGrammar()
ODBC Extended SQL 文法がサポートされているかどうかを
取得します。
124
supportsFullOuterJoins()
完全な入れ子の外結合がサポートされているかどうかを取得し
ます。
125
supportsGetGeneratedKeys()
文が実行されたあとに自動生成キーを取得できるかどうかを取
得します。
126
supportsGroupBy()
GROUP BY 句がサポートされているかどうかを取得します。
127
supportsGroupByBeyondSelect()
SELECT 文中のすべての列が GROUP BY 句に含まれるとい
う条件で,このデータベースによって,GROUP BY 句で
SELECT 文中にない列の使用がサポートされているかどうか
を取得します。
128
supportsGroupByUnrelated()
GROUP BY 句で SELECT 文中にない列の使用がサポートさ
れているかどうかを取得します。
129
supportsIntegrityEnhancementFacility()
SQL Integrity Enhancement Facility がサポートされている
かどうかを取得します。
130
supportsLikeEscapeClause()
LIKE 述語のエスケープ句がサポートされているかどうかを取
得します。
131
supportsLimitedOuterJoins()
外結合に関し,制限されたサポートが提供されるかどうかを取
得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
438
項番
DatabaseMetaData インタフェースのメソッド
機能
132
supportsMinimumSQLGrammar()
ODBC Minimum SQL 文法がサポートされているかどうかを
取得します。
133
supportsMixedCaseIdentifiers()
大文字と小文字が混在する二重引用符なしの SQL 識別子を,
大文字と小文字を区別して処理し,大文字と小文字混在で格納
するかどうかを取得します。
134
supportsMixedCaseQuotedIdentifiers()
大文字と小文字が混在する二重引用符付きの SQL 識別子を,
大文字と小文字を区別して処理し,結果として大文字と小文字
混在で格納するかどうかを取得します。
135
supportsMultipleOpenResults()
CallableStatement オブジェクトから同時に返された複数の
ResultSet オブジェクトを持つことが可能かどうかを取得しま
す。
136
supportsMultipleResultSets()
execute メソッドの単一の呼び出しからの複数の ResultSet
オブジェクトの取得がサポートされているかどうかを取得しま
す。
137
supportsMultipleTransactions()
一度に複数のトランザクションを(異なった接続で)オープン
できるかどうかを取得します。
138
supportsNamedParameters()
CALL 文への名前付きパラメタがサポートされているかどう
かを取得します。
139
supportsNonNullableColumns()
列を非ナル値として定義できるかどうかを取得します。
140
supportsOpenCursorsAcrossCommit()
コミット間でカーソルがオープンされたままの状態がサポート
されているかどうかを取得します。
141
supportsOpenCursorsAcrossRollback()
ロールバック間でカーソルがオープンされたままの状態がサ
ポートされているかどうかを取得します。
142
supportsOpenStatementsAcrossCommit()
コミット間で文ハンドルがオープンされたままの状態がサポー
トされているかどうかを取得します。
143
supportsOpenStatementsAcrossRollback()
ロールバック間で文ハンドルがオープンされたままの状態がサ
ポートされているかどうかを取得します。
144
supportsOrderByUnrelated()
ORDER BY 句で SELECT 文中にない列の使用がサポートさ
れているかどうかを取得します。
145
supportsOuterJoins()
外結合が何らかの形式でサポートされているかどうかを取得し
ます。
146
supportsPositionedDelete()
位置指定された DELETE 文がサポートされているかどうかを
取得します。
147
supportsPositionedUpdate()
位置指定された UPDATE 文がサポートされているかどうか
を取得します。
148
supportsResultSetConcurrency(int type, int
concurrency)
指定した結果セットタイプと並行処理タイプの組み合わせをサ
ポートしているかどうかを返します。
149
supportsResultSetHoldability(int holdability)
指定された ResultSet オブジェクトの保持機能がサポートされ
ているかどうかを返します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
439
項番
DatabaseMetaData インタフェースのメソッド
機能
150
supportsResultSetType(int type)
指定した結果セットタイプがサポートされているかどうかを返
します。
151
supportsSavepoints()
セーブポイントがサポートされているかどうかを取得します。
152
supportsSchemasInDataManipulation()
データ操作文でスキーマ名を使用できるかどうかを取得します。
153
supportsSchemasInIndexDefinitions()
インデクス定義文でスキーマ名を使用できるかどうかを取得し
ます。
154
supportsSchemasInPrivilegeDefinitions()
権限付与の定義文(GRANT 文)
,または権限取り消しの定義
文(REVOKE 文)で,スキーマ名を使用できるかどうかを取
得します。
155
supportsSchemasInProcedureCalls()
プロシジャ呼び出し文でスキーマ名を使用できるかどうかを取
得します。
156
supportsSchemasInTableDefinitions()
表定義文でスキーマ名を使用できるかどうかを取得します。
157
supportsSelectForUpdate()
SELECT FOR UPDATE 文がサポートされているかどうかを
取得します。
158
supportsStatementPooling()
文ハンドルのプールがサポートされているかどうかを取得しま
す。
159
supportsStoredFunctionsUsingCallSyntax()
ストアドプロシジャエスケープ構文を使用したユーザ定義関
数,またはベンダ関数の呼び出しをサポートするかどうかを取
得します。
160
supportsStoredProcedures()
ストアドプロシジャエスケープ構文を使用するストアドプロシ
ジャ呼び出しがサポートされているかどうかを判定します。
161
supportsSubqueriesInComparisons()
比較述語で副問合せがサポートされているかどうかを取得しま
す。
162
supportsSubqueriesInExists()
EXISTS 述語で副問合せがサポートされているかどうかを取得
します。
163
supportsSubqueriesInIns()
IN 述語で副問合せがサポートされているかどうかを取得しま
す。
164
supportsSubqueriesInQuantifieds()
限定述語で副問合せがサポートされているかどうかを取得しま
す。
165
supportsTableCorrelationNames()
表の相関名がサポートされているかどうかを取得します。
166
supportsTransactionIsolationLevel(int level)
指定したトランザクション隔離性水準がサポートされているか
どうかを返します。
167
supportsTransactions()
トランザクションがサポートされているかどうかを取得します。
168
supportsUnion()
SQL UNION がサポートされているかどうかを取得します。
169
supportsUnionAll()
SQL UNION ALL がサポートされているかどうかを取得しま
す。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
440
項番
DatabaseMetaData インタフェースのメソッド
機能
170
updatesAreDetected(int type)
ResultSet クラスの rowUpdated メソッドを呼び出すことに
よって可視の行が更新されたことを検出できるかどうかを取得
します。
171
usesLocalFilePerTable()
各表にファイルを使用するかどうかを取得します。
172
usesLocalFiles()
ローカルファイルに表を格納するかどうかを取得します。
注
この表に記載されていないメソッドは,HADB ではサポートしていません。サポートしていないメソッ
ドを実行すると,SQLException が投入されることがあります。
(3) 必要なパッケージ名称とクラス名称
DatabaseMetaData インタフェースを使用する場合に必要なパッケージ名称とクラス名称を次に示します。
• パッケージ名称:com.hitachi.hadb.jdbc
• クラス名称:AdbDatabaseMetaData
(4) パターン文字列中に指定できる特殊文字
DatabaseMetaData クラスのメソッドには,String のパターン文字列を指定する引数があります。パター
ン文字列中には,次の表に示す特殊文字を指定できます。
表 6‒40 パターン文字列中に指定できる特殊文字
指定できる特殊文字
意味
_(下線)
任意の 1 文字です。
%
0 文字以上の任意の長さの文字列です。
\
エスケープ文字です。パターン文字列中に指定したエスケープ文字の直後
の特殊文字を通常の文字として扱います。
\は,Shift-JIS の 0x5c(UTF-16LE の 0x5c00)で示される文字です。
UTF-8 の場合は,\(バックスラッシュ)で表示される文字を指定してく
ださい。
6.6.2 allProceduresAreCallable()
(1) 機能
getProcedures メソッドによって返されるすべてのプロシジャが,現在の HADB ユーザから呼び出せる
かどうかを取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
441
(2) 形式
public synchronized boolean allProceduresAreCallable() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.3 allTablesAreSelectable()
(1) 機能
getTables メソッドによって返されるすべての表が,現在の HADB ユーザによって使用できるかどうか
を取得します。
(2) 形式
public synchronized boolean allTablesAreSelectable() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
442
6.6.4 autoCommitFailureClosesAllResultSets()
(1) 機能
自動コミットモード有効時に SQLException が発生した場合,すべてのオープンされた ResultSet がク
ローズされるかどうかを返却します。
(2) 形式
public synchronized boolean autoCommitFailureClosesAllResultSets() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.5 dataDefinitionCausesTransactionCommit()
(1) 機能
トランザクションのデータ定義文が,トランザクションを強制的にコミットさせるかどうかを取得します。
(2) 形式
public synchronized boolean dataDefinitionCausesTransactionCommit() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に ture が返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
443
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.6 dataDefinitionIgnoredInTransactions()
(1) 機能
トランザクションでデータ定義文が無視されるかどうかを取得します。
(2) 形式
public synchronized boolean dataDefinitionIgnoredInTransactions() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.7 deletesAreDetected(int type)
(1) 機能
ResultSet クラスの rowDeleted メソッドを呼び出すことによって可視の行が削除されたことを検出でき
るかどうかを取得します。
(2) 形式
public synchronized boolean deletesAreDetected(int type) throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
444
(3) 引数
int type:
結果セットタイプを指定します。
• ResultSet.TYPE_FORWARD_ONLY
• ResultSet.TYPE_SCROLL_INSENSITIVE
• ResultSet.TYPE_SCROLL_SENSITIVE
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.8 doesMaxRowSizeIncludeBlobs()
(1) 機能
getMaxRowSize メソッドの戻り値が SQL データの型の LONGVARCHAR および LONGVARBINARY
を含むかどうかを取得します。
(2) 形式
public synchronized boolean doesMaxRowSizeIncludeBlobs() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
445
6.6.9 getAttributes(String catalog, String schemaPattern, String
typeNamePattern, String attributeNamePattern)
(1) 機能
指定されたスキーマおよびカタログで使用可能なユーザ定義の型(UDT)のための指定された型の指定さ
れた属性に関する記述を取得します。
(2) 形式
public synchronized ResultSet getAttributes(String catalog, String schemaPattern, String
typeNamePattern, String attributeNamePattern) throws SQLException
(3) 引数
String catalog:
カタログ名を指定します。ただし,指定しても無視されます。
String schemaPattern:
スキーマ名パターンを指定します。ただし,指定しても無視されます。
String typeNamePattern:
型名パターンを指定します。ただし,指定しても無視されます。
String attributeNamePattern:
属性名パターンを指定します。ただし,指定しても無視されます。
(4) 戻り値
常に検索結果行数 0 の ResultSet オブジェクトが返却されます。返却される ResultSet オブジェクトの形
式を次の表に示します。
表 6‒41 返却される ResultSet オブジェクトの形式(getAttributes メソッドの場合)
列番号
型
列名
列の意味
1
String
TYPE_CAT
カタログ名
2
String
TYPE_SCHEM
スキーマ名
3
String
TYPE_NAME
型名
4
String
ATTR_NAME
属性名
5
int
DATA_TYPE
SQL の型の属性の型
6
String
ATTR_TYPE_NAME
型名
7
int
ATTR_SIZE
列サイズ
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
446
列番号
型
列名
列の意味
8
int
DECIMAL_DIGITS
小数点以下の桁数
9
int
NUM_PREC_RADIX
基数
10
int
NULLABLE
この型にナル値を使用できるかどうか
11
String
REMARKS
コメント記述列
12
String
ATTR_DEF
デフォルト値
13
int
SQL_DATA_TYPE
未使用
14
int
SQL_DATETIME_SUB
未使用
15
int
CHAR_OCTET_LENGTH
CHAR 型の列の最大バイト数
16
int
ORDINAL_POSITION
列番号
17
String
IS_NULLABLE
この型にナル値が使用できるかどうか
18
String
SCOPE_CATALOG
参照属性のスコープである表のカタログ名
19
String
SCOPE_SCHEMA
参照属性のスコープである表のスキーマ名
20
String
SCOPE_TABLE
参照属性のスコープである表の名称
21
short
SOURCE_DATA_TYPE
個別の型またはユーザ生成 Ref 型,java.sql.Types
の SQL 型のソースの型
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.10 getBestRowIdentifier(String catalog, String schema, String
table, int scope, boolean nullable)
(1) 機能
行を一意に識別する表の最適な列セットに関する記述を取得します。
(2) 形式
public synchronized ResultSet getBestRowIdentifier(String catalog, String schema, String
table, int scope, boolean nullable) throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
447
(3) 引数
String catalog:
カタログ名を指定します。ただし,指定しても無視されます。
String schema:
スキーマ名を指定します。ただし,指定しても無視されます。
String table:
表名を指定します。ただし,指定しても無視されます。
int scope:
対象のスケールを指定します。ただし,指定しても無視されます。
boolean nullable:
ナル値を指定可能な列を含むかを指定します。ただし,指定しても無視されます。
(4) 戻り値
常に検索結果行数 0 の ResultSet オブジェクトが返却されます。返却される ResultSet オブジェクトの形
式を次の表に示します。
表 6‒42 返却される ResultSet オブジェクトの形式(getBestRowIdentifier メソッドの場合)
列番号
型
列名
列の意味
1
short
SCOPE
結果の実際のスケール
2
String
COLUMN_NAME
列名
3
int
DATA_TYPE
SQL の型
4
String
TYPE_NAME
型名
5
int
COLUMN_SIZE
精度
6
int
BUFFER_LENGTH
未使用
7
short
DECIMAL_DIGITS
小数点以下の桁数
8
short
PSEUDO_COLUMN
擬似列かどうか
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
448
6.6.11 getCatalogs()
(1) 機能
カタログ名を取得します。
(2) 形式
public synchronized ResultSet getCatalogs() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に検索結果行数 0 の ResultSet オブジェクトが返却されます。返却される ResultSet オブジェクトの形
式を次の表に示します。
表 6‒43 返却される ResultSet オブジェクトの形式(getCatalogs メソッドの場合)
列番号
1
型
列名
列の意味
String
TABLE_CAT
カタログ名
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.12 getCatalogSeparator()
(1) 機能
カタログ名と表名のセパレータを取得します。
(2) 形式
public synchronized String getCatalogSeparator() throws SQLException
(3) 引数
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
449
(4) 戻り値
常に空の文字列が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.13 getCatalogTerm()
(1) 機能
catalog に対する推奨用語を取得します。
(2) 形式
public synchronized String getCatalogTerm() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に空の文字列が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.14 getClientInfoProperties()
(1) 機能
ドライバがサポートするクライアント情報プロパティのリストを返却します。
(2) 形式
public synchronized ResultSet getClientInfoProperties() throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
450
(3) 引数
なし。
(4) 戻り値
常に検索結果行数 0 の ResultSet オブジェクトが返却されます。返却される ResultSet オブジェクトの形
式を次の表に示します。
表 6‒44 返却される ResultSet オブジェクトの形式
列番号
型
列名
列の意味
1
String
NAME
クライアント情報プロパティの名前
2
int
MAX_LEN
プロパティ値の最大長
3
String
DEFAULT_VALUE
プロパティのデフォルト値
4
String
DESCRIPTION
プロパティの記述
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.15 getColumnPrivileges(String catalog, String schema, String
table, String columnNamePattern)
(1) 機能
表の列へのアクセス権に関する記述を取得します。
(2) 形式
public synchronized ResultSet getColumnPrivileges(String catalog, String schema, String
table, String columnNamePattern) throws SQLException
(3) 引数
String catalog:
カタログ名を指定します。ただし,指定しても無視されます。
String schema:
スキーマ名を指定します。ただし,指定しても無視されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
451
String table:
表名を指定します。ただし,指定しても無視されます。
String columnNamePattern:
列名パターンを指定します。ただし,指定しても無視されます。
(4) 戻り値
常に検索結果行数 0 の ResultSet オブジェクトが返却されます。返却される ResultSet オブジェクトの形
式を次の表に示します。
表 6‒45 返却される ResultSet オブジェクトの形式(getColumnPrivileges メソッドの場合)
列番号
型
列名
列の意味
1
String
TABLE_CAT
カタログ名
2
String
TABLE_SCHEM
スキーマ名
3
String
TABLE_NAME
表名
4
String
COLUMN_NAME
列名
5
String
GRANTOR
アクセス権の付与者
6
String
GRANTEE
アクセス権の被付与者
7
String
PRIVILEGE
アクセス権限名
8
String
IS_GRANTABLE
アクセス権の被付与者が,別の HADB ユーザにアク
セス権を与えることができるかどうか
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.16 getColumns(String catalog, String schemaPattern, String
tableNamePattern, String columnNamePattern)
(1) 機能
表の列情報を取得します。
このメソッドを実行した HADB ユーザが持っている権限によって,取得できる表の列情報が変わります。
権限と取得できる表の列情報については,マニュアル「HADB システム構築・運用ガイド」の「アクセ
ス権限と HADB ユーザがアクセスできるスキーマオブジェクトの関係」を参照してください。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
452
(2) 形式
public synchronized ResultSet getColumns(String catalog, String schemaPattern, String
tableNamePattern, String columnNamePattern) throws SQLException
(3) 引数
String catalog:
カタログ名を指定します。ただし,指定しても無視されます。
String schemaPattern:
スキーマ名パターン※を指定します。大文字と小文字を区別します。
String tableNamePattern:
表名パターン※を指定します。大文字と小文字を区別します。
String columnNamePattern:
列名パターン※を指定します。大文字と小文字を区別します。
注※
各パターンに指定できる特殊文字については,「6.6.1(4) パターン文字列中に指定できる特殊文字」
を参照してください。
(4) 戻り値
ResultSet オブジェクトが返却されます。返却される ResultSet オブジェクトの形式を次の表に示します。
表 6‒46 返却される ResultSet オブジェクトの形式(getColumns メソッドの場合)
列番号
型
列名
列の意味
1
String
TABLE_CAT
常に空の文字列を返します。
2
String
TABLE_SCHEM
スキーマ名
3
String
TABLE_NAME
表名
4
String
COLUMN_NAME
列名
5
int
DATA_TYPE
SQL の型
6
String
TYPE_NAME
型名
7
int
COLUMN_SIZE
列サイズ
8
int
BUFFER_LENGTH
常にナル値を返します。
9
int
DECIMAL_DIGITS
小数点以下の桁数
10
int
NUM_PREC_RADIX
基数
• 概数値:2
• 真数値:10
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
453
列番号
型
列名
列の意味
• 数値以外:0
11
int
NULLABLE
この型にナル値を使用できるかどうかを返します。
• columnNoNulls:ナル値を使用できない可能性
があります。
• columnNullable:ナル値を使用できます。
12
String
REMARKS
コメント記述列
常に空の文字列を返します。
13
String
COLUMN_DEF
列の既定値を返します。
• 返却された値がアポストロフィ( ' )で囲まれてい
る場合は,列の既定値が文字列であることを意味
しています。
• 列の既定値に NULL が指定された場合は,アポス
トロフィ( ' )で囲まれていない NULL という文字
列を返します。
• 列の既定値が指定されていない場合は,ナル値を
返します。
• そのほかの返却値については,マニュアル
「HADB システム構築・運用ガイド」の
「SQL_COLUMNS の内容」の
DEFAULT_VALUE 列を参照してください。
14
int
SQL_DATA_TYPE
常にナル値を返します。
15
int
SQL_DATETIME_SUB
常にナル値を返します。
16
int
CHAR_OCTET_LENGTH
CHAR 型の列の最大バイト数
17
int
ORDINAL_POSITION
列番号
1 から始まります。
18
String
IS_NULLABLE
この型にナル値が使用できるかどうかを返します。
• "NO":ナル値を使用できません。
• "YES":ナル値を使用できる可能性があります。
19
String
SCOPE_CATALOG
常に空の文字列を返します。
20
String
SCOPE_SCHEMA
常に空の文字列を返します。
21
String
SCOPE_TABLE
常に空の文字列を返します。
22
short
SOURCE_DATA_TYPE
常にナル値を返します。
23
String
IS_AUTOINCREMENT
列が自動インクリメントされるかどうかを示します。
• "NO":列が自動インクリメントされません。
常に NO を返します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
454
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.17 getConnection()
(1) 機能
この DatabaseMetaData インスタンスを生成した Connection インスタンスを取得します。
(2) 形式
public synchronized Connection getConnection() throws SQLException
(3) 引数
なし。
(4) 戻り値
Conenction オブジェクトが返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.18 getCrossReference(String parentCatalog, String
parentSchema, String parentTable, String foreignCatalog,
String foreignSchema, String foreignTable)
(1) 機能
指定された参照表と指定された被参照表とのクロスリファレンス情報を取得します。
このメソッドを実行した HADB ユーザが持っている権限によって,取得できるクロスリファレンス情報が
変わります。権限と取得できる情報の対応については,マニュアル「HADB システム構築・運用ガイド」
の「アクセス権限と HADB ユーザがアクセスできるスキーマオブジェクトの関係」を参照してください。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
455
(2) 形式
public synchronized ResultSet getCrossReference
(String parentCatalog,String parentSchema, String parentTable,
String foreignCatalog, String foreignSchema, String foreignTable)
throws SQLException
(3) 引数
String parentCatalog:
被参照表のカタログ名を指定します。ただし,指定しても無視されます。
String parentSchema:
被参照表のスキーマ名パターン※を指定します。
String parentTable:
被参照表の表名パターン※を指定します。
String foreignCatalog:
参照表のカタログ名を指定します。ただし,指定しても無視されます。
String foreignSchema:
参照表のスキーマ名パターン※を指定します。
String foreignTable:
参照表の表名パターン※を指定します。
注※
各パターンに指定できる特殊文字については,「6.6.1(4) パターン文字列中に指定できる特殊文字」
を参照してください。
(4) 戻り値
返却される ResultSet オブジェクトの形式を次の表に示します。
表 6‒47 返却される ResultSet オブジェクトの形式(getCrossReference メソッドの場合)
列番号
1
型
列名
列の意味
String
PKTABLE_CAT
被参照表のカタログ名
常に空文字が返却されます。
2
String
PKTABLE_SCHEM
被参照表のスキーマ名
3
String
PKTABLE_NAME
被参照表の表名
4
String
PKCOLUMN_NAME
主キーの列名
5
String
FKTABLE_CAT
参照表のカタログ名
常に空文字が返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
456
列番号
型
列名
列の意味
6
String
FKTABLE_SCHEM
参照表のスキーマ名
7
String
FKTABLE_NAME
参照表の表名
8
String
FKCOLUMN_NAME
外部キーの列名
9
short
KEY_SEQ
外部キーのシーケンス番号
10
short
UPDATE_RULE
主キー更新時の外部キーに適用される動作
• importedKeyNoAction:主キーは更新できませ
ん。ただし,CREATE TABLE 文の参照制約定義
で参照制約チェック抑止指定(DISABLE)を指
定した場合は,主キーを更新できます。
11
short
DELETE_RULE
主キー削除時の外部キーに適用される動作
• importedKeyNoAction:主キーは削除できませ
ん。ただし,CREATE TABLE 文の参照制約定義
で参照制約チェック抑止指定(DISABLE)を指
定した場合は,主キーを削除できます。
12
String
FK_NAME
参照制約の制約名
13
String
PK_NAME
主キーのインデクス名
14
short
DEFERRABILITY
外部キーに対する制約の評価を,コミットまで延期
できるかどうか
• importedKeyNotDeferrable:延期できません。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.19 getDatabaseMajorVersion()
(1) 機能
データベース(HADB サーバ)のメジャーバージョンを取得します。
(2) 形式
public synchronized int getDatabaseMajorVersion() throws SQLException
(3) 引数
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
457
(4) 戻り値
HADB サーバのメジャーバージョンが返却されます。
例えば,HADB サーバのバージョンが 01-00 の場合,int 型の 1 が返却されます。
JDBC ドライバが出力する SQL トレースのヘッダ部に表示されるサーバのメジャーバージョンと同じ値が
返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.20 getDatabaseMinorVersion()
(1) 機能
データベース(HADB サーバ)のマイナーバージョンを取得します。
(2) 形式
public synchronized int getDatabaseMinorVersion() throws SQLException
(3) 引数
なし。
(4) 戻り値
HADB サーバのマイナーバージョンが返却されます。
例えば,HADB サーバのバージョンが 01-00 の場合,int 型の 0 が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
458
6.6.21 getDatabaseProductName()
(1) 機能
接続するデータベース(HADB サーバ)の製品名称を取得します。
(2) 形式
public synchronized String getDatabaseProductName() throws SQLException
(3) 引数
なし。
(4) 戻り値
String オブジェクトが返却されます。
"Hitachi Advanced Data Binder"が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.22 getDatabaseProductVersion()
(1) 機能
接続するデータベース(HADB サーバ)のバージョンを取得します。
(2) 形式
public synchronized String getDatabaseProductVersion() throws SQLException
(3) 引数
なし。
(4) 戻り値
String オブジェクトが返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
459
"vv-rr"の形式(例:"01-00")で HADB サーバのバージョンが返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.23 getDefaultTransactionIsolation()
(1) 機能
このデータベースのデフォルトのトランザクション隔離性水準を取得します。
(2) 形式
public synchronized int getDefaultTransactionIsolation() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に Connection.TRANSACTION_READ_COMMITTED(トランザクション隔離性水準のデフォルト
が READ COMMITTED)が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.24 getDriverMajorVersion()
(1) 機能
JDBC ドライバのメジャーバージョンを取得します。
(2) 形式
public synchronized int getDriverMajorVersion()
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
460
(3) 引数
なし。
(4) 戻り値
JDBC ドライバのメジャーバージョンが返却されます。
例えば,JDBC ドライバのバージョンが 01-00 の場合,1 が返却されます。
(5) 発生する例外
なし。
6.6.25 getDriverMinorVersion()
(1) 機能
JDBC ドライバのマイナーバージョンを取得します。
(2) 形式
public synchronized int getDriverMinorVersion()
(3) 引数
なし。
(4) 戻り値
JDBC ドライバのマイナーバージョンが返却されます。
例えば,JDBC ドライバのバージョンが 01-00 の場合,0 が返却されます。
(5) 発生する例外
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
461
6.6.26 getDriverName()
(1) 機能
JDBC ドライバの名前を取得します。
(2) 形式
public synchronized String getDriverName() throws SQLException
(3) 引数
なし。
(4) 戻り値
String オブジェクトが返却されます。
"Hitachi Advanced Data Binder JDBC Driver"が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.27 getDriverVersion()
(1) 機能
JDBC ドライバのバージョンを取得します。
(2) 形式
public synchronized String getDriverVersion() throws SQLException
(3) 引数
なし。
(4) 戻り値
String オブジェクトが返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
462
"vv-rr"の形式(例:"01-00")で JDBC ドライバのバージョンが返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.28 getExportedKeys(String catalog, String schema, String table)
(1) 機能
参照表の外部キーに関する情報を取得します。
このメソッドを実行した HADB ユーザが持っている権限によって,取得できる外部キーに関する情報が変
わります。権限と取得できる情報の対応については,マニュアル「HADB システム構築・運用ガイド」
の「アクセス権限と HADB ユーザがアクセスできるスキーマオブジェクトの関係」を参照してください。
(2) 形式
public synchronized ResultSet getExportedKeys(String catalog, String schema, String table)
throws SQLException
(3) 引数
String catalog:
被参照表のカタログ名を指定します。ただし,指定しても無視されます。
String schema:
被参照表のスキーマ名パターン※を指定します。
String table:
被参照表の表名パターン※を指定します。
注※
各パターンに指定できる特殊文字については,「6.6.1(4) パターン文字列中に指定できる特殊文字」
を参照してください。
(4) 戻り値
返却される ResultSet オブジェクトの形式を次の表に示します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
463
表 6‒48 返却される ResultSet オブジェクトの形式(getExportedKeys メソッドの場合)
列番号
1
型
列名
列の意味
String
PKTABLE_CAT
被参照表のカタログ名
常に空文字が返却されます。
2
String
PKTABLE_SCHEM
被参照表のスキーマ名
3
String
PKTABLE_NAME
被参照表の表名
4
String
PKCOLUMN_NAME
主キーの列名
5
String
FKTABLE_CAT
参照表のカタログ名
常に空文字が返却されます。
6
String
FKTABLE_SCHEM
参照表のスキーマ名
7
String
FKTABLE_NAME
参照表の表名
8
String
FKCOLUMN_NAME
外部キーの列名
9
short
KEY_SEQ
外部キーのシーケンス番号
10
short
UPDATE_RULE
主キー更新時の外部キーに適用される動作
• importedKeyNoAction:主キーは更新できませ
ん。ただし,CREATE TABLE 文の参照制約定義
で参照制約チェック抑止指定(DISABLE)を指
定した場合は,主キーを更新できます。
11
short
DELETE_RULE
主キー削除時の外部キーに適用される動作
• importedKeyNoAction:主キーは削除できませ
ん。ただし,CREATE TABLE 文の参照制約定義
で参照制約チェック抑止指定(DISABLE)を指
定した場合は,主キーを削除できます。
12
String
FK_NAME
参照制約の制約名
13
String
PK_NAME
主キーのインデクス名
14
short
DEFERRABILITY
外部キーに対する制約の評価を,コミットまで延期
できるかどうか
• importedKeyNotDeferrable:延期できません。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
464
6.6.29 getExtraNameCharacters()
(1) 機能
二重引用符(")で囲まれていない識別名に使用できるすべての特殊文字を取得します。
(2) 形式
public synchronized String getExtraNameCharacters() throws SQLException
(3) 引数
なし。
(4) 戻り値
String オブジェクトが返却されます。
"\@#"が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.30 getFunctionColumns(String catalog, String schemaPattern,
String functionNamePattern, String columnNamePattern)
(1) 機能
関数のパラメタと返される型に関する情報を返却します。
(2) 形式
public synchronized ResultSet getFunctionColumns(String catalog, String schemaPattern,
String functionNamePattern, String columnNamePattern) throws SQLException
(3) 引数
String catalog:
カタログ名を指定します。ただし,指定しても無視されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
465
String schemaPattern:
スキーマ名パターンを指定します。大文字と小文字を区別します。
String functionNamePattern:
関数名パターンを指定します。大文字と小文字を区別します。
String columnNamePattern:
パラメタ名パターンを指定します。大文字と小文字を区別します。
(4) 戻り値
常に検索結果行数 0 の ResultSet オブジェクトが返却されます。返却される ResultSet オブジェクトの形
式を次の表に示します。
表 6‒49 返却される ResultSet オブジェクトの形式
列番号
型
列名
列の意味
1
String
FUNCTION_CAT
カタログ名
2
String
FUNCTION_SCHEM
認可識別子名
3
String
FUNCTION_NAME
関数名
4
String
COLUMN_NAME
列/パラメタ名
5
short
COLUMN_TYPE
列の種類/パラメタ
6
int
DATA_TYPE
パラメタの SQL 型
7
String
TYPE_NAME
パラメタの SQL 型名
8
int
PRECISION
パラメタの精度
9
int
LENGTH
パラメタのサイズ
10
short
SCALE
パラメタの位取り(小数部分の桁数)
11
short
RADIX
パラメタの基数
12
short
NULLABLE
ナル値可否
13
String
REMARKS
パラメタに関するコメント
14
int
CHAR_OCTET_LENGTH
バイナリと文字ベースのパラメタまたは列の最大長
15
int
ORDINAL_POSITION
入力および出力パラメタの 1 から始まる順番
• 関数の戻り値の場合は 0 を返す
16
String
IS_NULLABLE
パラメタまたは列でナル値を許可するかどうか
17
String
SPECIFIC_NAME
この関数をスキーマ内で一意に識別する名前
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
466
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.31 getFunctions(String catalog, String schemaPattern, String
functionNamePattern)
(1) 機能
関数に関する情報を返却します。
(2) 形式
public synchronized ResultSet getFunctions(String catalog, String schemaPattern, String
functionNamePattern) throws SQLException
(3) 引数
String catalog:
カタログ名を指定します。ただし,指定しても無視されます。
String schemaPattern:
スキーマ名パターンを指定します。大文字と小文字を区別します。
String functionNamePattern:
関数名パターンを指定します。大文字と小文字を区別します。
(4) 戻り値
常に検索結果行数 0 の ResultSet オブジェクトが返却されます。返却される ResultSet オブジェクトの形
式を次の表に示します。
表 6‒50 返却される ResultSet オブジェクトの形式
列番号
型
列名
列の意味
1
String
FUNCTION_CAT
カタログ名
2
String
FUNCTION_SCHEM
認可識別子名
3
String
FUNCTION_NAME
関数名
4
String
REMARKS
関数に関する説明
5
short
FUNCTION_TYPE
関数の種類
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
467
列番号
6
型
列名
列の意味
String
SPECIFIC_NAME
この関数をそのスキーマ内で一意に識別する名前
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.32 getIdentifierQuoteString()
(1) 機能
SQL 識別子を引用するのに使用する文字列を取得します。
(2) 形式
public synchronized String getIdentifierQuoteString() throws SQLException
(3) 引数
なし。
(4) 戻り値
String オブジェクトが返却されます。
二重引用符(")が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.33 getImportedKeys(String catalog, String schema, String table)
(1) 機能
被参照表の主キーに関する情報を取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
468
このメソッドを実行した HADB ユーザが持っている権限によって,取得できる主キーに関する情報が変わ
ります。権限と取得できる情報の対応については,マニュアル「HADB システム構築・運用ガイド」の
「アクセス権限と HADB ユーザがアクセスできるスキーマオブジェクトの関係」を参照してください。
(2) 形式
public synchronized ResultSet getImportedKeys(String catalog, String schema, String table)
throws SQLException
(3) 引数
String catalog:
参照表のカタログ名を指定します。ただし,指定しても無視されます。
String schema:
参照表のスキーマ名パターン※を指定します。
String table:
参照表の表名パターン※を指定します。
注※
各パターンに指定できる特殊文字については,「6.6.1(4) パターン文字列中に指定できる特殊文字」
を参照してください。
(4) 戻り値
返却される ResultSet オブジェクトの形式を次の表に示します。
表 6‒51 返却される ResultSet オブジェクトの形式(getImportedKeys メソッドの場合)
列番号
1
型
列名
列の意味
String
PKTABLE_CAT
被参照表のカタログ名
常に空文字が返却されます。
2
String
PKTABLE_SCHEM
被参照表のスキーマ名
3
String
PKTABLE_NAME
被参照表の表名
4
String
PKCOLUMN_NAME
主キーの列名
5
String
FKTABLE_CAT
参照表のカタログ名
常に空文字が返却されます。
6
String
FKTABLE_SCHEM
参照表のスキーマ名
7
String
FKTABLE_NAME
参照表の表名
8
String
FKCOLUMN_NAME
外部キーの列名
9
short
KEY_SEQ
外部キーのシーケンス番号
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
469
列番号
10
型
列名
列の意味
short
UPDATE_RULE
主キー更新時の外部キーに適用される動作
• importedKeyNoAction:主キーは更新できませ
ん。ただし,CREATE TABLE 文の参照制約定義
で参照制約チェック抑止指定(DISABLE)を指
定した場合は,主キーを更新できます。
11
short
DELETE_RULE
主キー削除時の外部キーに適用される動作
• importedKeyNoAction:主キーは削除できませ
ん。ただし,CREATE TABLE 文の参照制約定義
で参照制約チェック抑止指定(DISABLE)を指
定した場合は,主キーを削除できます。
12
String
FK_NAME
参照制約の制約名
13
String
PK_NAME
主キーのインデクス名
14
short
DEFERRABILITY
外部キーに対する制約の評価を,コミットまで延期
できるかどうか
• importedKeyNotDeferrable:延期できません。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.34 getIndexInfo(String catalog, String schema, String table,
boolean unique, boolean approximate)
(1) 機能
インデクスに関する情報を取得します。
このメソッドを実行した HADB ユーザが持っている権限によって,取得できるインデクス情報が変わりま
す。権限と取得できるインデクス情報については,マニュアル「HADB システム構築・運用ガイド」の
「アクセス権限と HADB ユーザがアクセスできるスキーマオブジェクトの関係」を参照してください。
(2) 形式
public synchronized ResultSet getIndexInfo(String catalog, String schema, String table,
boolean unique, boolean approximate) throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
470
(3) 引数
String catalog:
カタログ名を指定します。ただし,指定しても無視されます。
String schema:
スキーマ名パターン※を指定します。大文字と小文字を区別します。
String table:
表名パターン※を指定します。大文字と小文字を区別します。
boolean unique:
ユニーク属性を指定します。次に示すどちらかの値を指定してください。
true:ユニークインデクスの情報だけを取得します。
false:すべてのインデクスの情報を取得します。
boolean approximate:
指定する必要はありません。指定しても無視されます。
注※
各パターンに指定できる特殊文字については,「6.6.1(4) パターン文字列中に指定できる特殊文字」
を参照してください。
(4) 戻り値
ResultSet オブジェクトが返却されます。
返却される ResultSet オブジェクトの形式を次の表に示します。
表 6‒52 返却される ResultSet オブジェクトの形式(getIndexInfo メソッドの場合)
列番号
1
型
列名
列の意味
String
TABLE_CAT
カタログ名
常に空の文字列を返します。
2
String
TABLE_SCHEM
スキーマ名
3
String
TABLE_NAME
表名
4
boolean
NON_UNIQUE
インデクスを定義するキー値(インデクスとして定
義する 1 つまたは複数の列全体の値)が,すべての
行で異なっている場合に false,そうでない場合に
true を返します。
5
String
INDEX_QUALIFIER
インデクスのカタログ名
常に空の文字列を返します。
6
String
INDEX_NAME
インデクス識別子
7
short
TYPE
インデクス種別を返します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
471
列番号
型
列名
列の意味
常に DatabaseMetaData.tableIndexOther を返し
ます。
8
short
ORDINAL_POSITION
常にナル値を返します。
9
String
COLUMN_NAME
常に空の文字列を返します。
10
String
ASC_OR_DESC
常に空の文字列を返します。
11
int
CARDINALITY
インデクス内のユニークな値の数
常にナル値を返します。
12
int
PAGES
インデクスで使用しているページ数
常にナル値を返します。
13
String
FILTER_CONDITION
フィルタ条件
常に空の文字列を返します。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.35 getJDBCMajorVersion()
(1) 機能
ドライバの JDBC メジャーバージョンを取得します。
(2) 形式
public synchronized int getJDBCMajorVersion() throws SQLException
(3) 引数
なし。
(4) 戻り値
JDBC メジャーバージョンが返却されます。4 が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
472
6.6.36 getJDBCMinorVersion()
(1) 機能
ドライバの JDBC マイナーバージョンを取得します。
(2) 形式
public synchronized int getJDBCMinorVersion() throws SQLException
(3) 引数
なし。
(4) 戻り値
JDBC マイナーバージョンが返却されます。0 が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.37 getMaxBinaryLiteralLength()
(1) 機能
バイナリリテラル中に入れることができる 16 進数の最大文字数を取得します。
(2) 形式
public synchronized int getMaxBinaryLiteralLength() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に 64,000 が返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
473
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.38 getMaxCatalogNameLength()
(1) 機能
カタログ名の最大文字数を取得します。
(2) 形式
public synchronized int getMaxCatalogNameLength() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に 0 が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.39 getMaxCharLiteralLength()
(1) 機能
文字データとして指定できる最大文字数を取得します。
(2) 形式
public synchronized int getMaxCharLiteralLength() throws SQLException
(3) 引数
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
474
(4) 戻り値
文字データとして指定できる最大文字数が返却されます。常に 32,000 が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.40 getMaxColumnNameLength()
(1) 機能
列名に指定できる最大文字数を取得します。
(2) 形式
public synchronized int getMaxColumnNameLength() throws SQLException
(3) 引数
なし。
(4) 戻り値
列名に指定できる最大文字数が返却されます。常に 100 が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.41 getMaxColumnsInGroupBy()
(1) 機能
GROUP BY 句中に指定できるグループ化列の数の最大値を取得します。
(2) 形式
public synchronized int getMaxColumnsInGroupBy() throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
475
(3) 引数
なし。
(4) 戻り値
GROUP BY 句中に指定できるグループ化列の数の最大値が返却されます。常に 64 が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.42 getMaxColumnsInIndex()
(1) 機能
インデクス構成列数の最大値を取得します。
(2) 形式
public synchronized int getMaxColumnsInIndex() throws SQLException
(3) 引数
なし。
(4) 戻り値
インデクス構成列数の最大値が返却されます。常に 16 が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.43 getMaxColumnsInOrderBy()
(1) 機能
ORDER BY 句中に指定できる列数の最大値を取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
476
(2) 形式
public synchronized int getMaxColumnsInOrderBy() throws SQLException
(3) 引数
なし。
(4) 戻り値
ORDER BY 句中に指定できる列数の最大値が返却されます。常に 16 が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.44 getMaxColumnsInSelect()
(1) 機能
選択リストに指定できる選択式の最大数を取得します。
(2) 形式
public synchronized int getMaxColumnsInSelect() throws SQLException
(3) 引数
なし。
(4) 戻り値
選択リストに指定できる選択式の最大数が返却されます。常に 1,000 が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
477
6.6.45 getMaxColumnsInTable()
(1) 機能
表に定義できる列数の最大値を取得します。
(2) 形式
public synchronized int getMaxColumnsInTable() throws SQLException
(3) 引数
なし。
(4) 戻り値
表に定義できる列数の最大値が返却されます。常に 1,000 が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.46 getMaxConnections()
(1) 機能
同時に HADB サーバに接続できる HADB クライアントの最大数を取得します。
(2) 形式
public synchronized int getMaxConnections() throws SQLException
(3) 引数
なし。
(4) 戻り値
同時に接続できる HADB ユーザの最大数が返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
478
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.47 getMaxCursorNameLength()
(1) 機能
カーソル名の最大文字数を取得します。
(2) 形式
public synchronized int getMaxCursorNameLength() throws SQLException
(3) 引数
なし。
(4) 戻り値
カーソル名の最大文字数が返却されます。常に 0 が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.48 getMaxIndexLength()
(1) 機能
インデクスのキー長の最大値を取得します。
(2) 形式
public synchronized int getMaxIndexLength() throws SQLException
(3) 引数
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
479
(4) 戻り値
インデクスのキー長の最大値が返却されます。常に 4,036 が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.49 getMaxProcedureNameLength()
(1) 機能
プロシジャ名の最大文字数を取得します。
(2) 形式
public synchronized int getMaxProcedureNameLength() throws SQLException
(3) 引数
なし。
(4) 戻り値
プロシジャ名の最大文字数が返却されます。常に 0 が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.50 getMaxRowSize()
(1) 機能
1 行の最大バイト数を取得します。
(2) 形式
public synchronized int getMaxRowSize() throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
480
(3) 引数
なし。
(4) 戻り値
常に 0 が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.51 getMaxSchemaNameLength()
(1) 機能
スキーマ名の最大文字数を取得します。
(2) 形式
public synchronized int getMaxSchemaNameLength() throws SQLException
(3) 引数
なし。
(4) 戻り値
スキーマ名の最大文字数が返却されます。常に 100 が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.52 getMaxStatementLength()
(1) 機能
SQL 文に指定できる文字列長の最大値を取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
481
(2) 形式
public synchronized int getMaxStatementLength() throws SQLException
(3) 引数
なし。
(4) 戻り値
SQL 文に指定できる文字列長の最大値が返却されます。常に 16,000,000(単位:文字)が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.53 getMaxStatements()
(1) 機能
同時実行できる SQL 文の最大数を取得します。
1Connection オブジェクトで作成できる Statement 系オブジェクトの最大数を取得します。
(2) 形式
public synchronized int getMaxStatements() throws SQLException
(3) 引数
なし。
(4) 戻り値
同時実行できる SQL 文の最大数が返却されます。常に 4,095 が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
482
6.6.54 getMaxTableNameLength()
(1) 機能
表名に指定できる最大文字数を取得します。
(2) 形式
public synchronized int getMaxTableNameLength() throws SQLException
(3) 引数
なし。
(4) 戻り値
表名に指定できる最大文字数が返却されます。常に 100 が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.55 getMaxTablesInSelect()
(1) 機能
SELECT 文中に指定できる表数の最大値を取得します。
(2) 形式
public synchronized int getMaxTablesInSelect() throws SQLException
(3) 引数
なし。
(4) 戻り値
SELECT 文中に指定できる表数の最大値が返却されます。常に 64 が返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
483
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.56 getMaxUserNameLength()
(1) 機能
認可識別子の最大文字数を取得します。
(2) 形式
public synchronized int getMaxUserNameLength() throws SQLException
(3) 引数
なし。
(4) 戻り値
認可識別子の最大文字数が返却されます。常に 100 が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.57 getNumericFunctions()
(1) 機能
使用できる数学関数をコンマで区切ったリストで取得します。
(2) 形式
public synchronized String getNumericFunctions() throws SQLException
(3) 引数
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
484
(4) 戻り値
String オブジェクトが返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.58 getPrimaryKeys(String catalog, String schema, String table)
(1) 機能
指定された表の主キー列の記述を取得します。
このメソッドを実行した HADB ユーザが持っている権限によって,取得できる主キーの情報が変わりま
す。権限と取得できる主キーの情報については,マニュアル「HADB システム構築・運用ガイド」の「ア
クセス権限と HADB ユーザがアクセスできるスキーマオブジェクトの関係」を参照してください。
(2) 形式
public synchronized ResultSet getPrimaryKeys(String catalog, String schema, String table)
throws SQLException
(3) 引数
String catalog:
カタログ名を指定します。ただし,指定しても無視されます。
String schema:
スキーマ名パターン※を指定します。
String table:
表名パターン※を指定します。
注※
各パターンに指定できる特殊文字については,「6.6.1(4) パターン文字列中に指定できる特殊文字」
を参照してください。
(4) 戻り値
ResultSet オブジェクトが返却されます。返却される ResultSet オブジェクトの形式を次の表に示します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
485
表 6‒53 返却される ResultSet オブジェクトの形式(getPrimaryKeys メソッドの場合)
列番号
1
型
列名
列の意味
String
TABLE_CAT
カタログ名
常に空の文字列を返します。
2
String
TABLE_SCHEM
スキーマ名
3
String
TABLE_NAME
表名
4
String
COLUMN_NAME
列名
5
short
KEY_SEQ
主キー内で付けられる列順の番号
6
String
PK_NAME
主キー名
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.59 getProcedureColumns(String catalog, String schemaPattern,
String procedureNamePattern, String columnNamePattern)
(1) 機能
ストアドプロシジャパラメタに関する記述を取得します。
(2) 形式
public synchronized ResultSet getProcedureColumns(String catalog, String schemaPattern,
String procedureNamePattern, String columnNamePattern) throws SQLException
(3) 引数
String catalog:
カタログ名を指定します。ただし,指定しても無視されます。
String schemaPattern:
スキーマ名パターンを指定します。ただし,指定しても無視されます。
String procedureNamePattern:
プロシジャ名パターンを指定します。ただし,指定しても無視されます。
String columnNamePattern:
パラメタ名パターンを指定します。ただし,指定しても無視されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
486
(4) 戻り値
常に検索結果行数 0 の ResultSet オブジェクトが返却されます。返却される ResultSet オブジェクトの形
式を次の表に示します。
表 6‒54 返却される ResultSet オブジェクトの形式(getProcedureColumns メソッドの場合)
列番号
型
列名
列の意味
1
String
PROCEDURE_CAT
カタログ名
2
String
PROCEDURE_SCHEM
スキーマ名
3
String
PROCEDURE_NAME
プロシジャ名
4
String
COLUMN_NAME
パラメタ名
5
short
COLUMN_TYPE
パラメタの種類
6
int
DATA_TYPE
パラメタの SQL 型
7
String
TYPE_NAME
パラメタの SQL 型名
8
int
PRECISION
パラメタの精度
9
int
LENGTH
パラメタのサイズ
10
short
SCALE
パラメタの位取り
11
short
RADIX
パラメタの基数
12
short
NULLABLE
ナル値を使用できるかどうかを返します。
13
String
REMARKS
パラメタに関するコメント
14
String
COLUMN_DEF
列のデフォルト値
15
int
SQL_DATA_TYPE
将来使用するための予約
16
int
SQL_DATETIME_SUB
将来使用するための予約
17
int
CHAR_OCTET_LENGTH
バイナリおよび文字ベースのパラメタ,または列の
最大長
18
int
ORDINAL_POSITION
入力および出力パラメタの 1 から始まる順番
19
String
IS_NULLABLE
パラメタまたは列でナル値を許可するかどうか
20
String
SPECIFIC_NAME
このプロシジャを一意に識別する名前
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
487
6.6.60 getProcedures(String catalog, String schemaPattern, String
procedureNamePattern)
(1) 機能
ストアドプロシジャに関する記述を取得します。
(2) 形式
public synchronized ResultSet getProcedures(String catalog, String schemaPattern, String
procedureNamePattern) throws SQLException
(3) 引数
String catalog:
カタログ名を指定します。ただし,指定しても無視されます。
String schemaPattern:
スキーマ名パターンを指定します。ただし,指定しても無視されます。
String procedureNamePattern:
プロシジャ名パターンを指定します。ただし,指定しても無視されます。
(4) 戻り値
常に検索結果行数 0 の ResultSet オブジェクトが返却されます。返却される ResultSet オブジェクトの形
式を次の表に示します。
表 6‒55 返却される ResultSet オブジェクトの形式(getProcedures メソッドの場合)
列番号
型
列名
列の意味
1
String
PROCEDURE_CAT
カタログ名
2
String
PROCEDURE_SCHEM
スキーマ名
3
String
PROCEDURE_NAME
プロシジャ名
4
String
RESERVE1
将来使用するための予約
5
String
RESERVE2
将来使用するための予約
6
String
RESERVE3
将来使用するための予約
7
String
REMARKS
プロシジャの説明文
8
short
PROCEDURE_TYPE
プロシジャの種類
9
String
SPECIFIC_NAME
このプロシジャを一意に識別する名前
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
488
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.61 getProcedureTerm()
(1) 機能
procedure に対する推奨用語を取得します。
(2) 形式
public synchronized String getProcedureTerm() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に空の文字列が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.62 getResultSetHoldability()
(1) 機能
ResultSet オブジェクトのデフォルトの保持機能を取得します。
(2) 形式
public synchronized int getResultSetHoldability() throws SQLException
(3) 引数
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
489
(4) 戻り値
常に ResultSet.HOLD_CURSORS_OVER_COMMIT が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.63 getRowIdLifetime()
(1) 機能
RowId 型をサポートしているかどうかを示します。また,サポートしている場合は RowId オブジェクト
が有効である期間も示します。
(2) 形式
public synchronized RowIdLifetime getRowIdLifetime() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に RowIdLifetime. ROWID_UNSUPPORTED を返却します。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.64 getSchemas()
(1) 機能
スキーマ名を取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
490
このメソッドを実行した HADB ユーザが持っている権限によって,取得できるスキーマの情報が変わりま
す。権限と取得できるスキーマの情報については,マニュアル「HADB システム構築・運用ガイド」の
「アクセス権限と HADB ユーザがアクセスできるスキーマオブジェクトの関係」を参照してください。
(2) 形式
public synchronized ResultSet getSchemas() throws SQLException
(3) 引数
なし。
(4) 戻り値
ResultSet オブジェクトが返却されます。返却される ResultSet オブジェクトの形式を次の表に示します。
表 6‒56 返却される ResultSet オブジェクトの形式(getSchemas メソッドの場合)
列番号
型
列名
列の意味
1
String
TABLE_SCHEM
スキーマ名
2
String
TABLE_CATALOG
常に空の文字列を返します。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.65 getSchemas(String catalog, String schemaPattern)
(1) 機能
スキーマ名を取得します。
このメソッドを実行した HADB ユーザが持っている権限によって,取得できるスキーマの情報が変わりま
す。権限と取得できるスキーマの情報については,マニュアル「HADB システム構築・運用ガイド」の
「アクセス権限と HADB ユーザがアクセスできるスキーマオブジェクトの関係」を参照してください。
(2) 形式
public synchronized ResultSet getSchemas(String catalog, String schemaPattern) throws
SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
491
(3) 引数
String catalog:
カタログ名を指定します。ただし,指定しても無視されます。
String schemaPattern:
スキーマ名パターンを指定します。大文字と小文字は区別されます。
パターンに指定できる特殊文字については,「6.6.1(4) パターン文字列中に指定できる特殊文字」を
参照してください。
(4) 戻り値
ResultSet オブジェクトが返却されます。
返却される ResultSet オブジェクトの形式を次の表に示します。
表 6‒57 返却される ResultSet オブジェクトの形式
列番号
型
列名
列の意味
1
String
TABLE_SCHEM
スキーマ名
2
String
TABLE_CATALOG
常に空の文字列を返します。
6.6.66 getSchemaTerm()
(1) 機能
schema に対する推奨用語を取得します。
(2) 形式
public synchronized String getSchemaTerm() throws SQLException
(3) 引数
なし。
(4) 戻り値
String オブジェクトが返却されます。
"schema"が返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
492
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.67 getSearchStringEscape()
(1) 機能
ワイルドカード文字をエスケープするために使用する文字列を取得します。
このメソッドを実行すると,表一覧や,列一覧などの一覧情報を取得する DatabaseMetaData インタ
フェースのメソッドで,パターン文字列を指定する引数に指定するワイルドカード文字をエスケープする
ために使用する文字列を取得できます。
(2) 形式
public synchronized String getSearchStringEscape() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に"\"が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.68 getSQLKeywords()
(1) 機能
データベース固有の SQL キーワードであり,かつ SQL:2003 のキーワードではないすべてのキーワード
を,コンマで区切ったリストで取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
493
(2) 形式
public synchronized String getSQLKeywords() throws SQLException
(3) 引数
なし。
(4) 戻り値
String オブジェクトが返却されます。
予約語については,マニュアル「HADB SQL リファレンス」の「予約語」を参照してください。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
(6) 留意事項
このメソッドで返却する予約語には,削除した予約語も含まれるため,注意してください。
6.6.69 getSQLStateType()
(1) 機能
SQLException クラスの getSQLState メソッドによって返される SQLSTATE が X/Open(現在は Open
Group)の SQL CLI であるか SQL:2003 であるかを取得します。
(2) 形式
public synchronized int getSQLStateType() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に sqlStateSQL が返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
494
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.70 getStringFunctions()
(1) 機能
使用できる文字列関数をコンマで区切ったリストで取得します。
(2) 形式
public synchronized String getStringFunctions() throws SQLException
(3) 引数
なし。
(4) 戻り値
String オブジェクトが返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.71 getSuperTables(String catalog, String schemaPattern, String
tableNamePattern)
(1) 機能
特定のスキーマで定義されているテーブル階層の情報を取得します。
(2) 形式
public synchronized ResultSet getSuperTables(String catalog, String schemaPattern, String
tableNamePattern) throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
495
(3) 引数
String catalog:
カタログ名を指定します。ただし,指定しても無視されます。
String schemaPattern:
スキーマ名パターンを指定します。ただし,指定しても無視されます。
String tableNamePattern:
表名パターンを指定します。ただし,指定しても無視されます。
(4) 戻り値
常に検索結果行数 0 の ResultSet オブジェクトが返却されます。返却される ResultSet オブジェクトの形
式を次の表に示します。
表 6‒58 返却される ResultSet オブジェクトの形式(getSuperTables メソッドの場合)
列番号
型
列名
列の意味
1
String
TABLE_CAT
カタログ名
2
String
TABLE_SCHEM
スキーマ名
3
String
TABLE_NAME
型名
4
String
SUPERTABLE_NAME
スーパタイプ名
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.72 getSuperTypes(String catalog, String schemaPattern, String
typeNamePattern)
(1) 機能
特定のスキーマで定義されているユーザ定義型(UDT)階層の情報を取得します。
(2) 形式
public synchronized ResultSet getSuperTypes(String catalog, String schemaPattern, String
typeNamePattern) throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
496
(3) 引数
String catalog:
カタログ名を指定します。ただし,指定しても無視されます。
String schemaPattern:
スキーマ名パターンを指定します。ただし,指定しても無視されます。
String typeNamePattern:
UDT 名パターンを指定します。ただし,指定しても無視されます。
(4) 戻り値
常に検索結果行数 0 の ResultSet オブジェクトが返却されます。返却される ResultSet オブジェクトの形
式を次の表に示します。
表 6‒59 返却される ResultSet オブジェクトの形式(getSuperTypes メソッドの場合)
列番号
型
列名
列の意味
1
String
TABLE_CAT
UDT のカタログ名
2
String
TABLE_SCHEM
UDT のスキーマ名
3
String
TABLE_NAME
UDT の型名
4
String
SUPERTYPE_CAT
直接のスーパタイプのカタログ名
5
String
SUPERTYPE_SCHEM
直接のスーパタイプのスキーマ名
6
String
SUPERTYPE_NAME
直接のスーパタイプのスーパタイプ名
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.73 getSystemFunctions()
(1) 機能
使用できるシステム関数をコンマで区切ったリストで取得します。
(2) 形式
public synchronized String getSystemFunctions() throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
497
(3) 引数
なし。
(4) 戻り値
String オブジェクトが返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.74 getTablePrivileges(String catalog, String schemaPattern,
String tableNamePattern)
(1) 機能
表に対するアクセス権限に関する情報を取得します。
このメソッドを実行した HADB ユーザが持っている権限によって,取得できるアクセス権限の情報が変わ
ります。権限と取得できる表の情報の対応については,マニュアル「HADB システム構築・運用ガイド」
の「アクセス権限と HADB ユーザがアクセスできるスキーマオブジェクトの関係」を参照してください。
(2) 形式
public synchronized ResultSet getTablePrivileges(String catalog, String schemaPattern,
String tableNamePattern) throws SQLException
(3) 引数
String catalog:
カタログ名を指定します。ただし,指定しても無視されます。
String schemaPattern:
スキーマ名パターン※を指定します。
String tableNamePattern:
表名パターン※を指定します。
注※
各パターンに指定できる特殊文字については,「6.6.1(4) パターン文字列中に指定できる特殊文字」
を参照してください。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
498
(4) 戻り値
返却される ResultSet オブジェクトの形式を次の表に示します。
表 6‒60 返却される ResultSet オブジェクトの形式(getTablePrivileges メソッドの場合)
列番号
1
型
列名
列の意味
String
TABLE_CAT
カタログ名
常に空文字を返します。
2
String
TABLE_SCHEM
スキーマ名
3
String
TABLE_NAME
表名
4
String
GRANTOR
アクセス権限の付与者
5
String
GRANTEE
アクセス権限の被付与者
6
String
PRIVILEGE
許可されているアクセス権限名を返します。
• "SELECT":SELECT 権限
• "INSERT":INSERT 権限
• "UPDATE":UPDATE 権限
• "DELETE":DELETE 権限
• "TRUNCATE":TRUNCATE 権限
• "REFERENCES":REFERENCES 権限
• "IMPORT TABLE":IMPORT TABLE 権限
• "REBUILD INDEX":REBUILD INDEX 権限
• "GET COSTINFO":GET COSTINFO 権限
• "EXPORT TABLE":EXPORT TABLE 権限
• "MERGE CHUNK":MERGE CHUNK 権限
• "CHANGE CHUNK COMMENT":CHANGE
CHUNK COMMENT 権限
• "CHANGE CHUNK STATUS":CHANGE
CHUNK STATUS 権限
7
String
IS_GRANTABLE
アクセス権限の被付与者が,ほかの HADB ユーザに
アクセス権限を与えることができるかどうかを返し
ます。
• "YES":ほかの HADB ユーザにアクセス権限を与
えられます。
• "NO":ほかの HADB ユーザにアクセス権限を与
えられません。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
499
6.6.75 getTables(String catalog, String schemaPattern, String
tableNamePattern, String[] types)
(1) 機能
表に関する情報を取得します。
このメソッドを実行した HADB ユーザが持っている権限によって,取得できる表の情報が変わります。権
限と取得できる表の情報については,マニュアル「HADB システム構築・運用ガイド」の「アクセス権
限と HADB ユーザがアクセスできるスキーマオブジェクトの関係」を参照してください。
(2) 形式
public synchronized ResultSet getTables(String catalog, String schemaPattern, String
tableNamePattern, String[] types) throws SQLException
(3) 引数
String catalog:
カタログ名を指定します。ただし,指定しても無視されます。
String schemaPattern:
スキーマ名パターン※を指定します。大文字と小文字は区別されます。
String tableNamePattern:
表名パターン※を指定します。大文字と小文字は区別されます。
String[] types:
表の型のリストを指定します。getTableTypes メソッドによって返却される表の型を指定します。大
文字と小文字は区別されます。
null を指定した場合,すべての表の種類が指定されたと仮定されます。
注※
各パターンに指定できる特殊文字については,「6.6.1(4) パターン文字列中に指定できる特殊文字」
を参照してください。
(4) 戻り値
ResultSet オブジェクトが返却されます。返却される ResultSet オブジェクトの形式を次の表に示します。
表 6‒61 返却される ResultSet オブジェクトの形式(getTables メソッドの場合)
列番号
1
型
列名
列の意味
String
TABLE_CAT
常に空の文字列を返します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
500
列番号
型
列名
列の意味
2
String
TABLE_SCHEM
スキーマ名
3
String
TABLE_NAME
表名
4
String
TABLE_TYPE
表の種類
• TABLE:実表
• VIEW:ビュー表
• SYSTEM TABLE:ディクショナリ表,またはシ
ステム表
5
String
REMARKS
常に空の文字列を返します。
6
String
TYPE_CAT
常に空の文字列を返します。
7
String
TYPE_SCHEM
常に空の文字列を返します。
8
String
TYPE_NAME
常に空の文字列を返します。
9
String
SELF_REFERENCING_COL_
NAME
常に空の文字列を返します。
10
String
REF_GENERATION
常に空の文字列を返します。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• このメソッドを実行する前に,Connection オブジェクトがクローズされている場合
• 引数 String[] types の 1 つ以上の要素が null である場合
• 引数 String[] types の 1 つ以上の要素が,次のすべての文字列に該当しない場合
"TABLE","VIEW","SYSTEM TABLE"
6.6.76 getTableTypes()
(1) 機能
表の種類を取得します。
(2) 形式
public synchronized ResultSet getTableTypes() throws SQLException
(3) 引数
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
501
(4) 戻り値
ResultSet オブジェクトが返却されます。返却される ResultSet オブジェクトの形式を次の表に示します。
表 6‒62 返却される ResultSet オブジェクトの形式(getTableTypes メソッドの場合)
列番号
1
型
列名
列の意味
String
TABLE_TYPE
表の種類
• TABLE:実表
• VIEW:ビュー表
• SYSTEM TABLE:ディクショナリ表,およびシ
ステム表
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.77 getTimeDateFunctions()
(1) 機能
使用できる時間関数と日付関数をコンマで区切ったリストで取得します。
(2) 形式
public synchronized String getTimeDateFunctions() throws SQLException
(3) 引数
なし。
(4) 戻り値
String オブジェクトが返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
502
6.6.78 getTypeInfo()
(1) 機能
標準 SQL の型に関する情報を取得します。
(2) 形式
public synchronized ResultSet getTypeInfo() throws SQLException
(3) 引数
なし。
(4) 戻り値
ResultSet オブジェクトが返却されます。返却される ResultSet オブジェクトの形式を次の表に示します。
表 6‒63 返却される ResultSet オブジェクトの形式(getTypeInfo メソッドの場合)
列番号
型
列名
列の意味
1
String
TYPE_NAME
型名
2
short
DATA_TYPE
java.sql.Types の SQL データ型
3
int
PRECISION
最大の精度
4
String
LITERAL_PREFIX
リテラルを引用するのに使用する接頭辞
5
String
LITERAL_SUFFIX
リテラルを引用するのに使用する接尾辞
6
String
CREATE_PARAMS
型の作成に使用するパラメタ
7
short
NULLABLE
この型にナル値を使用できるかどうかを返します。
常に typeNullableUnknown を返します。
8
boolean
CASE_SENSITIVE
大文字と小文字を区別するかどうかを返します。
• true:文字列系データ型
• false:そのほかのデータ型
9
short
SEARCHABLE
この型に"WHERE"を使用できるかどうかを返します。
常に typeSearchable を返します。
10
boolean
UNSIGNED_ATTRIBUTE
符号なし属性かどうかを返します。
数値データは符号ありのため false,そのほかのデー
タ型は符号の有無に関係ないため false を返します。
11
boolean
FIXED_PREC_SCALE
通貨の値になれるかどうかを返します。
常に false を返します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
503
列番号
12
型
列名
列の意味
boolean
AUTO_INCREMENT
自動インクリメントの値に使用できるかどうかを返
します。
常に false を返します。
13
String
LOCAL_TYPE_NAME
型名の地域対応されたバージョン
型名と同じものを返します。
14
short
MINIMUM_SCALE
サポートされる最小スケール
15
short
MAXIMUM_SCALE
サポートされる最大スケール
16
int
SQL_DATA_TYPE
常にナル値を返します。
17
int
SQL_DATETIME_SUB
常にナル値を返します。
18
int
NUM_PREC_RADIX
数値データは 10,それ以外は 0
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.79 getUDTs(String catalog, String schemaPattern, String
typeNamePattern, int[] types)
(1) 機能
ユーザ定義型(UDT)に関する情報を取得します。
(2) 形式
public synchronized ResultSet getUDTs(String catalog, String schemaPattern, String
typeNamePattern, int[] types) throws SQLException
(3) 引数
String catalog:
カタログ名を指定します。ただし,指定しても無視されます。
String schemaPattern:
スキーマ名パターンを指定します。大文字と小文字は区別されます。
String tableNamePattern:
表名パターンを指定します。大文字と小文字は区別されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
504
int[] types:
ユーザ定義型のリストを指定します。大文字と小文字は区別されます。
(4) 戻り値
常に検索結果行数 0 の ResultSet オブジェクトが返却されます。返却される ResultSet オブジェクトの形
式を次の表に示します。
表 6‒64 返却される ResultSet オブジェクトの形式(getUDTs メソッドの場合)
列番号
型
列名
列の意味
1
String
TYPE_CAT
カタログ名
2
String
TYPE_SCHEM
スキーマ名
3
String
TYPE_NAME
型名
4
String
CLASS_NAME
Java のクラス名
5
int
DATA_TYPE
java.sql.Types で定義されている型値
6
String
REMARKS
型に関する説明
7
short
BASE_TYPE
DISTINCT 型のソースの型の型コード,または
java.sql.Types で定義される構造型の
SELF_REFERENCING_COLUMN のユーザ生成参
照型を実装する型の型コード
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.80 getURL()
(1) 機能
HADB サーバの接続先情報を指定した URL を取得します。
(2) 形式
public synchronized String getURL() throws SQLException
(3) 引数
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
505
(4) 戻り値
String オブジェクトが返却されます。
接続先情報を指定した URL がない場合は,null が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.81 getUserName()
(1) 機能
HADB サーバに接続した認可識別子を取得します。
(2) 形式
public synchronized String getUserName() throws SQLException
(3) 引数
なし。
(4) 戻り値
String オブジェクトが返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.82 getVersionColumns(String catalog, String schema, String
table)
(1) 機能
行の任意の値が変更された場合に,自動的に更新される表の列に関する記述を取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
506
(2) 形式
public synchronized ResultSet getVersionColumns(String catalog, String schema, String
table) throws SQLException
(3) 引数
String catalog:
カタログ名を指定します。ただし,指定しても無視されます。
String schema:
スキーマ名を指定します。大文字と小文字は区別されます。
String table:
表名を指定します。大文字と小文字は区別されます。
(4) 戻り値
常に検索結果行数 0 の ResultSet オブジェクトが返却されます。返却される ResultSet オブジェクトの形
式を次の表に示します。
表 6‒65 返却される ResultSet オブジェクトの形式(getVersionColumns メソッドの場合)
列番号
型
列名
列の意味
1
short
SCOPE
未使用
2
String
COLUMN_NAME
列名
3
int
DATA_TYPE
SQL 型
4
String
TYPE_NAME
型名
5
int
COLUMN_SIZE
精度
6
int
BUFFER_LENGTH
列値のバイト数
7
short
DECIMAL_DIGITS
小数点以下の桁数
8
short
PSEUDO_COLUMN
擬似列かどうか
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
507
6.6.83 insertsAreDetected(int type)
(1) 機能
ResultSet クラスの rowInserted メソッドを呼び出すことによって可視の行が挿入されたことを検出でき
るかどうかを取得します。
(2) 形式
public synchronized boolean insertsAreDetected(int type) throws SQLException
(3) 引数
int type:
結果セットタイプを指定します。
• ResultSet.TYPE_FORWARD_ONLY
• ResultSet.TYPE_SCROLL_INSENSITIVE
• ResultSet.TYPE_SCROLL_SENSITIVE
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.84 isCatalogAtStart()
(1) 機能
完全修飾された表名の開始部分(または終了部分)にカタログが現れるかどうかを取得します。
(2) 形式
public synchronized boolean isCatalogAtStart() throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
508
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.85 isReadOnly()
(1) 機能
読み取り専用モードかどうかを取得します。
(2) 形式
public synchronized boolean isReadOnly() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.86 locatorsUpdateCopy()
(1) 機能
LOB への変更が,コピーに対して行われたのか,LOB に直接行われたのかを示します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
509
(2) 形式
public synchronized boolean locatorsUpdateCopy() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.87 nullPlusNonNullIsNull()
(1) 機能
ナル値と非ナル値の連結をナル値とするかどうかを取得します。
(2) 形式
public synchronized boolean nullPlusNonNullIsNull() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
510
6.6.88 nullsAreSortedAtEnd()
(1) 機能
ナル値が,終了時にソート順に関係なくソートされるかどうかを取得します。
(2) 形式
public synchronized boolean nullsAreSortedAtEnd() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.89 nullsAreSortedAtStart()
(1) 機能
ナル値が,開始時にソート順に関係なくソートされるかどうかを取得します。
(2) 形式
public synchronized boolean nullsAreSortedAtStart() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
511
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.90 nullsAreSortedHigh()
(1) 機能
ナル値が高位にソートされるかどうかを取得します。
(2) 形式
public synchronized boolean nullsAreSortedHigh() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.91 nullsAreSortedLow()
(1) 機能
ナル値が下位にソートされるかどうかを取得します。
(2) 形式
public synchronized boolean nullsAreSortedLow() throws SQLException
(3) 引数
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
512
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.92 othersDeletesAreVisible(int type)
(1) 機能
ほかで行われた削除が可視かどうかを取得します。
(2) 形式
public synchronized boolean othersDeletesAreVisible(int type) throws SQLException
(3) 引数
int type:
結果セットタイプを指定します。
• ResultSet.TYPE_FORWARD_ONLY
• ResultSet.TYPE_SCROLL_INSENSITIVE
• ResultSet.TYPE_SCROLL_SENSITIVE
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
513
6.6.93 othersInsertsAreVisible(int type)
(1) 機能
ほかで行われた挿入が可視かどうかを取得します。
(2) 形式
public synchronized boolean othersInsertsAreVisible(int type) throws SQLException
(3) 引数
int type:
結果セットタイプを指定します。
• ResultSet.TYPE_FORWARD_ONLY
• ResultSet.TYPE_SCROLL_INSENSITIVE
• ResultSet.TYPE_SCROLL_SENSITIVE
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.94 othersUpdatesAreVisible(int type)
(1) 機能
ほかで行われた更新が可視かどうかを取得します。
(2) 形式
public synchronized boolean othersUpdatesAreVisible(int type) throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
514
(3) 引数
int type:
結果セットタイプを指定します。
• ResultSet.TYPE_FORWARD_ONLY
• ResultSet.TYPE_SCROLL_INSENSITIVE
• ResultSet.TYPE_SCROLL_SENSITIVE
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.95 ownDeletesAreVisible(int type)
(1) 機能
結果セット自身の削除が可視かどうかを取得します。
(2) 形式
public synchronized boolean ownDeletesAreVisible(int type) throws SQLException
(3) 引数
int type:
結果セットタイプを指定します。
• ResultSet.TYPE_FORWARD_ONLY
• ResultSet.TYPE_SCROLL_INSENSITIVE
• ResultSet.TYPE_SCROLL_SENSITIVE
(4) 戻り値
常に false が返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
515
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.96 ownInsertsAreVisible(int type)
(1) 機能
結果セット自身の挿入が可視かどうかを取得します。
(2) 形式
public synchronized boolean ownInsertsAreVisible(int type) throws SQLException
(3) 引数
int type:
結果セットタイプを指定します。
• ResultSet.TYPE_FORWARD_ONLY
• ResultSet.TYPE_SCROLL_INSENSITIVE
• ResultSet.TYPE_SCROLL_SENSITIVE
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.97 ownUpdatesAreVisible(int type)
(1) 機能
結果セット自身の更新が可視かどうかを取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
516
(2) 形式
public synchronized boolean ownUpdatesAreVisible(int type) throws SQLException
(3) 引数
int type:
結果セットタイプを指定します。
• ResultSet.TYPE_FORWARD_ONLY
• ResultSet.TYPE_SCROLL_INSENSITIVE
• ResultSet.TYPE_SCROLL_SENSITIVE
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.98 storesLowerCaseIdentifiers()
(1) 機能
大文字と小文字が混在する二重引用符なしの SQL 識別子を,大文字と小文字を区別しないで処理し,小文
字で格納するかどうかを取得します。
(2) 形式
public synchronized boolean storesLowerCaseIdentifiers() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
517
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.99 storesLowerCaseQuotedIdentifiers()
(1) 機能
大文字と小文字が混在する二重引用符付きの SQL 識別子を,大文字と小文字を区別しないで処理し,小文
字で格納するかどうかを取得します。
(2) 形式
public synchronized boolean storesLowerCaseQuotedIdentifiers() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.100 storesMixedCaseIdentifiers()
(1) 機能
大文字と小文字が混在する二重引用符なしの SQL 識別子を,大文字と小文字を区別しないで処理し,大文
字と小文字混在で格納するかどうかを取得します。
(2) 形式
public synchronized boolean storesMixedCaseIdentifiers() throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
518
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.101 storesMixedCaseQuotedIdentifiers()
(1) 機能
大文字と小文字が混在する二重引用符付きの SQL 識別子を,大文字と小文字を区別しないで処理し,大文
字と小文字混在で格納するかどうかを取得します。
(2) 形式
public synchronized boolean storesMixedCaseQuotedIdentifiers() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
519
6.6.102 storesUpperCaseIdentifiers()
(1) 機能
大文字と小文字が混在する二重引用符なしの SQL 識別子を,大文字と小文字を区別しないで処理し,大文
字で格納するかどうかを取得します。
(2) 形式
public synchronized boolean storesUpperCaseIdentifiers() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.103 storesUpperCaseQuotedIdentifiers()
(1) 機能
大文字と小文字が混在する二重引用符付きの SQL 識別子を,大文字と小文字を区別しないで処理し,大文
字で格納するかどうかを取得します。
(2) 形式
public synchronized boolean storesUpperCaseQuotedIdentifiers() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
520
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.104 supportsAlterTableWithAddColumn()
(1) 機能
列追加のある ALTER TABLE がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsAlterTableWithAddColumn() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.105 supportsAlterTableWithDropColumn()
(1) 機能
列削除のある ALTER TABLE がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsAlterTableWithDropColumn() throws SQLException
(3) 引数
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
521
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.106 supportsANSI92EntryLevelSQL()
(1) 機能
ANSI92 エントリレベルの SQL 文法がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsANSI92EntryLevelSQL() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.107 supportsANSI92FullSQL()
(1) 機能
ANSI92 完全レベルの SQL 文法がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsANSI92FullSQL() throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
522
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.108 supportsANSI92IntermediateSQL()
(1) 機能
ANSI92 中間レベルの SQL 文法がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsANSI92IntermediateSQL() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.109 supportsBatchUpdates()
(1) 機能
バッチ更新がサポートされているかどうかを取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
523
(2) 形式
public synchronized boolean supportsBatchUpdates() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.110 supportsCatalogsInDataManipulation()
(1) 機能
データ操作文でカタログ名を使用できるかどうかを取得します。
(2) 形式
public synchronized boolean supportsCatalogsInDataManipulation() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
524
6.6.111 supportsCatalogsInIndexDefinitions()
(1) 機能
インデクス定義文でカタログ名を使用できるかどうかを取得します。
(2) 形式
public synchronized boolean supportsCatalogsInIndexDefinitions() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.112 supportsCatalogsInPrivilegeDefinitions()
(1) 機能
権限付与の定義文(GRANT 文)
,または権限取り消しの定義文(REVOKE 文)で,カタログ名を使用で
きるかどうかを取得します。
(2) 形式
public synchronized boolean supportsCatalogsInPrivilegeDefinitions() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
525
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.113 supportsCatalogsInProcedureCalls()
(1) 機能
プロシジャ呼び出し文でカタログ名を使用できるかどうかを取得します。
(2) 形式
public synchronized boolean supportsCatalogsInProcedureCalls() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.114 supportsCatalogsInTableDefinitions()
(1) 機能
表定義文でカタログ名を使用できるかどうかを取得します。
(2) 形式
public synchronized boolean supportsCatalogsInTableDefinitions() throws SQLException
(3) 引数
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
526
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.115 supportsColumnAliasing()
(1) 機能
列の別名がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsColumnAliasing() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.116 supportsConvert()
(1) 機能
SQL の型間の CONVERT 関数がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsConvert() throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
527
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.117 supportsConvert(int fromType, int toType)
(1) 機能
指定された SQL の型間の CONVERT 関数がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsConvert(int fromType, int toType) throws SQLException
(3) 引数
int fromType:
変換元の SQL 型(java.sql.Types の SQL 型)
int toType:
変換先の SQL 型(java.sql.Types の SQL 型)
(4) 戻り値
次に示すどちらかの値が返却されます。
• true:サポートしています。
• false:サポートしていません。
変換元の型と変換先の型の組み合わせによる戻り値を次の表に示します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
528
表 6‒66 変換元の型と変換先の型の組み合わせによる戻り値
(凡例)
○:true(サポート)
△:true(通算日変換としてサポート)
−:false(未サポート)
注※1
HADB サーバに対応するデータ型がありません。
注※2
対応する HADB サーバのデータ型については,「5.6.1(1) HADB のデータ型と JDBC の SQL データ
型の対応」を参照してください。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.118 supportsCoreSQLGrammar()
(1) 機能
ODBC Core SQL 文法がサポートされているかどうかを取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
529
(2) 形式
public synchronized boolean supportsCoreSQLGrammar() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.119 supportsCorrelatedSubqueries()
(1) 機能
外への参照列を含む副問合せがサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsCorrelatedSubqueries() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
530
6.6.120 supportsDataDefinitionAndDataManipulationTransactions()
(1) 機能
トランザクションで,データ定義文とデータ操作文の両方がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsDataDefinitionAndDataManipulationTransactions() throws
SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.121 supportsDataManipulationTransactionsOnly()
(1) 機能
トランザクションでデータ操作文だけがサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsDataManipulationTransactionsOnly() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
531
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.122 supportsDifferentTableCorrelationNames()
(1) 機能
表相関名がサポートされている場合,表名と異なる名前であるという制限を付けるかどうかを取得します。
(2) 形式
public synchronized boolean supportsDifferentTableCorrelationNames() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.123 supportsExpressionsInOrderBy()
(1) 機能
ORDER BY リスト中で値式がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsExpressionsInOrderBy() throws SQLException
(3) 引数
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
532
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.124 supportsExtendedSQLGrammar()
(1) 機能
ODBC Extended SQL 文法がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsExtendedSQLGrammar() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.125 supportsFullOuterJoins()
(1) 機能
完全な入れ子の外結合がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsFullOuterJoins() throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
533
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.126 supportsGetGeneratedKeys()
(1) 機能
文が実行されたあとに自動生成キーを取得できるかどうかを取得します。
(2) 形式
public synchronized boolean supportsGetGeneratedKeys() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.127 supportsGroupBy()
(1) 機能
GROUP BY 句がサポートされているかどうかを取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
534
(2) 形式
public synchronized boolean supportsGroupBy() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.128 supportsGroupByBeyondSelect()
(1) 機能
SELECT 文中のすべての列が GROUP BY 句に含まれるという条件で,このデータベースによって,
GROUP BY 句で SELECT 文中にない列の使用がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsGroupByBeyondSelect() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
535
6.6.129 supportsGroupByUnrelated()
(1) 機能
GROUP BY 句で SELECT 文中にない列の使用がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsGroupByUnrelated() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.130 supportsIntegrityEnhancementFacility()
(1) 機能
SQL Integrity Enhancement Facility がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsIntegrityEnhancementFacility() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
536
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.131 supportsLikeEscapeClause()
(1) 機能
LIKE 述語のエスケープ句がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsLikeEscapeClause() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.132 supportsLimitedOuterJoins()
(1) 機能
外結合に関し,制限されたサポートが提供されるかどうかを取得します。
(2) 形式
public synchronized boolean supportsLimitedOuterJoins() throws SQLException
(3) 引数
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
537
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.133 supportsMinimumSQLGrammar()
(1) 機能
ODBC Minimum SQL 文法がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsMinimumSQLGrammar() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.134 supportsMixedCaseIdentifiers()
(1) 機能
大文字と小文字が混在する二重引用符なしの SQL 識別子を,大文字と小文字を区別して処理し,大文字と
小文字混在で格納するかどうかを取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
538
(2) 形式
public synchronized boolean supportsMixedCaseIdentifiers() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.135 supportsMixedCaseQuotedIdentifiers()
(1) 機能
大文字と小文字が混在する二重引用符付きの SQL 識別子を,大文字と小文字を区別して処理し,結果とし
て大文字と小文字混在で格納するかどうかを取得します。
(2) 形式
public synchronized boolean supportsMixedCaseQuotedIdentifiers() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
539
6.6.136 supportsMultipleOpenResults()
(1) 機能
CallableStatement オブジェクトから同時に返された複数の ResultSet オブジェクトを持つことが可能か
どうかを取得します。
(2) 形式
public synchronized boolean supportsMultipleOpenResults() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.137 supportsMultipleResultSets()
(1) 機能
execute メソッドの単一の呼び出しからの複数の ResultSet オブジェクトの取得がサポートされているか
どうかを取得します。
(2) 形式
public synchronized boolean supportsMultipleResultSets() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
540
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.138 supportsMultipleTransactions()
(1) 機能
一度に複数のトランザクションを(異なった接続で)オープンできるかどうかを取得します。
(2) 形式
public synchronized boolean supportsMultipleTransactions() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.139 supportsNamedParameters()
(1) 機能
CALL 文への名前付きパラメタがサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsNamedParameters() throws SQLException
(3) 引数
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
541
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.140 supportsNonNullableColumns()
(1) 機能
列を非ナル値として定義できるかどうかを取得します。
(2) 形式
public synchronized boolean supportsNonNullableColumns() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.141 supportsOpenCursorsAcrossCommit()
(1) 機能
コミット間でカーソルがオープンされたままの状態がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsOpenCursorsAcrossCommit() throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
542
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.142 supportsOpenCursorsAcrossRollback()
(1) 機能
ロールバック間でカーソルがオープンされたままの状態がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsOpenCursorsAcrossRollback() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.143 supportsOpenStatementsAcrossCommit()
(1) 機能
コミット間で文ハンドルがオープンされたままの状態がサポートされているかどうかを取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
543
(2) 形式
public synchronized boolean supportsOpenStatementsAcrossCommit() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.144 supportsOpenStatementsAcrossRollback()
(1) 機能
ロールバック間で文ハンドルがオープンされたままの状態がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsOpenStatementsAcrossRollback() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
544
6.6.145 supportsOrderByUnrelated()
(1) 機能
ORDER BY 句で SELECT 文中にない列の使用がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsOrderByUnrelated() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.146 supportsOuterJoins()
(1) 機能
外結合が何らかの形式でサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsOuterJoins() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
545
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.147 supportsPositionedDelete()
(1) 機能
位置指定された DELETE 文がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsPositionedDelete() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.148 supportsPositionedUpdate()
(1) 機能
位置指定された UPDATE 文がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsPositionedUpdate() throws SQLException
(3) 引数
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
546
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.149 supportsResultSetConcurrency(int type, int concurrency)
(1) 機能
指定した結果セットタイプと並行処理タイプの組み合わせをサポートしているかどうかを返します。
(2) 形式
public synchronized boolean supportsResultSetConcurrency(int type, int concurrency) throws
SQLException
(3) 引数
int type:
結果セットタイプを指定します。
int concurrency:
並行処理タイプを指定します。
(4) 戻り値
boolean 型:
次に示すどちらかの値が返却されます。
true:サポートしています。
false:サポートしていません。
type が ResultSet.TYPE_FORWARD_ONLY または ResultSet.TYPE_SCROLL_INSENSITIVE,
かつ concurrency が ResultSet.CONCUR_READ_ONLY の場合,true が返却されます。それ以外の
場合は false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
547
6.6.150 supportsResultSetHoldability(int holdability)
(1) 機能
指定された ResultSet オブジェクトの保持機能がサポートされているかどうかを返します。
(2) 形式
public synchronized boolean supportsResultSetHoldability(int holdability) throws
SQLException
(3) 引数
int holdability:
次に示すどちらかの値を指定します。
• ResultSet.HOLD_CURSORS_OVER_COMMIT
Connection.commit メソッドが呼び出されたときに ResultSet オブジェクトがクローズされません。
• ResultSet.CLOSE_CURSORS_AT_COMMIT
Connection.commit メソッドが呼び出されたときに ResultSet オブジェクトがクローズされます。
(4) 戻り値
boolean 型:
true:サポートしています。
false:サポートしていません。
holdability に ResultSet.HOLD_CURSORS_OVER_COMMIT が指定された場合は,true が返却さ
れます。それ以外の場合は,false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.151 supportsResultSetType(int type)
(1) 機能
指定した結果セットタイプがサポートされているかどうかを返します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
548
(2) 形式
public synchronized boolean supportsResultSetType(int type) throws SQLException
(3) 引数
int type:
結果セットタイプを指定します。
(4) 戻り値
boolean 型:
次に示すどちらかの値が返却されます。
true:サポートしています。
false:サポートしていません。
type に ResultSet.TYPE_FORWARD_ONLY または ResultSet.TYPE_SCROLL_INSENSITIVE を
指定した場合は,true が返却されます。それ以外の場合は,false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.152 supportsSavepoints()
(1) 機能
セーブポイントがサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsSavepoints() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
549
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.153 supportsSchemasInDataManipulation()
(1) 機能
データ操作文でスキーマ名を使用できるかどうかを取得します。
(2) 形式
public synchronized boolean supportsSchemasInDataManipulation() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.154 supportsSchemasInIndexDefinitions()
(1) 機能
インデクス定義文でスキーマ名を使用できるかどうかを取得します。
(2) 形式
public synchronized boolean supportsSchemasInIndexDefinitions() throws SQLException
(3) 引数
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
550
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.155 supportsSchemasInPrivilegeDefinitions()
(1) 機能
権限付与の定義文(GRANT 文)
,または権限取り消しの定義文(REVOKE 文)で,スキーマ名を使用で
きるかどうかを取得します。
(2) 形式
public synchronized boolean supportsSchemasInPrivilegeDefinitions() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.156 supportsSchemasInProcedureCalls()
(1) 機能
プロシジャ呼び出し文でスキーマ名を使用できるかどうかを取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
551
(2) 形式
public synchronized boolean supportsSchemasInProcedureCalls() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.157 supportsSchemasInTableDefinitions()
(1) 機能
表定義文でスキーマ名を使用できるかどうかを取得します。
(2) 形式
public synchronized boolean supportsSchemasInTableDefinitions() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
552
6.6.158 supportsSelectForUpdate()
(1) 機能
SELECT FOR UPDATE 文がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsSelectForUpdate() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.159 supportsStatementPooling()
(1) 機能
文ハンドルのプールがサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsStatementPooling() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
553
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.160 supportsStoredFunctionsUsingCallSyntax()
(1) 機能
ストアドプロシジャエスケープ構文を使用したユーザ定義関数,またはベンダ関数の呼び出しをサポート
するかどうかを取得します。
(2) 形式
public synchronized boolean supportsStoredFunctionsUsingCallSyntax() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.161 supportsStoredProcedures()
(1) 機能
ストアドプロシジャエスケープ構文を使用するストアドプロシジャ呼び出しがサポートされているかどう
かを判定します。
(2) 形式
public synchronized boolean supportsStoredProcedures() throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
554
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.162 supportsSubqueriesInComparisons()
(1) 機能
比較述語で副問合せがサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsSubqueriesInComparisons() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.163 supportsSubqueriesInExists()
(1) 機能
EXISTS 述語で副問合せがサポートされているかどうかを取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
555
(2) 形式
public synchronized boolean supportsSubqueriesInExists() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.164 supportsSubqueriesInIns()
(1) 機能
IN 述語で副問合せがサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsSubqueriesInIns() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
556
6.6.165 supportsSubqueriesInQuantifieds()
(1) 機能
限定述語で副問合せがサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsSubqueriesInQuantifieds() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.166 supportsTableCorrelationNames()
(1) 機能
表の相関名がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsTableCorrelationNames() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
557
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.167 supportsTransactionIsolationLevel(int level)
(1) 機能
指定したトランザクション隔離性水準がサポートされているかどうかを返します。
(2) 形式
public synchronized boolean supportsTransactionIsolationLevel(int level) throws SQLException
(3) 引数
int level:
トランザクション隔離性水準を指定します。
(4) 戻り値
boolean 型:
true:サポートしています。
false:サポートしていません。
level に Connection.TRANSACTION_READ_COMMITTED または
Connection.TRANSACTION_REPEATABLE_READ を指定した場合は,true が返却されます。そ
れ以外の場合は,false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.168 supportsTransactions()
(1) 機能
トランザクションがサポートされているかどうかを取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
558
(2) 形式
public synchronized boolean supportsTransactions() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.169 supportsUnion()
(1) 機能
SQL UNION がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsUnion() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
559
6.6.170 supportsUnionAll()
(1) 機能
SQL UNION ALL がサポートされているかどうかを取得します。
(2) 形式
public synchronized boolean supportsUnionAll() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に true が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.171 updatesAreDetected(int type)
(1) 機能
ResultSet クラスの rowUpdated メソッドを呼び出すことによって可視の行が更新されたことを検出でき
るかどうかを取得します。
(2) 形式
public synchronized boolean updatesAreDetected(int type) throws SQLException
(3) 引数
int type:
結果セットタイプを指定します。
• ResultSet.TYPE_FORWARD_ONLY
• ResultSet.TYPE_SCROLL_INSENSITIVE
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
560
• ResultSet.TYPE_SCROLL_SENSITIVE
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.172 usesLocalFilePerTable()
(1) 機能
各表にファイルを使用するかどうかを取得します。
(2) 形式
public synchronized boolean usesLocalFilePerTable() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6.6.173 usesLocalFiles()
(1) 機能
ローカルファイルに表を格納するかどうかを取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
561
(2) 形式
public synchronized boolean usesLocalFiles() throws SQLException
(3) 引数
なし。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
このメソッドを実行する前に,Connection オブジェクトがクローズされている場合,SQLException が
投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
562
6.7 ResultSetMetaData インタフェース
ここでは,ResultSetMetaData インタフェースで提供されているメソッドについて説明します。
6.7.1 ResultSetMetaData インタフェースのメソッド一覧
(1) ResultSetMetaData インタフェースの主な機能
ResultSetMetaData インタフェースでは,主に次の機能が提供されています。
• ResultSet(結果セット)の各列に対する,データ型およびデータ長などのメタ情報の返却
(2) HADB でサポートしている ResultSetMetaData インタフェースのメ
ソッド
HADB でサポートしている ResultSetMetaData インタフェースのメソッドの一覧を次の表に示します。
表 6‒67 ResultSetMetaData インタフェースのメソッドの一覧
項番
ResultSetMetaData インタフェースのメソッド
機能
1
getCatalogName(int column)
指定した列の表のカタログ名を取得します。
2
getColumnClassName(int column)
列のデータ型に対する Java クラスの完全指定された名前を取
得します。
3
getColumnCount()
ResultSet オブジェクトの列数を取得します。
4
getColumnDisplaySize(int column)
指定した列の通常の最大幅を文字数で返します。
5
getColumnLabel(int column)
印刷や表示に使用する列の推奨タイトルを取得します。
6
getColumnName(int column)
指定した列の名称を取得します。
7
getColumnType(int column)
指定した列の SQL データ型を取得します。
8
getColumnTypeName(int column)
指定した列のデータ型を取得します。
9
getPrecision(int column)
指定した列の桁数を取得します。
10
getScale(int column)
指定した列の小数点以下の桁数を取得します。
11
getSchemaName(int column)
指定した列のスキーマ名を取得します。
12
getTableName(int column)
指定した列の表名を取得します。
13
isAutoIncrement(int column)
指定した列が自動的に番号付けされて読み取り専用として扱わ
れるかどうかを返します。
14
isCaseSensitive(int column)
指定した列が大文字と小文字を区別するかどうかを返します。
15
isCurrency(int column)
指定した列が通貨の値かどうかを返します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
563
項番
ResultSetMetaData インタフェースのメソッド
機能
16
isDefinitelyWritable(int column)
指定した列への書き込みが必ず成功するかどうかを返します。
17
isNullable(int column)
指定した列にナル値をセットできるかどうかを返します。
18
isReadOnly(int column)
指定した列が読み取り専用でないかどうかを返します。
19
isSearchable(int column)
指定した列が where 句に指定できるかどうかを返します。
20
isSigned(int column)
指定した列の値が,符号付き数値かどうかを返します。
21
isWritable(int column)
指定した列への書き込みを成功させることができるかどうかを
返します。
注
この表に記載されていないメソッドは,HADB ではサポートしていません。サポートしていないメソッ
ドを実行すると,SQLException が投入されることがあります。
(3) 必要なパッケージ名称とクラス名称
ResultSetMetaData インタフェースを使用する場合に必要なパッケージ名称とクラス名称を次に示します。
• パッケージ名称:com.hitachi.hadb.jdbc
• クラス名称:AdbResultSetMetaData
6.7.2 getCatalogName(int column)
(1) 機能
指定した列の表のカタログ名を取得します。
(2) 形式
public synchronized String getCatalogName(int column) throws SQLException
(3) 引数
int column:
1 から始まる列番号を指定します。
(4) 戻り値
String オブジェクトが返却されます。
常に空の文字列が返却されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
564
(5) 発生する例外
column に指定した値が 0 以下,または列数より大きい場合,SQLException が投入されます。
6.7.3 getColumnClassName(int column)
(1) 機能
列のデータ型に対する Java クラスの完全指定された名前を取得します。
(2) 形式
public synchronized String getColumnClassName(int column) throws SQLException
(3) 引数
int column:
1 から始まる列番号を指定します。
(4) 戻り値
String オブジェクトが返却されます。
列に対して ResultSet オブジェクトの getObject メソッドを実行した結果,返却する Java クラスの型を
String 型で返します。列のデータ型と返却値を次の表に示します。
表 6‒68 getColumnClassName メソッドを実行して返却される文字列
列のデータ型(HADB のデータ型)
返却される文字列
INTEGER
"java.lang.Long"
SMALLINT
"java.lang.Integer"
"java.lang.Short"※
DOUBLE PRECISION
"java.lang.Double"
DECIMAL
"java.math.BigDecimal"
CHAR
"java.lang.String"
VARCHAR
"java.lang.String"
DATE
"java.sql.Date"
TIME
"java.sql.Time"
TIMESTAMP
"java.sql.Timestamp"
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
565
列のデータ型(HADB のデータ型)
返却される文字列
BINARY
"java.lang.Object"
VARBINARY
"java.lang.Object"
ROW
"java.lang.Object"
BOOLEAN(DatabaseMetaData から生成した ResultSet にだけ存在する列)
"java.lang.Boolean"
注※
DatabaseMetaData から生成した ResultSet にだけ存在する列で,データ型が short で規定されている列の場合,この値が
返却されます。
(5) 発生する例外
column に指定した値が 0 以下,または列数より大きい場合,SQLException が投入されます。
6.7.4 getColumnCount()
(1) 機能
ResultSet オブジェクトの列数を取得します。
(2) 形式
public synchronized int getColumnCount() throws SQLException
(3) 引数
なし。
(4) 戻り値
ResultSet オブジェクトの列数が返却されます。
(5) 発生する例外
なし。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
566
6.7.5 getColumnDisplaySize(int column)
(1) 機能
指定した列の通常の最大幅を文字数で返します。
(2) 形式
public synchronized int getColumnDisplaySize(int column) throws SQLException
(3) 引数
int column:
1 から始まる列番号を指定します。
(4) 戻り値
最大文字数が返却されます。getColumnDisplaySize メソッドの戻り値を次の表に示します。
表 6‒69 getColumnDisplaySize メソッドの戻り値
列のデータ型(HADB のデータ型)
戻り値(最大文字数)
INTEGER
20
SMALLINT
11
6※1
DOUBLE PRECISION
23
DECIMAL(m,n)
m+2
CHAR(n)
n
VARCHAR(n)
DATE
10
TIME(p)
p = 0 の場合:8
p > 0 の場合:8 +(n + 1)
TIMESTAMP(p)
p = 0 の場合:19
p > 0 の場合:19 +(n + 1)
BINARY(n)
n×2
VARBINARY(n)
ROW
行長※2
BOOLEAN(DatabaseMetaData から生成した ResultSet にだけ存在する列)
5
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
567
注※1
DatabaseMetaData から生成した ResultSet にだけ存在する列で,データ型が short で規定されている列の場合,この値が
返却されます。
注※2
各列のデータ長の総和になります。各列のデータ長の求め方については,マニュアル「HADB SQL リファレンス」の「デー
タ型の種類」を参照してください。
(5) 発生する例外
column に指定した値が 0 以下,または列数より大きい場合,SQLException が投入されます。
6.7.6 getColumnLabel(int column)
(1) 機能
印刷や表示に使用する列の推奨タイトルを取得します。
(2) 形式
public synchronized String getColumnLabel(int column) throws SQLException
(3) 引数
int column:
1 から始まる列番号を指定します。
(4) 戻り値
String オブジェクトが返却されます。
ResultSetMetaData オブジェクトの getColumnName での返却値と同じ値(列名)が返却されます。
(5) 発生する例外
column に指定した値が 0 以下,または列数より大きい場合,SQLException が投入されます。
6.7.7 getColumnName(int column)
(1) 機能
指定した列の名称を取得します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
568
(2) 形式
public synchronized String getColumnName(int column) throws SQLException
(3) 引数
int column:
1 から始まる列番号を指定します。
(4) 戻り値
String オブジェクトが返却されます。
HADB サーバから送られる列名情報から,検索結果列の名称を取得して返します。検索結果列の名称につ
いては,マニュアル「HADB SQL リファレンス」の「SELECT 文の指定形式および規則」の「規則」
を参照してください。
(5) 発生する例外
column に指定した値が 0 以下,または列数より大きい場合,SQLException が投入されます。
6.7.8 getColumnType(int column)
(1) 機能
指定した列の SQL データ型を取得します。
(2) 形式
public synchronized int getColumnType(int column) throws SQLException
(3) 引数
int column:
1 から始まる列番号を指定します。
(4) 戻り値
java.sql.Types からの SQL 型が返却されます。
列のデータ型と返却値の対応については,「5.6.1(1) HADB のデータ型と JDBC の SQL データ型の対
応」を参照してください。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
569
(5) 発生する例外
column に指定した値が 0 以下,または列数より大きい場合,SQLException が投入されます。
6.7.9 getColumnTypeName(int column)
(1) 機能
指定した列のデータ型を取得します。
(2) 形式
public synchronized String getColumnTypeName(int column) throws SQLException
(3) 引数
int column:
1 から始まる列番号を指定します。
(4) 戻り値
String オブジェクトが返却されます。getColumnTypeName メソッドの戻り値を次の表に示します。
表 6‒70 getColumnTypeName メソッドの戻り値
列のデータ型(HADB のデータ型)
戻り値(返却される文字列)
INTEGER
"INTEGER"
SMALLINT
"SMALLINT"※
DECIMAL
"DECIMAL"
CHAR
"CHAR"
DOUBLE PRECISION
"DOUBLE PRECISION"
VARCHAR
"VARCHAR"
DATE
"DATE"
TIME
"TIME"
TIMESTAMP
"TIMESTAMP"
BINARY
"BINARY"
VARBINARY
"VARBINARY"
ROW
"ROW"
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
570
列のデータ型(HADB のデータ型)
戻り値(返却される文字列)
BOOLEAN(DatabaseMetaData から生成した ResultSet にだけ存在する列)
"BOOLEAN"
注※
DatabaseMetaData から生成した ResultSet にだけ存在する列で,データ型が short で規定されている列の場合,この値が
返却されます。
(5) 発生する例外
column に指定した値が 0 以下,または列数より大きい場合,SQLException が投入されます。
6.7.10 getPrecision(int column)
(1) 機能
指定した列の桁数を取得します。
(2) 形式
public synchronized int getPrecision(int column) throws SQLException
(3) 引数
int column:
1 から始まる列番号を指定します。
(4) 戻り値
列の桁数が 10 進数で返却されます。指定した列が数データ型の場合は,桁数が返却されます。指定した
列が数データ型でない場合は,列長がバイト単位で返却されます。getPrecision メソッドの戻り値を次の
表に示します。
表 6‒71 getPrecision メソッドの戻り値
列のデータ型(HADB のデータ型)
戻り値(列の桁数)
INTEGER
19
SMALLINT
10
5※1
DOUBLE PRECISION
17
DECIMAL(m,n)
m
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
571
列のデータ型(HADB のデータ型)
戻り値(列の桁数)
CHAR(n)
n
VARCHAR(n)
DATE
10
TIME(p)
p = 0 の場合:8
p > 0 の場合:8 +(n + 1)
TIMESTAMP(p)
p = 0 の場合:19
p > 0 の場合:19 +(n + 1)
BINARY(n)
n
VARBINARY(n)
ROW
行長※2
BOOLEAN(DatabaseMetaData から生成した ResultSet にだけ存在する列)
1
注※1
DatabaseMetaData から生成した ResultSet にだけ存在する列で,データ型が short で規定されている列の場合,この値が
返却されます。
注※2
各列のデータ長の総和になります。各列のデータ長の求め方については,マニュアル「HADB SQL リファレンス」の「デー
タ型の種類」を参照してください。
(5) 発生する例外
column に指定した値が 0 以下,または列数より大きい場合,SQLException が投入されます。
6.7.11 getScale(int column)
(1) 機能
指定した列の小数点以下の桁数を取得します。
(2) 形式
public synchronized int getScale(int column) throws SQLException
(3) 引数
int column:
1 から始まる列番号を指定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
572
(4) 戻り値
小数点以下の桁数が 10 進数で返却されます。getScale メソッドの戻り値を次の表に示します。
表 6‒72 getScale メソッドの戻り値
列のデータ型(HADB のデータ型)
戻り値(小数点以下の桁数)
DECIMAL(m,n)
n
TIME(p)
p
TIMESTAMP(p)
上記以外
0
(5) 発生する例外
column に指定した値が 0 以下,または列数より大きい場合,SQLException が投入されます。
6.7.12 getSchemaName(int column)
(1) 機能
指定した列のスキーマ名を取得します。
(2) 形式
public synchronized String getSchemaName(int column) throws SQLException
(3) 引数
int column:
1 から始まる列番号を指定します。
(4) 戻り値
String オブジェクトが返却されます。
常に空の文字列が返却されます。
(5) 発生する例外
column に指定した値が 0 以下,または列数より大きい場合,SQLException が投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
573
6.7.13 getTableName(int column)
(1) 機能
指定した列の表名を取得します。
(2) 形式
public synchronized String getTableName(int column) throws SQLException
(3) 引数
int column:
1 から始まる列番号を指定します。
(4) 戻り値
String オブジェクトが返却されます。
常に空の文字列が返却されます。
(5) 発生する例外
column に指定した値が 0 以下,または列数より大きい場合,SQLException が投入されます。
6.7.14 isAutoIncrement(int column)
(1) 機能
指定した列が自動的に番号付けされて読み取り専用として扱われるかどうかを返します。
(2) 形式
public synchronized boolean isAutoIncrement(int column) throws SQLException
(3) 引数
int column:
1 から始まる列番号を指定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
574
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
column に指定した値が 0 以下,または列数より大きい場合,SQLException が投入されます。
6.7.15 isCaseSensitive(int column)
(1) 機能
指定した列が大文字と小文字を区別するかどうかを返します。
(2) 形式
public synchronized boolean isCaseSensitive(int column) throws SQLException
(3) 引数
int column:
1 から始まる列番号を指定します。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
column に指定した値が 0 以下,または列数より大きい場合,SQLException が投入されます。
6.7.16 isCurrency(int column)
(1) 機能
指定した列が通貨の値かどうかを返します。
(2) 形式
public synchronized boolean isCurrency(int column) throws SQLException
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
575
(3) 引数
int column:
1 から始まる列番号を指定します。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
column に指定した値が 0 以下,または列数より大きい場合,SQLException が投入されます。
6.7.17 isDefinitelyWritable(int column)
(1) 機能
指定した列への書き込みが必ず成功するかどうかを返します。
(2) 形式
public synchronized boolean isDefinitelyWritable(int column) throws SQLException
(3) 引数
int column:
1 から始まる列番号を指定します。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
column に指定した値が 0 以下,または列数より大きい場合,SQLException が投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
576
6.7.18 isNullable(int column)
(1) 機能
指定した列にナル値をセットできるかどうかを返します。
(2) 形式
public synchronized int isNullable(int column) throws SQLException
(3) 引数
int column:
1 から始まる列番号を指定します。
(4) 戻り値
次に示すどちらかの値が返却されます。
• ResultSetMetaData.columnNoNulls:ナル値をセットできません。
• ResultSetMetaData.columnNullable:ナル値をセットできます。
(5) 発生する例外
column に指定した値が 0 以下,または列数より大きい場合,SQLException が投入されます。
6.7.19 isReadOnly(int column)
(1) 機能
指定した列が読み取り専用でないかどうかを返します。
(2) 形式
public synchronized boolean isReadOnly(int column) throws SQLException
(3) 引数
int column:
1 から始まる列番号を指定します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
577
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
column に指定した値が 0 以下,または列数より大きい場合,SQLException が投入されます。
6.7.20 isSearchable(int column)
(1) 機能
指定した列が where 句に指定できるかどうかを返します。
(2) 形式
public synchronized boolean isSearchable(int column) throws SQLException
(3) 引数
int column:
1 から始まる列番号を指定します。
(4) 戻り値
次に示すどちらかの値が返却されます。
true:
where 句に指定できます。
false:
where 句に指定できません。
DatabaseMetaData インタフェースで生成した ResultSet オブジェクトの場合は,false が返却されま
す。そうでない場合は,true が返却されます。
(5) 発生する例外
column に指定した値が 0 以下,または列数より大きい場合,SQLException が投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
578
6.7.21 isSigned(int column)
(1) 機能
指定した列の値が,符号付き数値かどうかを返します。
(2) 形式
public synchronized boolean isSigned(int column) throws SQLException
(3) 引数
int column:
1 から始まる列番号を指定します。
(4) 戻り値
次に示すどちらかの値が返却されます。
true:
符号付き数値です。
false:
符号付き数値ではありません。
パラメタのデータ型と戻り値の関係を次の表に示します。
表 6‒73 パラメタのデータ型と戻り値の関係
パラメタのデータ型
戻り値
INTEGER,SMALLINT,DOUBLE PRECISION,DECIMAL
true
上記以外
false
(5) 発生する例外
column に指定した値が 0 以下,または列数より大きい場合,SQLException が投入されます。
6.7.22 isWritable(int column)
(1) 機能
指定した列への書き込みを成功させることができるかどうかを返します。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
579
(2) 形式
public synchronized boolean isWritable(int column) throws SQLException
(3) 引数
int column:
1 から始まる列番号を指定します。
(4) 戻り値
常に false が返却されます。
(5) 発生する例外
column に指定した値が 0 以下,または列数より大きい場合,SQLException が投入されます。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
580
6.8 SQLException インタフェース
SQLException は,java.sql パッケージの SQLException クラスを直接利用します。SQLException イ
ンタフェースが提供する各メソッドの詳細,使用方法については,JavaSoft が提供する JDBC 関連ドキュ
メントを参照してください。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
581
6.9 SQLWarning インタフェース
SQLWarning インタフェースでは,データベースアクセスの警告に関する情報を提供します。
SQLWarning オブジェクトは,警告が報告される原因となったメソッドのオブジェクトに,例外での通知
なしで蓄積されます。
6.9.1 SQLWarning オブジェクトの生成
SQL の実行で発生した警告を,JDBC ドライバ内で保持するよう指定している場合,SQLWarning オブ
ジェクトを生成し,警告情報を保持します。
警告保持指定は,URL またはユーザプロパティの sqlwarningkeep,setSQLWarningKeep メソッドで
指定できます。
6.9.2 SQLWarning オブジェクトの解放
SQLWarning オブジェクトは,警告が報告される原因となったメソッドのオブジェクト(Connection,
Statement,PreparedStatement,および ResultSet)から,チェーンによって蓄積されます。
蓄積された SQLWarning オブジェクトを明示的に解放するには,警告が報告される原因となったメソッ
ドのオブジェクトに対して clearWarnings メソッドを実行してください。
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
582
6.10 サポートしていないインタフェース
HADB では,次に示すインタフェースはサポートしていません。
• Array
• Blob
• CallableStatement
• Clob
• Savepoint
• SQLData
• SQLInput
• SQLOutput
6. JDBC 1.2 API
Hitachi Advanced Data Binder AP 開発ガイド
583
7
JDBC 2.1 コア API
この章では,JDBC 2.1 コア API で追加された機能の HADB でのサポート範囲について説明しま
す。
Hitachi Advanced Data Binder AP 開発ガイド
584
7.1 結果セットの拡張機能のサポート範囲
JDBC 2.1 コア API の結果セット(ResultSet クラス)の拡張機能に対する HADB でのサポート範囲を次
の表に示します。
表 7‒1 JDBC 2.1 コア API の結果セット(ResultSet クラス)の拡張機能に対する HADB での
サポート範囲
結果セット(ResultSet クラス)の拡張機能名
スクロールタイプ
並行処理タイプ
HADB でのサポート範囲
順方向専用型
○
スクロール非反映型
○
スクロール反映型
×
読み取り専用型
○
更新可能型
×
(凡例)
○:HADB でサポートしています。
×:HADB ではサポートしていません。
注意事項
• サポート対象外のスクロールタイプや並行処理タイプが指定されても,エラーにはなりません。
指定されたスクロールタイプや並行処理タイプに最も近い結果セットを仮定して,Statement
クラスまたはそのサブクラスのインスタンスを生成します。この場合,警告(SQLWarning オ
ブジェクト)を生成して,Connection クラスのインスタンスに関連づけます。
• スクロール型結果セットでは,すべての検索データを JDBC ドライバ内でキャッシングするた
め,データ量が多いとメモリ不足や性能低下が起こるおそれがあります。したがって,スクロー
ル型結果セットを使用する場合は,SQL に条件を付加したりして,検索データ量を抑えるよう
にしてください。
7. JDBC 2.1 コア API
Hitachi Advanced Data Binder AP 開発ガイド
585
7.2 バッチ更新機能のサポート範囲
Statement クラスおよび PreparedStatement クラスのバッチ更新機能の HADB でのサポート範囲につい
て説明します。
7.2.1 バッチ更新機能を使用できる SQL 文
バッチ更新機能を使用できる SQL 文を次に示します。
• 定義系 SQL
• DELETE 文
• INSERT 文
• PURGE CHUNK 文
• TRUNCATE TABLE 文
• UPDATE 文
なお,次の SQL 文を指定した場合,executeBatch メソッドの実行時に BatchUpdateException が投入
されます。
• SELECT 文
• ?パラメタを指定した PURGE CHUNK 文
7.2.2 Statement クラスでのバッチ更新機能
Statement クラスでのバッチ更新の留意点を次に示します。
• 複数の SQL 文を,addBatch メソッドで登録します。
• 登録した SQL 文を,executeBatch メソッドで一括して実行します。
• 一括実行の結果として,それぞれの SQL 文で更新された行数の配列を返却します。
• 一括実行の途中でエラーが発生した場合,BatchUpdateException が投入されます。
7.2.3 PreparedStatement クラスでのバッチ更新機能
PreparedStatement クラスでのバッチ更新の留意点を次に示します。
• PreparedStatement インスタンス生成時に指定した SQL 文に対する?パラメタを,通常の手順
(setXXX メソッド)で設定します。
7. JDBC 2.1 コア API
Hitachi Advanced Data Binder AP 開発ガイド
586
• addBatch メソッドで?パラメタのセットを登録します。
• 登録した複数セットの?パラメタを,executeBatch メソッドで一括して実行します。
• 一括実行の結果として,それぞれの?パラメタのセットで更新した行数の配列が返却されます。
• 一括実行の途中でエラーが発生した場合,BatchUpdateException が投入されます。
7.2.4 注意事項
(1) 暗黙的コミットの実行
SQL 文のバッチ更新機能を使用する際,次に示す SQL 文を addBatch すると,その SQL 文が実行され
たときに HADB サーバが暗黙的にコミットを実行するため,注意が必要です。
• 定義系 SQL
• PURGE CHUNK 文
• TRUNCATE TABLE 文
(2) パラメタと SQL 文の addBatch の混在時でのバッチ更新機能
パラメタと SQL 文の addBatch が混在している場合,一括更新をしないで逐次実行します。例を次に示
します。
PreparedStatement pstmt = con.prepareStatement("UPDATE T1 SET C1=? WHERE C2=?");
pstmt.setInt(1, 1);
pstmt.setInt(2, 1);
pstmt.addBatch();
pstmt.setInt(1, 2);
pstmt.setInt(2, 2);
pstmt.addBatch();
pstmt.addBatch("INSERT INTO T2 VALUES(1,2,3)");
pstmt.setInt(1, 3);
pstmt.setInt(2, 4);
pstmt.addBatch();
pstmt.setInt(1, 4);
pstmt.setInt(2, 4);
pstmt.addBatch();
pstmt.executeBatch();
この AP を実行すると,パラメタと SQL 文の addBatch が混在しているため,各 addBatch 単位での
SQL 実行となります。そのため,次の AP を実行した場合と同じ結果となります。
PreparedStatement pstmt = con.prepareStatement("UPDATE T1 SET C1=? WHERE C2=?");
pstmt.setInt(1, 1);
pstmt.setInt(2, 1);
pstmt.executeUpdate();
pstmt.setInt(1, 2);
pstmt.setInt(2, 2);
7. JDBC 2.1 コア API
Hitachi Advanced Data Binder AP 開発ガイド
587
pstmt.executeUpdate();
pstmt.executeUpdate("INSERT INTO T2 VALUES(1,2,3)");
pstmt.setInt(1, 3);
pstmt.setInt(2, 4);
pstmt.executeUpdate();
pstmt.setInt(1, 4);
pstmt.setInt(2, 4);
pstmt.executeUpdate();
なお,パラメタと SQL 文の addBatch とが混在するバッチ更新機能を使用する場合,Connection クラ
スの自動コミットモードを無効にすることを推奨します。
参考
パラメタと SQL 文の混在時は逐次実行になりますが,自動コミットモードが有効の場合は,実行
単位ごとにコミットが暗黙的に実行されます。そのため,バッチ更新の途中でエラーが発生する
と,エラーが発生した直前までがコミットされた状態になり,どの時点までコミットされたかを認
識できないので,自動コミットモードを無効にすることを推奨しています。
(3) addBatch メソッドを使用して多数のパラメタを登録する場合
addBatch メソッドを使用して登録したすべてのパラメタは,executeBatch メソッドが実行されるまで
JDBC ドライバ内に保存されます。そのため,多数のパラメタを登録する際は,メモリ使用量に注意して
ください。
(4) 例外 BatchUpdateException で通知する更新カウント
バッチ更新実行時に発生する例外 BatchUpdateException の,getUpdateCounts メソッドの戻り値で通
知する更新カウント(int 型の配列)の内容を次に示します。
• 実行した SQL 数と要素数が等しい配列
• 各配列要素には更新行数を設定
ただし,例外発生時に内部的にロールバックが行われた場合,要素数 0 の配列を返却します。
更新カウントの例を次に示します。
■JDBC ドライバによる逐次実行のプログラム例
Statement stmt = con.createStatement();
stmt.addBatch("INSERT INTO T1 VALUES(1,'aaaa')");
stmt.addBatch("INSERT INTO T1 VALUES(2,'bbbbbbbb')");...[A]
stmt.addBatch("INSERT INTO T1 VALUES(3,'cccc')");
stmt.executeBatch();
プログラム例を実行し,[A]で登録したパラメタ,または SQL の処理でエラーになった場合,
getUpdateCounts メソッドで返却する更新カウントの内容を次に示します。
7. JDBC 2.1 コア API
Hitachi Advanced Data Binder AP 開発ガイド
588
• 要素数 1 の int 型の配列
• 要素 0 の値:更新行数
7. JDBC 2.1 コア API
Hitachi Advanced Data Binder AP 開発ガイド
589
7.3 追加されたデータ型
JDBC 2.1 コア API では,幾つかの新たな JDBC SQL タイプが追加されました。次の JDBC SQL タイプ
が追加されましたが,JDBC ドライバでは使用できません。
• BLOB
• CLOB
• ARRAY
• REF
• DISTINCT
• STRUCT
• JAVA OBJECT
7. JDBC 2.1 コア API
Hitachi Advanced Data Binder AP 開発ガイド
590
7.4 サポートしていないインタフェース
HADB では,次に示すインタフェースはサポートしていません。
• Array
• Blob
• Clob
• Ref
• SQLData
• SQLInput
• SQLOutput
• Struct
7. JDBC 2.1 コア API
Hitachi Advanced Data Binder AP 開発ガイド
591
8
JDBC 2.0 Optional Package
この章では,JDBC 2.0 Optional Package の各インタフェースとメソッドについて説明します。
Hitachi Advanced Data Binder AP 開発ガイド
592
8.1 JDBC 2.0 Optional Package の追加機能に対する HADB でのサポー
ト範囲
JDBC 2.0 Optional Package の追加機能に対する HADB でのサポート範囲を次の表に示します。
表 8‒1 JDBC 2.0 Optional Package の追加機能に対する HADB でのサポート範囲
JDBC 2.0 Optional Package の追加機能
対応するインタフェース
JNDI 対応
DataSource
○
接続プール
ConnectionPoolDataSource
○
PooledConnection
○
RowSet
×
RowSetInternal
×
RowSetListner
×
RowSetMetaData
×
RowSetReader
×
RowSets
HADB でのサポート
範囲
(凡例)
○:HADB でサポートしています。
×:HADB ではサポートしていません。
なお,上記の表に記載しているインタフェースのほかに,HADB 独自の接続情報設定および取得に関する
メソッドがあります。詳細については,「8.5 接続情報設定および取得インタフェース」を参照してくだ
さい。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
593
8.2 DataSource インタフェース
ここでは,DataSource インタフェースで提供されているメソッドについて説明します。
8.2.1 DataSource インタフェースのメソッド一覧
HADB でサポートしている DataSource インタフェースのメソッドの一覧を次の表に示します。
表 8‒2 DataSource インタフェースのメソッドの一覧
項番
DataSource インタフェースのメソッド
機能
1
getConnection()
HADB サーバへの接続を行います。
2
getConnection(String username, String
password)
3
getLoginTimeout()
HADB サーバへの接続処理のタイムアウト時間(単位:秒)を
取得します。
4
getLogWriter()
DataSource オブジェクトのログライターを取得します。
5
setLoginTimeout(int seconds)
HADB サーバへの接続処理のタイムアウト時間(単位:秒)を
設定します。
6
setLogWriter(PrintWriter out)
DataSource オブジェクトのログライターを設定します。
DataSource インタフェースを使用する場合に必要なパッケージ名称とクラス名称を次に示します。
• パッケージ名称:com.hitachi.hadb.jdbc
• クラス名称:AdbDataSource
8.2.2 getConnection()
(1) 機能
HADB サーバへの接続を行います。
DataSource オブジェクトに設定した HADB サーバへの接続情報に従って,HADB サーバへの接続を行
い,Connection オブジェクトを返却します。
HADB サーバへの接続情報の指定には優先順位があります。優先順位については,「5.3.4 接続情報の優
先順位」を参照してください。
なお,getConnection メソッドを実行するには CONNECT 権限が必要です。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
594
(2) 形式
public synchronized Connection getConnection() throws SQLException
(3) 引数
なし。
(4) 戻り値
Connection オブジェクトが返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• データベースのアクセスエラーが発生した場合
• HADB サーバへの接続情報の指定内容が不正な場合
8.2.3 getConnection(String username, String password)
(1) 機能
HADB サーバへの接続を行います。
DataSource オブジェクトに設定した HADB サーバへの接続情報と,引数に指定した接続情報に従って,
HADB サーバへの接続を行い,Connection オブジェクトを返却します。
HADB サーバへの接続情報の指定には優先順位があります。優先順位については,「5.3.4 接続情報の優
先順位」を参照してください。
なお,getConnection メソッドを実行するには CONNECT 権限が必要です。
(2) 形式
public synchronized Connection getConnection(String username, String password) throws
SQLException
(3) 引数
String username:
HADB サーバに接続する認可識別子を指定します。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
595
String password:
HADB サーバに接続する認可識別子のパスワードを指定します。
username または password に null を指定した場合,認可識別子またはパスワードが指定されていないと
見なされます。また,password に長さ 0 の文字列を指定した場合も,パスワードが指定されていないと
見なされます。
(4) 戻り値
Connection オブジェクトが返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• データベースのアクセスエラーが発生した場合
• HADB サーバへの接続情報の指定内容が不正な場合
• username に指定した認可識別子が長さ 0 の文字列の場合
8.2.4 getLoginTimeout()
(1) 機能
HADB サーバへの接続処理のタイムアウト時間(単位:秒)を取得します。
(2) 形式
public synchronized int getLoginTimeout()
(3) 引数
なし。
(4) 戻り値
setLoginTimeout メソッドで設定した,HADB サーバへの接続処理のタイムアウト時間(単位:秒)が
返却されます。setLoginTimeout メソッドでタイムアウト時間を設定していない場合は,0 が返却されま
す。
なお,戻り値が 0 の場合,デフォルト値の 300 秒がタイムアウト時間になります。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
596
(5) 発生する例外
なし。
8.2.5 getLogWriter()
(1) 機能
DataSource オブジェクトのログライターを取得します。
(2) 形式
public synchronized PrintWriter getLogWriter() throws SQLException
(3) 引数
なし。
(4) 戻り値
DataSource オブジェクトのログライターが返却されます。ログライターが設定されていない場合は,null
が返却されます。
(5) 発生する例外
なし。
8.2.6 setLoginTimeout(int seconds)
(1) 機能
HADB サーバへの接続処理のタイムアウト時間(単位:秒)を設定します。
getConnection メソッドを実行して HADB サーバに接続する際に,ここで設定したタイムアウト時間が
適用されます。
(2) 形式
public synchronized void setLoginTimeout(int seconds) throws SQLException
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
597
(3) 引数
int seconds:
HADB サーバへの接続処理のタイムアウト時間(単位:秒)を 1〜300 の範囲で指定します。
0 を指定した場合,またはこのメソッドを実行しない場合は,タイムアウト時間に 300 秒が仮定され
ます。
(4) 戻り値
なし。
(5) 発生する例外
seconds に不正な値(0 未満または 301 以上の値)を指定した場合,SQLException が投入されます。
8.2.7 setLogWriter(PrintWriter out)
(1) 機能
DataSource オブジェクトのログライターを設定します。
(2) 形式
public synchronized void setLogWriter(PrintWriter out) throws SQLException
(3) 引数
PrintWriter out:
ログライターを指定します。
(4) 戻り値
なし。
(5) 発生する例外
なし。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
598
8.3 ConnectionPoolDataSource インタフェース
ここでは,ConnectionPoolDataSource インタフェースで提供されているメソッドについて説明します。
8.3.1 ConnectionPoolDataSource インタフェースのメソッド一覧
HADB でサポートしている ConnectionPoolDataSource インタフェースのメソッドの一覧を次の表に示
します。
表 8‒3 ConnectionPoolDataSource インタフェースのメソッドの一覧
項番
ConnectionPoolDataSource インタフェースのメソッド
機能
1
getLoginTimeout()
HADB サーバへの接続処理のタイムアウト時間(単位:
秒)を取得します。
2
getLogWriter()
ConnectionPoolDataSource オブジェクトのログライ
ターを取得します。
3
getPooledConnection()
DataSource オブジェクトに設定されている接続情報か
ら,PooledConnection オブジェクトを生成します。
4
getPooledConnection(String user, String password)
引数で指定した接続情報と,DataSource オブジェクト
に設定されている接続情報から,PooledConnection
オブジェクトを生成します。
5
setLoginTimeout(int seconds)
HADB サーバへの接続処理のタイムアウト時間(単位:
秒)を設定します。
6
setLogWriter(PrintWriter out)
ConnectionPoolDataSource オブジェクトのログライ
ターを設定します。
ConnectionPoolDataSource インタフェースを使用する場合に必要なパッケージ名称とクラス名称を次
に示します。
• パッケージ名称:com.hitachi.hadb.jdbc
• クラス名称:AdbConnectionPoolDataSource
8.3.2 getLoginTimeout()
(1) 機能
HADB サーバへの接続処理のタイムアウト時間(単位:秒)を取得します。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
599
(2) 形式
public synchronized int getLoginTimeout() throws SQLException
(3) 引数
なし。
(4) 戻り値
setLoginTimeout メソッドで設定した,HADB サーバへの接続処理のタイムアウト時間(単位:秒)が
返却されます。setLoginTimeout メソッドでタイムアウト時間を設定していない場合は,0 が返却されま
す。
なお,戻り値が 0 の場合,デフォルト値の 300 秒がタイムアウト時間になります。
(5) 発生する例外
なし。
8.3.3 getLogWriter()
(1) 機能
ConnectionPoolDataSource オブジェクトのログライターを取得します。
(2) 形式
public synchronized PrintWriter getLogWriter() throws SQLException
(3) 引数
なし。
(4) 戻り値
ConnectionPoolDataSource オブジェクトのログライターが返却されます。ログライターが設定されて
いない場合は,null が返却されます。
(5) 発生する例外
なし。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
600
8.3.4 getPooledConnection()
(1) 機能
DataSource オブジェクトに設定されている接続情報から,PooledConnection オブジェクトを生成しま
す。
認可識別子とパスワードについては,指定の優先順位があります。優先順位については,「5.3.4 接続情
報の優先順位」を参照してください。
なお,getPooledConnection メソッドを実行するには CONNECT 権限が必要です。
(2) 形式
public synchronized PooledConnection getPooledConnection() throws SQLException
(3) 引数
なし。
(4) 戻り値
PooledConnection オブジェクトが返却されます。
(5) 発生する例外
なし。
8.3.5 getPooledConnection(String user, String password)
(1) 機能
引数で指定した接続情報と,DataSource オブジェクトに設定されている接続情報から,
PooledConnection オブジェクトを生成します。
認可識別子とパスワードについては,指定の優先順位があります。優先順位については,「5.3.4 接続情
報の優先順位」を参照してください。
なお,getPooledConnection メソッドを実行するには CONNECT 権限が必要です。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
601
(2) 形式
public synchronized PooledConnection getPooledConnection(String user, String password)
throws SQLException
(3) 引数
String user:
HADB サーバに接続する認可識別子を指定します。
String password:
HADB サーバに接続する認可識別子のパスワードを指定します。
user または password に null を指定した場合,認可識別子またはパスワードが指定されていないと仮定
されます。また,password が長さ 0 の文字列の場合も,パスワードが指定されていないと仮定されます。
user に指定した認可識別子は,setUser メソッドで指定した認可識別子より優先されます。同様に,
password に指定したパスワードも,setPassword メソッドで指定したパスワードより優先されます。
(4) 戻り値
PooledConnection オブジェクトが返却されます。
(5) 発生する例外
次に示す場合に SQLException が投入されます。
• user に指定した認可識別子が長さ 0 の文字列の場合
8.3.6 setLoginTimeout(int seconds)
(1) 機能
HADB サーバへの接続処理のタイムアウト時間(単位:秒)を設定します。
getConnection メソッドを実行して HADB サーバに接続する際に,ここで設定したタイムアウト時間が
適用されます。
(2) 形式
public synchronized void setLoginTimeout(int seconds) throws SQLException
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
602
(3) 引数
int seconds:
HADB サーバへの接続処理のタイムアウト時間(単位:秒)を 1〜300 の範囲で指定します。
0 を指定した場合,またはこのメソッドを実行しない場合は,タイムアウト時間に 300 秒が仮定され
ます。
(4) 戻り値
なし。
(5) 発生する例外
seconds に不正な値(0 未満または 301 以上の値)を指定した場合,SQLException が投入されます。
8.3.7 setLogWriter(PrintWriter out)
(1) 機能
ConnectionPoolDataSource オブジェクトのログライターを設定します。
(2) 形式
public synchronized void setLogWriter(PrintWriter out)
(3) 引数
PrintWriter out:
ログライターを指定します。
(4) 戻り値
なし。
(5) 発生する例外
なし。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
603
8.4 PooledConnection インタフェース
ここでは,PooledConnection インタフェースで提供されているメソッドについて説明します。
8.4.1 PooledConnection インタフェースのメソッド一覧
HADB でサポートしている PooledConnection インタフェースのメソッドの一覧を次の表に示します。
表 8‒4 PooledConnection インタフェースのメソッドの一覧
項番
PooledConnection インタフェースのメソッド
機能
1
addConnectionEventListener(ConnectionEv
entListener listener)
イベントリスナを登録し,この PooledConnection オブジェク
トでイベントが発生したときに通知されるようにします。
2
close()
HADB サーバとの物理的な接続を切断します。接続プールにプー
ルされているすべてのコネクションの物理的な切断を行います。
3
getConnection()
接続プールにプールされているコネクションを使用して HADB
サーバに接続します。
4
removeConnectionEventListener(Connectio
nEventListener listener)
指定したイベントリスナを,この PooledConnection オブジェ
クトでイベントが発生したときに通知されるコンポーネントリス
トから削除します。
PooledConnection インタフェースを使用する場合に必要なパッケージ名称とクラス名称を次に示します。
• パッケージ名称:com.hitachi.hadb.jdbc
• クラス名称:AdbPooledConnection
8.4.2 addConnectionEventListener(ConnectionEventListener
listener)
(1) 機能
イベントリスナを登録し,この PooledConnection オブジェクトでイベントが発生したときに通知される
ようにします。
このメソッドで登録したイベントリスナから,ほかのメソッドを呼び出すことはできません。呼び出した
場合,デッドロックなどが発生して応答がなくなるおそれがあります。
(2) 形式
public synchronized void addConnectionEventListener(ConnectionEventListener listener)
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
604
(3) 引数
ConnectionEventListener listener:
ConnectionEventListener インタフェースを実装し,接続が閉じたかエラーが発生したときに通知さ
れるようにするコンポーネントです。通常は接続プール管理プログラムです。
null を指定した場合,何も登録しません。
(4) 戻り値
なし。
(5) 発生する例外
なし。
8.4.3 close()
(1) 機能
HADB サーバとの物理的な接続を切断します。接続プールにプールされているすべてのコネクションの物
理的な切断を行います。データベースにアクセス中のコネクションであっても切断します。
(2) 形式
public synchronized void close()
(3) 引数
なし。
(4) 戻り値
なし。
(5) 発生する例外
なし。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
605
8.4.4 getConnection()
(1) 機能
接続プールにプールされているコネクションを使用して HADB サーバに接続します。接続プールにプール
されているコネクションがすべて使用中の場合,HADB サーバとの物理的な接続を新規に確立し,HADB
サーバに接続します。
なお,getConnection メソッドを実行するには CONNECT 権限が必要です。
参考
• HADB サーバとの物理的な接続は,このクラスオブジェクトがクローズされるまで切断されま
せん。Connection オブジェクトに対して close メソッドを実行しても,HADB サーバとの物
理的な接続は切断されません(このクラスオブジェクトによってコネクションが保持されます)
。
保持されたコネクションは,次に getConnection メソッドを実行する際に使用されます。
• 接続プールにプールされているコネクションを使用して HADB サーバに接続する場合,
setLoginTimeout メソッドで設定した HADB サーバへの接続処理のタイムアウト時間は適用
されません。setLoginTimeout メソッドで設定したタイムアウト時間は,HADB サーバへの
物理接続を確立する際の通信処理に掛かる時間を監視しています。接続プールにプールされて
いるコネクションを使用して HADB サーバに接続する場合は,物理接続が発生しないため(通
信処理に掛かる時間が発生しないため),タイムアウト時間が適用されません。
(2) 形式
public synchronized Connection getConnection() throws SQLException
(3) 引数
なし。
(4) 戻り値
Connection オブジェクトが返却されます。
(5) 発生する例外
データベースのアクセスエラーが発生した場合に,SQLException が投入されます。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
606
8.4.5 removeConnectionEventListener(ConnectionEventListener
listener)
(1) 機能
指定したイベントリスナを,この PooledConnection オブジェクトでイベントが発生したときに通知され
るコンポーネントリストから削除します。
(2) 形式
public synchronized void removeConnectionEventListener(ConnectionEventListener listener)
(3) 引数
ConnectionEventListener listener:
ConnectionEventListener インタフェースを実装し,イベントリスナとして登録されたコンポーネン
トです。通常は接続プール管理プログラムです。
(4) 戻り値
なし。
(5) 発生する例外
なし。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
607
8.5 接続情報設定および取得インタフェース
ここでは,接続情報設定および取得インタフェースで提供されているメソッドについて説明します。
8.5.1 接続情報設定および取得インタフェースのメソッド一覧
DataSource および ConnectionPoolDataSource のクラスでは,JDBC 2.0 Optional Package 規格で
定められたメソッドのほかに,次の表に示す HADB 独自のメソッドを提供しています。
表 8‒5 接続情報設定および取得インタフェースのメソッドの一覧
項番
メソッド
機能
1
getApName()
setApName メソッドで設定した AP 識別子を取得します。
2
getEncodeLang()
setEncodeLang メソッドで設定した変換文字セット名称を取得します。
3
getInterfaceMethodTrace()
setInterfaceMethodTrace メソッドで設定した JDBC インタフェースメ
ソッドトレースの取得状況を取得します。
4
getNotErrorOccurred()
ConnectionEventListener.connectionErrorOccurred の発生を抑止する
かどうかの設定情報を取得します。
5
getPassword()
setPassword メソッドで設定したパスワードを取得します。
6
getSQLWarningKeep()
SQL 実行時に発生した警告情報を保持するかどうかの設定情報を取得しま
す。
7
getTraceNumber()
setTraceNumber メソッドで設定した JDBC インタフェースメソッドト
レースのエントリ数を取得します。
8
getUser()
setUser メソッドで設定した認可識別子を取得します。
9
getHostName()
setHostName メソッドで設定した HADB サーバのホスト名を取得します。
10
getPort()
setPort メソッドで設定した HADB サーバのポート番号を取得します。
11
setApName(String name)
HADB サーバに接続する AP の識別子を設定します。
12
setEncodeLang(String lang)
文字コード変換時の変換文字セット名称を設定します。
13
setInterfaceMethodTrace(boolean
flag)
JDBC インタフェースメソッドトレースを取得するかどうかを設定します。
14
setNotErrorOccurred(boolean
mode)
ConnectionEventListener.connectionErrorOccurred の発生を抑止する
かどうかを設定します。
15
setPassword(String password)
HADB サーバに接続する認可識別子のパスワードを設定します。
16
setSQLWarningKeep(boolean
mode)
SQL 実行時に発生した警告情報を保持するかどうかを設定します。
17
setTraceNumber(int num)
JDBC インタフェースメソッドトレースのエントリ数を設定します。
18
setUser(String user)
HADB サーバに接続する認可識別子を設定します。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
608
項番
メソッド
機能
19
setHostName(String name)
接続先の HADB サーバのホスト名を設定します。
20
setPort(int port)
接続先の HADB サーバのポート番号を設定します。
8.5.2 getApName()
(1) 機能
setApName メソッドで設定した AP 識別子を取得します。
(2) 形式
public synchronized String getApName() throws SQLException
(3) 引数
なし。
(4) 戻り値
AP 識別子が返却されます。setApName メソッドを実行していない場合は,"********"が返却されます。
(5) 発生する例外
なし。
8.5.3 getEncodeLang()
(1) 機能
setEncodeLang メソッドで設定した変換文字セット名称を取得します。
(2) 形式
public synchronized String getEncodeLang() throws SQLException
(3) 引数
なし。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
609
(4) 戻り値
変換文字セット名称が返却されます。setEncodeLang メソッドを実行していない場合は,null が返却さ
れます。
(5) 発生する例外
なし。
8.5.4 getInterfaceMethodTrace()
(1) 機能
setInterfaceMethodTrace メソッドで設定した JDBC インタフェースメソッドトレースの取得状況を取
得します。JDBC インタフェースメソッドトレースについては,「5.7.1 JDBC インタフェースメソッド
トレース」を参照してください。
(2) 形式
public boolean getInterfaceMethodTrace() throws SQLException
(3) 引数
なし。
(4) 戻り値
JDBC インタフェースメソッドトレースの取得状況が返却されます。
• true:JDBC インタフェースメソッドトレースを取得しています。
• false:JDBC インタフェースメソッドトレースを取得していません。
(5) 発生する例外
なし。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
610
8.5.5 getNotErrorOccurred()
(1) 機能
ConnectionEventListener.connectionErrorOccurred の発生を抑止するかどうかの設定情報を取得しま
す。setNotErrorOccurred メソッドで設定した情報を取得します。
(2) 形式
public boolean getNotErrorOccurred() throws SQLException
(3) 引数
なし。
(4) 戻り値
ConnectionEventListener.connectionErrorOccurred を発生させるかどうかの設定情報が返却されます。
• true:connectionErrorOccurred は発生しません。
• false:connectionErrorOccurred が発生します。
setNotErrorOccurred メソッドを実行していない場合は,デフォルト値の false が返却されます。
(5) 発生する例外
なし。
8.5.6 getPassword()
(1) 機能
setPassword メソッドで設定したパスワードを取得します。
(2) 形式
public synchronized String getPassword() throws SQLException
(3) 引数
なし。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
611
(4) 戻り値
setPassword メソッドで設定したパスワードが返却されます。
(5) 発生する例外
なし。
8.5.7 getSQLWarningKeep()
(1) 機能
SQL 実行時に発生した警告情報を保持するかどうかの設定情報を取得します。setSQLWarningKeep メ
ソッドで設定した情報を取得します。
(2) 形式
public synchronized boolean getSQLWarningKeep() throws SQLException
(3) 引数
なし。
(4) 戻り値
発生した警告情報を Connection クラスで保持するかどうかの設定情報が返却されます。
• true:警告情報を保持します。
• false:警告情報を保持しません。
setSQLWarningKeep メソッドを実行していない場合は,デフォルト値の true が返却されます。
(5) 発生する例外
なし。
8.5.8 getTraceNumber()
(1) 機能
setTraceNumber メソッドで設定した JDBC インタフェースメソッドトレースのエントリ数を取得します。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
612
(2) 形式
public synchronized int getTraceNumber() throws SQLException
(3) 引数
なし。
(4) 戻り値
setTraceNumber メソッドで設定した JDBC インタフェースメソッドトレースのエントリ数が返却されま
す。setTraceNumber メソッドを実行していない場合は,デフォルト値の 500 が返却されます。
(5) 発生する例外
なし。
8.5.9 getUser()
(1) 機能
setUser メソッドで設定した認可識別子を取得します。
(2) 形式
public synchronized String getUser() throws SQLException
(3) 引数
なし。
(4) 戻り値
setUser メソッドで設定した認可識別子が返却されます。setUser メソッドを実行していない場合は,null
が返却されます。
(5) 発生する例外
なし。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
613
8.5.10 getHostName()
(1) 機能
setHostName メソッドで設定した HADB サーバのホスト名を取得します。
(2) 形式
public synchronized String getHostName() throws SQLException
(3) 引数
なし。
(4) 戻り値
setHostName メソッドで設定した HADB サーバのホスト名が返却されます。setHostName メソッドを
実行していない場合は,null が返却されます。
(5) 発生する例外
なし。
8.5.11 getPort()
(1) 機能
setPort メソッドで設定した HADB サーバのポート番号を取得します。
(2) 形式
public synchronized int getPort() throws SQLException
(3) 引数
なし。
(4) 戻り値
setPort メソッドで設定した HADB サーバのポート番号が返却されます。setPort メソッドを実行してい
ない場合は,-1 が返却されます。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
614
(5) 発生する例外
なし。
8.5.12 setApName(String name)
(1) 機能
HADB サーバに接続する AP 識別子を設定します。
(2) 形式
public synchronized void setApName(String name) throws SQLException
(3) 引数
String name:
AP 識別子を 1〜30 バイトの文字列で指定します。空白,文字列の長さが 0,null を指定した場合は,
このメソッドによる AP 識別子の設定がないものと見なされます。
なお,AP 識別子をどこにも指定しないで HADB サーバに接続した場合,AP 識別子には"********"が設
定されます。
(4) 戻り値
なし。
(5) 発生する例外
name に不正な値(31 バイト以上の文字列)を指定した場合,SQLException が投入されます。
(6) 留意事項
このメソッドで指定した AP 識別子は,Java 仮想マシンのデフォルトの変換文字セットで変換されます。
そのため,AP 識別子には変換文字セットに依存しない半角英数字だけで構成される名称を指定すること
を推奨します。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
615
8.5.13 setEncodeLang(String lang)
(1) 機能
文字コード変換時の変換文字セット名称を設定します。
(2) 形式
public synchronized void setEncodeLang(String lang) throws SQLException
(3) 引数
String lang:
変換文字セットを指定します。指定できる変換文字セットについては,「JavaTM Platform, Standard
Edition JDK ドキュメント」の「国際化サポート」で示される「サポートされているエンコーディン
グ」の一覧から選択してください。
(4) 戻り値
なし。
(5) 発生する例外
Java 仮想マシンがサポートしない変換文字セットを指定した場合,SQLException を投入します。
(6) 留意事項
このメソッドは,「表 5-17 HADB サーバの文字コードに対応する文字セット名称」の組み合わせの変換
文字セット以外の文字セットで文字コード変換したい場合だけ使用してください。「表 5-17 HADB サー
バの文字コードに対応する文字セット名称」の組み合わせの変換文字セットで文字コード変換する場合は,
このメソッドを使用する必要はありません。
8.5.14 setInterfaceMethodTrace(boolean flag)
(1) 機能
JDBC インタフェースメソッドトレースを取得するかどうかを設定します。JDBC インタフェースメソッ
ドトレースについては,「5.7.1 JDBC インタフェースメソッドトレース」を参照してください。
JDBC インタフェースメソッドトレースを取得する場合は,setLogWriter メソッドで出力先を設定する必
要があります。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
616
(2) 形式
public synchronized void setInterfaceMethodTrace(boolean flag) throws SQLException
(3) 引数
boolean flag:
JDBC インタフェースメソッドトレースを取得するかどうかを指定します。
• true:取得します。
• false:取得しません。
このメソッドを実行しない場合は,false が仮定されます。
(4) 戻り値
なし。
(5) 発生する例外
なし。
(6) 留意事項
JDBC インタフェースメソッドトレースの取得有無は,インスタンス単位で設定できません。このメソッ
ドで設定した JDBC インタフェースメソッドトレースの取得有無は,設定時点および設定以降に存在する
すべての DataSource,および ConnectionPoolDataSource のインスタンスに影響します。
8.5.15 setNotErrorOccurred(boolean mode)
(1) 機能
ConnectionEventListener.connectionErrorOccurred の発生を抑止するかどうかを設定します。
(2) 形式
public synchronized void setNotErrorOccurred(boolean mode) throws SQLException
(3) 引数
boolean mode:
ConnectionEventListener.connectionErrorOccurred の発生を抑止するかどうかを指定します。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
617
次に示すどちらかの値を指定します。
• true:connectionErrorOccurred の発生を抑止します。
• false:connectionErrorOccurred の発生を抑止しません。
このメソッドを実行しない場合は,false が仮定されます。
ConnectionPoolDataSource を使用している場合,致命的な接続エラーが発生したときに呼ばれる
ConnectionEventListener.connectionErrorOccurred の,呼び出しを抑止するための設定をします。
通常は未設定にするか,または false を設定します。
(4) 戻り値
なし。
(5) 発生する例外
なし。
8.5.16 setPassword(String password)
(1) 機能
HADB サーバに接続する認可識別子のパスワードを設定します。
次に示すメソッドを実行する際,setUser および setPassword メソッドで設定した認可識別子とパスワー
ドを使って HADB サーバに接続します。
• DataSource インタフェースの getConnection メソッド(引数なしの場合)
• ConnectionPoolDataSource インタフェースの getPooledConnection メソッド
なお,パスワードの指定には,優先順位があります。詳細については,「5.3.4 接続情報の優先順位」を
参照してください。
(2) 形式
public synchronized void setPassword(String password) throws SQLException
(3) 引数
String password:
HADB サーバに接続する認可識別子のパスワードを指定します。null を指定した場合は,このメソッ
ドによるパスワードの設定がないものと見なされます。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
618
(4) 戻り値
なし。
(5) 発生する例外
なし。
8.5.17 setSQLWarningKeep(boolean mode)
(1) 機能
SQL 実行時に発生した警告情報を保持するかどうかを設定します。
(2) 形式
public synchronized void setSQLWarningKeep(boolean mode) throws SQLException
(3) 引数
boolean mode:
警告情報を保持するかどうかを指定します。次に示すどちらかの値を指定します。
• true:警告情報を保持します。
• false:警告情報を保持しません。
このメソッドを実行しない場合は,true が仮定されます。
(4) 戻り値
なし。
(5) 発生する例外
なし。
8.5.18 setTraceNumber(int num)
(1) 機能
JDBC インタフェースメソッドトレースのエントリ数を設定します。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
619
(2) 形式
public synchronized void setTraceNumber(int num) throws SQLException
(3) 引数
int num:
JDBC インタフェースメソッドトレースのエントリ数を 10〜1,000 の範囲で指定します。このメソッ
ドを実行しない場合,JDBC インタフェースメソッドトレースのエントリ数は 500 になります。
(4) 戻り値
なし。
(5) 発生する例外
エントリ数に 10〜1,000 以外の値を設定した場合は,SQLException が投入されます。
8.5.19 setUser(String user)
(1) 機能
HADB サーバに接続する認可識別子を設定します。
次に示すメソッドを実行する際,setUser および setPassword メソッドで設定した認可識別子とパスワー
ドを使って HADB サーバに接続します。
• DataSource インタフェースの getConnection メソッド(引数なしの場合)
• ConnectionPoolDataSource インタフェースの getPooledConnection メソッド
なお,認可識別子の指定には,優先順位があります。詳細については,「5.3.4 接続情報の優先順位」を
参照してください。
(2) 形式
public synchronized void setUser(String user) throws SQLException
(3) 引数
String user:
HADB サーバに接続する認可識別子を指定します。null を指定した場合は,このメソッドによる認可
識別子の設定がないものと見なされます。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
620
(4) 戻り値
なし。
(5) 発生する例外
user に指定した文字列の長さが 0 の場合は,SQLException が投入されます。
8.5.20 setHostName(String name)
(1) 機能
接続先の HADB サーバのホスト名を設定します。
HADB サーバのホスト名の指定には,優先順位があります。詳細については,「5.3.4 接続情報の優先順
位」を参照してください。
(2) 形式
public synchronized void setHostName(String name) throws SQLException
(3) 引数
String name:
接続先の HADB サーバのホスト名を指定します。null を指定した場合は,このメソッドによるホスト
名の設定がないものと見なされます。
(4) 戻り値
なし。
(5) 発生する例外
name に不正な値(0 バイト以下または 256 バイト以上の文字列)を指定した場合,SQLException が投
入されます。
8.5.21 setPort(int port)
(1) 機能
接続先の HADB サーバのポート番号を設定します。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
621
HADB サーバのポート番号の指定には,優先順位があります。詳細については,「5.3.4 接続情報の優先
順位」を参照してください。
(2) 形式
public synchronized void setPort(int port) throws SQLException
(3) 引数
int port:
接続先の HADB サーバのポート番号を 5001〜65535 の範囲で指定します。
(4) 戻り値
なし。
(5) 発生する例外
引数 port の指定値が,5001〜65535 以外の値を指定した場合は,SQLException が投入されます。
8. JDBC 2.0 Optional Package
Hitachi Advanced Data Binder AP 開発ガイド
622
9
JDBC 3.0 API
この章では,JDBC 3.0 API の各インタフェースとメソッドについて説明します。
Hitachi Advanced Data Binder AP 開発ガイド
623
9.1 JDBC 3.0 API の追加機能に対する HADB でのサポート範囲
JDBC 3.0 API の追加機能に対する HADB でのサポート範囲を次の表に示します。
表 9‒1 JDBC 3.0 API の追加機能に対する HADB でのサポート範囲
追加機能
対応するインタフェース
セーブポイント
Connection
×
Savepoint
×
接続プール機能強化
PreparedStatement
×
パラメタメタデータ
ParameterMetaData
○
PreparedStatement
○
Connection
×
DatabaseMetaData
×
Statement
×
Connection
○
DatabaseMetaData
○
Statement
○
ResultSet
○
DatabaseMetaData
○
自動生成キー
ホールダブルカーソル
データベースメタデータ追加 API
HADB でのサポート範囲
(凡例)
○:HADB でサポートしています。
×:HADB ではサポートしていません。
9. JDBC 3.0 API
Hitachi Advanced Data Binder AP 開発ガイド
624
9.2 ParameterMetaData インタフェース
ここでは,ParameterMetaData インタフェースで提供されているメソッドについて説明します。
9.2.1 ParameterMetaData インタフェースのメソッド一覧
(1) ParameterMetaData インタフェースの主な機能
ParameterMetaData インタフェースでは,主に次の機能が提供されています。
• PreparedStatement オブジェクト内のパラメタのデータ型およびデータ長などのメタ情報の返却
(2) HADB でサポートしている ParameterMetaData インタフェースのメ
ソッド
HADB でサポートしている ParameterMetaData インタフェースのメソッドの一覧を次の表に示します。
表 9‒2 ParameterMetaData インタフェースのメソッドの一覧
項番
ParameterMetaData インタフェースのメソッド
機能
1
getParameterClassName(int param)
パラメタのデータ型に対する Java クラスの完全指定された名
前を取得します。
2
getParameterCount()
PreparedStatement オブジェクトのパラメタ数を取得します。
3
getParameterMode(int param)
指定したパラメタのモードを取得します。
4
getParameterType(int param)
指定したパラメタの SQL データ型を取得します。
5
getParameterTypeName(int param)
指定したパラメタのデータ型を取得します。
6
getPrecision(int param)
指定したパラメタの桁数を取得します。
7
getScale(int param)
指定したパラメタの小数点以下の桁数を取得します。
8
isNullable(int param)
指定したパラメタにナル値をセットできるかどうかを返します。
9
isSigned(int param)
指定したパラメタの値が,符号付き数値かどうかを返します。
注
この表に記載されていないメソッドは,HADB ではサポートしていません。サポートしていないメソッ
ドを実行すると,SQLException が投入されることがあります。
(3) 必要なパッケージ名称とクラス名称
ParameterMetaData インタフェースを使用する場合に必要なパッケージ名称とクラス名称を次に示します。
• パッケージ名称:com.hitachi.hadb.jdbc
9. JDBC 3.0 API
Hitachi Advanced Data Binder AP 開発ガイド
625
• クラス名称:AdbParameterMetaData
9.2.2 getParameterClassName(int param)
(1) 機能
パラメタのデータ型に対する Java クラスの完全指定された名前を取得します。
(2) 形式
public synchronized String getParameterClassName(int param) throws SQLException
(3) 引数
int param:
1 から始まるパラメタ番号を指定します。
(4) 戻り値
String オブジェクトが返却されます。
パラメタに対して PreparedStatement オブジェクトの setObject メソッドによって使用される Java クラ
スの型を String 型で返します。パラメタのデータ型と返却値を次の表に示します。
表 9‒3 getParameterClassName メソッドを実行して返却される文字列
パラメタのデータ型(HADB のデータ型)
返却される文字列
INTEGER
"java.lang.Long"
SMALLINT
"java.lang.Integer"
DOUBLE PRECISION
"java.lang.Double"
DECIMAL
"java.math.BigDecimal"
CHAR
"java.lang.String"
VARCHAR
"java.lang.String"
DATE
"java.sql.Date"
TIME
"java.sql.Time"
TIMESTAMP
"java.sql.Timestamp"
BINARY
"java.lang.Object"
VARBINARY
"java.lang.Object"
9. JDBC 3.0 API
Hitachi Advanced Data Binder AP 開発ガイド
626
パラメタのデータ型(HADB のデータ型)
返却される文字列
ROW
"java.sql.Object"
(5) 発生する例外
param に指定した値が 0 以下,またはパラメタ数より大きい場合,SQLException が投入されます。
9.2.3 getParameterCount()
(1) 機能
PreparedStatement オブジェクトのパラメタ数を取得します。
(2) 形式
public synchronized int getParameterCount() throws SQLException
(3) 引数
なし。
(4) 戻り値
PreparedStatement オブジェクトのパラメタ数が返却されます。
(5) 発生する例外
なし。
9.2.4 getParameterMode(int param)
(1) 機能
指定したパラメタのモードを取得します。
(2) 形式
public synchronized int getParameterMode(int param) throws SQLException
9. JDBC 3.0 API
Hitachi Advanced Data Binder AP 開発ガイド
627
(3) 引数
int param:
1 から始まるパラメタ番号を指定します。
(4) 戻り値
常に ParameterMetaData.parameterModeIn が返却されます。
(5) 発生する例外
param に指定した値が 0 以下,またはパラメタ数より大きい場合,SQLException が投入されます。
9.2.5 getParameterType(int param)
(1) 機能
指定したパラメタの SQL データ型を取得します。
(2) 形式
public synchronized int getParameterType(int param) throws SQLException
(3) 引数
int param:
1 から始まるパラメタ番号を指定します。
(4) 戻り値
java.sql.Types からの SQL 型が返却されます。
列のデータ型と返却値の対応については,「5.6.1(1) HADB のデータ型と JDBC の SQL データ型の対
応」を参照してください。
(5) 発生する例外
param に指定した値が 0 以下,またはパラメタ数より大きい場合,SQLException が投入されます。
9. JDBC 3.0 API
Hitachi Advanced Data Binder AP 開発ガイド
628
9.2.6 getParameterTypeName(int param)
(1) 機能
指定したパラメタのデータ型を取得します。
(2) 形式
public synchronized String getParameterTypeName(int param) throws SQLException
(3) 引数
int param:
1 から始まるパラメタ番号を指定します。
(4) 戻り値
String オブジェクトが返却されます。getParameterTypeName メソッドの戻り値を次の表に示します。
表 9‒4 getParameterTypeName メソッドの戻り値
パラメタのデータ型(HADB のデータ型)
戻り値(返却される文字列)
INTEGER
"INTEGER"
SMALLINT
"SMALLINT"
DECIMAL
"DECIMAL"
DOUBLE PRECISION
"DOUBLE PRECISION"
CHAR
"CHAR"
VARCHAR
"VARCHAR"
DATE
"DATE"
TIME
"TIME"
TIMESTAMP
"TIMESTAMP"
BINARY
"BINARY"
VARBINARY
"VARBINARY"
ROW
"ROW"
(5) 発生する例外
param に指定した値が 0 以下,またはパラメタ数より大きい場合,SQLException が投入されます。
9. JDBC 3.0 API
Hitachi Advanced Data Binder AP 開発ガイド
629
9.2.7 getPrecision(int param)
(1) 機能
パラメタの桁数を取得します。
(2) 形式
public synchronized int getPrecision(int param) throws SQLException
(3) 引数
int param:
1 から始まるパラメタ番号を指定します。
(4) 戻り値
パラメタの桁数