概要
JavaアプリケーションからJDBC接続でTDVデータサービスに接続し、クエリを実行する方法について説明します。
本記事で示す例では、利用者のローカルPC(Windows10)からJavaアプリケーションを介し、リモートサーバーで実行中のTDV Server上で公開されているサンプルデータサービスにJDBCで接続します。
検証環境
製品 | バージョン |
---|---|
TDV Server |
8.7.0 |
パス設定
Windowsのコマンドプロンプトを起動し、以下のようにパスを設定します。
JAVA_HOME
JAVA_HOME
に使用するJDKのパスをセットします。
set JAVA_HOME="<使用するJDKのパス>"
PATH
%JAVA_HOME%\bin
をPATH
にセットします。
set PATH=%JAVA_HOME%\bin;%PATH%
TDV JDBCドライバ配置
作業フォルダにTDV JDBCドライバ(csjdbc.jar
)を配置します。csjdbc.jar
は<TDV Server 8.7 インストールフォルダ>\apps\jdbc\lib
より入手可能です。
Javaプログラム作成
シンプルなJavaプログラムSelectExample.Java
を作成します。
ここでは、以下のように、ユーザー名・パスワード認証で接続しクエリを実行する処理を記述します。
import java.util.*; import java.sql.*; public class SelectExample { public static void main(String[] arg) throws Exception { Connection conn = null; Statement stmt = null; ResultSet rs = null; try { String url = "jdbc:compositesw:dbapi@:<ポート>?domain=<ドメイン名>&dataSource=<接続先公開データベース名>"; // Load driver String user = "<ユーザー名>"; String pass = "<パスワード>"; Class.forName("cs.jdbc.driver.CompositeDriver"); // Create connection conn = DriverManager.getConnection(url, user, pass); // Create statement stmt = conn.createStatement(); // Execute statement rs = stmt.executeQuery("<実行するクエリ>"); // Get column count ResultSetMetaData rsmd = rs.getMetaData(); int columns = rsmd.getColumnCount(); // Get results while (rs.next()) { for (int i = 0; i < columns; i++) { Object o = rs.getObject(i + 1); if (o == null) { System.out.print("[NULL]"); } else { System.out.print(o.toString()); } System.out.print(" "); } System.out.println(); } } finally { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } } }
<>
で囲われた箇所は実際に接続するTDV Server環境に応じて適宜置換してください。
また、JDBC接続文字列(url
)にJDBCプロパティを追加することもできます。
参考)JDBC ドライバー接続 URL プロパティ(TDV 8.7)
実際の環境に接続可能なプログラムの例を以下に示します。
コンパイル
クラスパスにcsjdbc.jar
を指定しサンプルJavaプログラムをコンパイルします。
javac -cp csjdbc.jar SelectExample.java
エラーが発生せず、SelectExample.class
が作成されることを確認します。
サンプルプログラム実行
SelectExampleクラスを実行します。
java -cp .;csjdbc.jar SelectExample
Linux環境で実行する場合は、クラスパスの指定方法が;
(セミコロン)区切りではなく:
(コロン)区切りになりますのでご注意ください。
JDBC接続とクエリ実行が成功すれば、以下のようにデータが取得されます。
15 14 0.10 2003-02-01 Galileo Systems Alexander Dimetriou (519) 723-0333 Rad Expert 9000 PRO 128 MB 19 2003-02-09 2003-02-09 2003-02-07 8 Top Notch Supplier Joe Owner (215) 226-1000
18 17 0.00 2003-02-09 Justin Solutions Timothy Sanderson (520) 766-0643 Acme 950MHz w/o fan 20 2003-02-07 2003-02-07 2003-02-06 1 Acme Parts Joe Acme (510) 776-2000
10 9 0.05 2003-02-08 Eastside Manufacturing David Arnold (215) 998-0965 Acme Super Memory 21 2003-02-07 2003-02-07 2003-02-06 1 Acme Parts Joe Acme (510) 776-2000
10 9 0.05 2003-02-08 Eastside Manufacturing David Arnold (215) 998-0965 Acme Super Memory 21 2003-02-07 2003-02-07 2003-02-06 1 Acme Parts Joe Acme (510) 776-2000
10 9 0.05 2003-02-08 Eastside Manufacturing David Arnold (215) 998-0965 Acme Super Memory 21 2003-02-07 2003-02-07 2003-02-06 1 Acme Parts Joe Acme (510) 776-2000
10 9 0.05 2003-02-08 Eastside Manufacturing David Arnold (215) 998-0965 Acme Super Memory 21 2003-02-07 2003-02-07 2003-02-06 1 Acme Parts Joe Acme (510) 776-2000
10 9 0.05 2003-02-08 Eastside Manufacturing David Arnold (215) 998-0965 Acme Super Memory 21 2003-02-07 2003-02-07 2003-02-06 1 Acme Parts Joe Acme (510) 776-2000
10 9 0.05 2003-02-08 Eastside Manufacturing David Arnold (215) 998-0965 Acme Super Memory 21 2003-02-07 2003-02-07 2003-02-06 1 Acme Parts Joe Acme (510) 776-2000
29 9 0.20 2003-02-19 Victory Systems Jackson Singleton (650) 375-7000 Acme Super Memory 21 2003-02-07 2003-02-07 2003-02-06 1 Acme Parts Joe Acme (510) 776-2000
29 9 0.20 2003-02-19 Victory Systems Jackson Singleton (650) 375-7000 Acme Super Memory 21 2003-02-07 2003-02-07 2003-02-06 1 Acme Parts Joe Acme (510) 776-2000