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

サンプルアプリケーション

ドキュメント内 アプリケーション開発ガイド (JDBCドライバ編) (ページ 161-170)

第 5 章 アプリケーションのコンパイルおよび実行

B.4 サンプルアプリケーション

サンプルアプリケーションを以下に示します。

ここでは、データベースのデータを参照するプログラム例を説明します。

データベースへの接続形態には、リモートアクセス(RDB2_TCP連携)を使用しています。

// 以下のパッケージをインポートします。

import java.sql.*;

// クラスを定義します。

public class MyURLAccess {

public static void main(String args[]) {

try {

// JDBCドライバを指定します。

Class.forName("com.fujitsu.symfoware.jdbc.SYMDriver");

// データベースと接続します。

Connection con =

DriverManager.getConnection("jdbc:symford://myhost:2050/COMPANY", "UID", "PWD");

// 自動コミットの設定 con.setAutoCommit(false);

// Statementインタフェースのオブジェクトを生成します。

Statement stmt = con.createStatement();

// SQL文を実行し、ResultSetの // オブジェクトを生成します。

ResultSet rs = stmt.executeQuery("SELECT ID,NAME FROM GENERAL.EMPLOYEE");

int iID = 0;

String sName = null;

while(rs.next()) {

// ResultSetの列に対応する // データを取得します。

iID = rs.getInt(1);

sName = rs.getString(2);

// 取得した情報を表示します。

System.out.println("ID = " + iID);

System.out.println("NAME = " + sName);

}

// ResultSetのオブジェクトをクローズします。

rs.close();

// Statementのオブジェクトをクローズします。

stmt.close();

// Connectionのオブジェクトをクローズします。

con.close();

}

// SQLExceptionが発生した場合の処理を記述します。

catch (SQLException e) {

// エラー情報を出力します。

System.out.println("ERROR MESSAGE : " + e.getMessage());

System.out.println("SQLSTATE : " + e.getSQLState());

System.out.println("ERROR CODE : " + e.getErrorCode());

e.printStackTrace();

}

// その他のExceptionが発生した場合の処理を記述します。

catch (Exception e) {

// スタックトレースを出力します。

System.out.println("ERROR MESSAGE : " + e.getMessage());

e.printStackTrace();

} } }

付録 C 異常時の対処

JDBCドライバ利用時に、異常が発生した際の対処方法について説明します。

なお、ここに記載されていない異常が発生した場合は、“付録E メッセージリファレンス”または“5.4 アプリケーションのデ バッグ”を参照し、対処を行ってください。

"LDWrapper

クラスがローカルデータベースアクセスをロードしていません"のエラーが返却された場合

・ JDBCドライバが正しくインストールされているかを確認してください。

・ JDBCドライバの環境設定に誤りがある可能性があります。“5.3 アプリケーションの実行”を参照し、環境設定を見直 してください。

注意

ServletやJSPで環境設定を変更した場合、変更した値を有効にするために、使用しているServletコンテナを再起

動してください。

・ アプリケーションサーバ上に、以下のどちらかの製品が正しくインストールされていることを確認してください。

- Symfoware Server クライアント機能

- Symfoware Server

"データ受信中にサーバとの通信が切断されました"のエラーが返却された場合

・ 指定されたポート番号に誤りがある可能性があります。ポート番号が正しいかどうか、確認してください。

注意

RDB2_TCP連携とRDA-SV連携とで、指定するポート番号は異なります。

RDB2_TCP連携時はSymfoware Serverのポート番号を、RDA-SV連携時はRDA-SVのポート番号を指定してく

ださい。

"コネクションの失敗: I/O

エラーが発生しました"のエラーが返却された場合

・ 指定されたホスト名、ポート番号およびデータ資源名が正しいか確認してください。

・ Symfoware Serverが起動されているかを確認してください。

・ RDA-SVが起動されているかを確認してください。(リモートアクセス(RDA-SV連携)の場合)

"同時に使用できるコネクション数の最大値を超えました"のエラーが返却された場合

・ JDBCドライバが同時に使用できるコネクション数の最大値を超えたため、コネクションをクローズするか、JDBCデー タソースオプション設定画面で最大コネクション数の値を増やしてください。

必要に応じてSymfoware Serverの最大コネクション数も変更してください。

"コネクション違反 - SQL

クライアントが

SQL

コネクションを獲得できませんでした"のエラーが返却された場 合

