1

beanshell スクリプトで hsqldb に接続したい。

クラスの読み込み中に問題が発生しました。以前に書いたのですが、返信されました。

コードは次のようになります。

    Connection conn = null;

    try {
            getClass("org.hsqldb.jdbcDriver").newInstance();
            conn =  DriverManager.getConnection("jdbc:hsqldb:file:C:/testdata/tdb","SA","");
            System.out.println("Connection established");
    }

そして、私はこのエラーが発生しています:

java.sql.SQLException: No suitable driver found for jdbc:hsqldb:file:C:/testdata/tdb

ドライバーも登録しようとしましたが、うまくいきませんでした

DriverManager.register(getClass("org.hsqldb.jdbcDriver").newInstance())

このコードは、(Class.forName() を使用する getClass() の代わりに) Java で既に機能します。beanshell がこのコードを機能させるために必要なものは何ですか?

ありがとう、ビラル

4

1 に答える 1

1

私はこれをあきらめました。他のタイプのオブジェクトとは対照的に、JDBC クラスを動的にロードする方法がありませんでした。代わりに、Runtime exec を使用して DB のコマンド ライン プログラムを呼び出します。また、beanshell には「exec()」メソッドがあります。

幸いなことに、実際に DB とやり取りするのではなく、DB に対してスクリプトを実行するだけでよかったので、これでうまくいきました。

また、JDBC がロードされない理由は、Beanshell が (デフォルトのクラスローダーではなく) 独自のクラスローダーをロードすることがあるためです。これは特に、Beanshell スクリプト内で jar を動的にロードしようとした場合に発生します。jdbc.jar を Javasoft/ext ディレクトリに置くと、デフォルトのクラスローダに入ると思います。また、Beanshell スクリプトが新しい classloader をトリガーしないように十分に注意している場合、それも同様に機能する可能性があります。つまり、スクリプトで「addClassPath」などを呼び出さないでください。

于 2011-08-26T07:29:09.357 に答える