プロが教える店舗&オフィスのセキュリティ対策術

javaからDB2にアクセスしようとして下記のコードを書きましたが、全く動きません。
C言語ではSQL文でコネクトできるのですが、javadでは違うようです。

得られた画面表示は
try
error code 0

です。

DB2 Epress-C 10.5.0.420
Java SE Development Kit Update 40 (64-bit)


import java.sql.*;
import sqlj.runtime.*;
import sqlj.runtime.ref.*;

#sql iterator ItrPos (String, String);
#sql context Myctx;

class Test14{

public static void main(String[] args) {
String col1 = "";
String col2 = "";

System.out.println("try");
try {
Myctx myctx = new Myctx("jdbc:db2:sample","user1","",false);
System.out.println("try2");
ItrPos itr;
System.out.println("try3");
#sql [myctx] itr = { select col1, col2 from Test1 };
System.out.println("select");

while (itr.endFetch() == false){

#sql { fetch :itr into :col1, :col2 };
System.out.println("fetch");

if(itr.endFetch()){
System.out.println(col1 + col2);
}
}
}
catch(Exception e) {
if (e instanceof java.sql.SQLException) {
System.out.println("error code: " + ((java.sql.SQLException)(e)).getErrorCode());
}
}
}
}

A 回答 (5件)

おそらく、利用PCにC言語用のクライアント(CLI、ODBC)はインストールされているが、


Java用のクライアント(JDBC)がインストールされていないのでしょう。

下記のWindowsの手順を実行し、インストールしてください。

http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/i …
    • good
    • 0
この回答へのお礼

出来ました。

db2jcc.jar または db2jcc4.jar
JDBC 3.0 以前の機能だけが組み込まれているバージョンの IBM Data Server Driver for JDBC and SQLJ を使用する予定であれば、db2jcc.jar を CLASSPATH に組み込みます。
JDBC 4.0 以降の機能と、JDBC 3.0 以前の機能が組み込まれているバージョンの IBM Data Server Driver for JDBC and SQLJ を使用する予定であれば、db2jcc4.jar を CLASSPATH に組み込みます。

sqlj.zip または sqlj4.zip
JDBC 3.0 以前の機能だけが組み込まれた SQLJ アプリケーションを準備する予定であれば、sqlj.zip を CLASSPATH に組み込みます。
JDBC 4.0 以降の機能と、JDBC 3.0 以前の機能が組み込まれた SQLJ アプリケーションを準備する予定であれば、sqlj4.zip を CLASSPATH に組み込みます。

この手続だけでした。

お礼日時:2013/09/18 22:14

貴環境で以下のファイルを含むように環境変数CLASSPATHを設定します。


どこにあるかは現状いただいている情報ではわかりません。検索してください。

sqlj_classes.jar
translator.zip
runtime.zip

検索方法はOSがわからないのでお示しできません。

格納先/sqlj_classes.jar:格納先/translator.zip:格納先/runtime.zip となります。
Windowsの場合は\でフォルダを区切ります。

設定方法も、ご利用のOSがわからないので、Windows 7の場合をお示しすると、
1)「スタート」
  →「コンピュータ」を右クリック
2)左側の一覧から「システムの詳細設定」をクリック
3)「詳細設定」タブをクリック
4)「環境変数」ボタンをクリック
5)「システム環境変数」の新規をクリック
6)変数名:CLASSPATH 変数値:(jar及びzipが存在するフルパスとファイル名を指定します) を設定する
7)開いているウインドウを順々に「OK」ボタンをクリックして閉じる

UNIX系OS(bounce shell)の場合は、
$ export CLASSPATH=格納先/sqlj_classes.jar:格納先/translator.zip:格納先/runtime.zip
となります。
$ cd /
$ find . | grep sqlj_classes.jar
などとすると格納先が解るかと思います。

この回答への補足

3つとも、全く見当たりません。

java.sql.SQLException: No suitable driver found for jdbc:db2:sample

の原因がCLASSPATHにあるのでしょうか?

osはwindows7(64ビット)です。
あとどんな情報がいりますか?

補足日時:2013/09/18 18:28
    • good
    • 0

環境変数CLASSPATHの確認をお願いします。



http://publib.boulder.ibm.com/html/as400/v4r5/ic …

この回答への補足

ありがとうございます。

ただ、/QIBM/ProdData/Java400/ext  なんというフォルダーは存在しません。

私の環境でのページをご指導ください。

補足日時:2013/09/18 15:58
    • good
    • 0

>System.out.println("error code: " + ((java.sql.SQLException)(e)).getErrorCode());


>}
このあとに
>System.out.println(e);
とすると、実行時に何が表示されますか?

この回答への補足

ありがとうございます。

try
try1
error code: 0
java.sql.SQLException: No suitable driver found for jdbc:db2:sample


となりました。

補足日時:2013/09/18 07:26
    • good
    • 0

Myctx myctx = new Myctx("jdbc:db2:sample","user1","",false);の前の行に、



Class.forName( "COM.ibm.db2.jdbc.app.DB2Driver" );

を挿入してみてください。

参考
http://www-06.ibm.com/software/jp/data/db2univ/d …
http://d.hatena.ne.jp/spider-man/20080307/p1

この回答への補足

ありがとうございます。

System.out.println("try");
try {
Class.forName( "COM.ibm.db2.jdbc.app.DB2Driver" );
System.out.println("try1");
Myctx myctx = new Myctx("jdbc:db2:sample","user1","",false);
System.out.println("try2");

try2が出てきません。

補足日時:2013/09/12 20:44
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!