・ JDBCドライバでタイムアウトが発生した可能性があります。

JDBCデータソースオプション設定画面のサーバ待ち時間の値を見直し,適切な値を設定してください。0を指定し た場合は、待ち時間の監視を行いません。

・ RDA-SVの入力待ち時間監視機能により、コネクションが切断された可能性があります。

RDA-SVの入力待ち時間監視の値を見直し、適当な値を設定してください。

・ Symfoware Serverまたは、RDA-SVが正しく動作しているかを再度確認してください。

"JYP1059E 不当なプロトコルが転送されました."のエラーが返却された場合

・ 指定されたポート番号に誤りがある可能性があります。ポート番号が正しいかどうか、確認してください。

注意

RDB2_TCP連携とRDA-SV連携とで、指定するポート番号は異なります。

RDB2_TCP連携時はSymfoware Serverのポート番号を、RDA-SV連携時はRDA-SVのポート番号を指定してく

ださい。

"java.sql.SQLException: No suitable driver "

のエラーが返却された場合

・ DriverManager.getConnectionメソッドの引数に指定するURLの記述形式が正しいか確認してください。

・ Class.forNameメソッドの引数に指定するJDBCドライバ名が正しいか確認してください。

"java.lang.NoClassDefFoundError"のエラーが返却された場合

・ JDBCドライバの環境設定に誤りがある可能性があります。“5.3 アプリケーションの実行”を参照し、環境設定を見直 してください。

"java.lang.OutOfMemoryError"のエラーが返却された場合

・ メモリ不足が発生しました。

Javaでは、不要になったメモリの解放はガーベジコレクションで行われます。しかし、ガーベジコレクションは、使われ なくなったオブジェクトが使用しているメモリを解放するだけです。アプリケーションが必要なメモリの解放としては、十 分ではありません。 そのため、アプリケーションがメモリ不足になる場合があります。

メモリ不足が発生した場合は、以下の対処を行ってください。

- Java実行環境のヒープサイズを拡張する。

- System.gcメソッドを使い、強制的にメモリの解放を行う。

ただし、System.gcメソッドは実行性能に影響します。

呼び出しのタイミングなどを十分に検討した上で使用してください。

[Java実行環境のヒープサイズ拡張例]

初期サイズを64MByte、最大サイズを128MByteに設定します。

java -Xms64m -Xmx128m <class Name>

"java.lang.IncompatibleClassChangeError"のエラーが返却された場合

・ 現在有効になっているJDKのVLが、1.1.*になっている可能性があります。以下のコマンドを使用して、有効になっ ているJDKのVLを確認してください。

java -version

JDK1.1.*を使用している場合、JDKの環境設定(環境変数“PATH”)を見直し、再度確認してください。

リモートアクセス(RDA-SV 連携)で

LIKE

述語を指定してデータを検索しているが、検索結果が

0

件になる場 合

・ 指定された問合せ式を以下のとおりに修正し、再度実行してください。

- LIKE述語に各国語文字列を定数として指定する場合、文字列定数として指定する(Nは付けない)

- 全角の“%”を使用している場合、半角の“%”にする

【記述例】

SELECT ID, NAME FROM SCH.TBL

WHERE NAME LIKE '%あああ%'

付録 D 使用可能 SQL 文一覧

JDBCドライバを使用したアプリケーションで指定可能なSQL文について説明します。

以下のインタフェースのパラメタで指定可能なSQL文について説明します。

・ CallableStatementインタフェース

・ PreparedStatementインタフェース

・ Statementインタフェース CallableStatement

インタフェース

分類 SQL

ストアドプロシジャ CALL文

PreparedStatement

インタフェース

分類 SQL

スキーマ定義文 CREATE SCHEMA文 (注1) (スキーマ定義)

CREATE TABLE文 (注1) (注2) (表定義)

CREATE VIEW文 (ビュー定義)

CREATE PROCEDURE文

(プロシジャルーチン定義) CREATE FUNCTION文 (ファンクションルーチン定義) CREATE INDEX文 (注1) (注2) (インデックス定義)

CREATE TRIGGER文 (トリガ定義)

CREATE SEQUENCE文 (順序定義)

スキーマ操作文 DROP SCHEMA文 (スキーマ削除文) DROP TABLE文 (表削除文) ALTER TABLE文 (表定義変更文) DROP VIEW文 (ビュー削除文)

