Symfoware

Symfowareについての考察blog

JDBCドライバのjarファイルを動的にロードする


※2013/04/03追記
環境変数CLASSPATHにあるJDBCドライバのロードについて考えてみました。

実行可能なjarから環境変数ClassPathにあるJDBCドライバをロードする
http://symfoware.blog68.fc2.com/blog-entry-1102.html




普通のJDBCドライバを使用するプログラムは、クラスパスに
使用するJDBCドライバの入ったjarファイルを指定して、
こんなかんじで記載すると思います。


  1. public void test() {
  2.     
  3.     String url = "jdbc:firebirdsql:192.168.1.11/3050:/var/firebird/utf8.fdb?lc_ctype=UTF8";
  4.     String user = "sysdba";
  5.     String password = "masterkey";
  6.     Connection con = null;
  7.     
  8.     try {
  9.         
  10.         Class.forName("org.firebirdsql.jdbc.FBDriver");
  11.         con = DriverManager.getConnection(url, user, password);
  12.         
  13.         Statement stmt = con.createStatement();
  14.         
  15.         //以下略
  16.         
  17.         
  18.     } catch(Exception e){
  19.         e.printStackTrace();
  20.     }
  21. }





使用する直前に動的にjarファイルを読み込んで、JDBC接続
したかったので、調べてみました。



  1. public void test() {
  2.     String url = "jdbc:firebirdsql:192.168.1.11/3050:/var/firebird/utf8.fdb?lc_ctype=UTF8";
  3.     String user = "sysdba";
  4.     String password = "masterkey";
  5.     Connection con = null;
  6.     
  7.     try {
  8.         
  9.         //Class.forName("org.firebirdsql.jdbc.FBDriver");
  10.         //con = DriverManager.getConnection(url, user, password);
  11.         
  12.         //jarファイルをロード
  13.         File file = new File("lib/jaybird-full-2.1.6.jar");
  14.         URLClassLoader loader = URLClassLoader.newInstance(new URL[]{file.toURI().toURL()});
  15.         
  16.         //Driverクラスをロードして、接続
  17.         Class<?> cl = loader.loadClass("org.firebirdsql.jdbc.FBDriver");
  18.         Driver dr = (Driver)cl.newInstance();
  19.         Properties pr = new Properties();
  20.         pr.setProperty("user", user);
  21.         pr.setProperty("password", password);
  22.         con = dr.connect(url, pr);
  23.         
  24.         Statement stmt = con.createStatement();
  25.         
  26.         //以下略
  27.         
  28.         
  29.     } catch(Exception e){
  30.         e.printStackTrace();
  31.     }
  32. }




DriverManagerを使用せず、自力でjava.sql.Driverを生成すれば良いようです。
以外と簡単にロードできました。
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2012/04/22(日) 16:11:51|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:2
  5. | 編集
<<HTML5 Canvasのクリック(Mousedown)を取得し、選択位置により処理を切り替える | ホーム | Debianにapt-getでFirebird 2.5をインストールする>>

コメント

助かりました。
直接読み込む方法がわからなくて・・・。
  1. 2013/02/23(土) 21:31:59 |
  2. URL |
  3. Kenji #-
  4. [ 編集 ]

Re: タイトルなし

イレギュラーな方法かもしれませんが・・・
お役に立てたようで嬉しいです。
  1. 2013/02/27(水) 18:50:27 |
  2. URL |
  3. symfo #-
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/922-4b5f42ce
この記事にトラックバックする(FC2ブログユーザー)