DROP PROCEDURE文

(プロシジャルーチン削除文) DROP INDEX文

(インデックス削除文) DROP TRIGGER文 (トリガ削除文)

分類 SQL文 SWAP TABLE文 (表交換文)

DROP SEQUENCE文 (順序削除文)

DROP FUNCTION文 (ファンクションルーチン削除文) 格納構造定義文 CREATE SCOPE文

(スコープ定義文) 格納構造操作文 DROP SCOPE文 (スコープ削除文) APPLY SCOPE文 (スコープ適用文) RELEASE SCOPE文 (スコープ解除文)

データ操作文 問合せ式

問合せ式(動的パラメタあり) INSERT文

INSERT文(動的パラメタあり) DELETE文: 探索

DELETE文: 探索(動的パラメタあり)

UPDATE文: 探索

UPDATE文: 探索(動的パラメタあり) DELETE文: 位置づけ

DELETE文: 位置づけ(動的パラメタあり)

UPDATE文: 位置づけ

UPDATE文: 位置づけ(動的パラメタあり)

トランザクション管理文 SET TRANSACTION文 セション管理文 SET SCHEMA文 利用者制御文 CREATE USER文

(利用者定義文) DROP USER文 (利用者削除文) ALTER USER文 (利用者変更文) アクセス制御文 CREATE ROLE文

(ロール定義文) DROP ROLE文 (ロール削除文)

GRANT文

REVOKE文

Statement

インタフェース

分類 SQL

スキーマ定義文 CREATE SCHEMA文 (注1) (スキーマ定義)

CREATE TABLE文 (注1) (注2) (表定義)

CREATE VIEW文 (ビュー定義)

CREATE PROCEDURE文

(プロシジャルーチン定義) CREATE FUNCTION文 (ファンクションルーチン定義) CREATE INDEX文 (注1) (注2) (インデックス定義)

CREATE TRIGGER文 (トリガ定義)

CREATE SEQUENCE文 (順序定義)

スキーマ操作文 DROP SCHEMA文 (スキーマ削除文) DROP TABLE文 (表削除文) ALTER TABLE文 (表定義変更文) DROP VIEW文 (ビュー削除文)

DROP PROCEDURE文

(プロシジャルーチン削除文) DROP INDEX文

(インデックス削除文) DROP TRIGGER文 (トリガ削除文) SWAP TABLE文 (表交換文)

DROP SEQUENCE文 (順序削除文)

DROP FUNCTION文 (ファンクションルーチン削除文) 格納構造定義文 CREATE SCOPE文

(スコープ定義文) 格納構造操作文 DROP SCOPE文 (スコープ削除文) APPLY SCOPE文 (スコープ適用文) RELEASE SCOPE文 (スコープ解除文)

分類 SQL

データ操作文 問合せ式

INSERT文 DELETE文: 探索 UPDATE文: 探索

DELETE文: 位置づけ

UPDATE文: 位置づけ

トランザクション管理文 SET TRANSACTION文 セション管理文 SET SCHEMA文 利用者制御文 CREATE USER文

(利用者定義文) DROP USER文 (利用者削除文) ALTER USER文 (利用者変更文) アクセス制御文 CREATE ROLE文

(ロール定義文) DROP ROLE文 (ロール削除文)

GRANT文

REVOKE文

注1) JDBCドライバを利用したアプリケーションで、スキーマ定義文、表定義文およびインデックス定義文を実行する場

合、指定するスキーマ名、表名およびインデックス名は、通常、8文字以内で指定します。

スキーマ名などの文字数を拡張したい場合、システム用の動作環境ファイルの“DEFAULT_DSI_NAME”を指定してく ださい。

参照

“DEFAULT_DSI_NAME”の詳細は、“セットアップガイド”を参照してください。

注2) JDBCドライバを利用したアプリケーションで、表定義文およびインデックス定義文を実行する場合、データベース

名と同じ名前の空きのあるデータベーススペースを用意しておく必要があります。

付録 E メッセージリファレンス

各エラーメッセージに対する利用者の対処方法について説明します。

データベースへアクセス中にエラーが発生した場合には、SQLExceptionが返却されます。SQLExceptionは以下の情 報を取得できます。

E.1 SQLSTATEエラーメッセージ

ドキュメント内 アプリケーション開発ガイド (JDBCドライバ編) (ページ 161-170)