Symfoware

Symfowareについての考察blog

java 8 jjsスクリプト JDBCドライバを使用してデータベースに接続する

java8から搭載されたjjsスクリプトを試しています。
OpenJDK 8 jjsコマンドでJavaScriptを実行する

JDBCドライバをロードし、データベースに接続。
データの取得が行えるか試してみます。


JDBCドライバの入手



MariaDBへの接続を試してみます。

まず、こちらを参考にJDBCドライバを入手しました。
MariaDB 10にJDBCドライバ(MariaDB Connector/J 1.1.9)で接続する

ダウンロードURLはこちら。


Download MariaDB Connector/Jをクリック

724_01.png


Download 1.5.6 Stable Now!をクリック

724_02.png


MariaDB Connector/J .jar をクリック

724_03.png


mariadb-java-client-1.5.6.jarをダウンロードしました。

724_04.png


ダウンロードしたjarファイルは、これから作成するスクリプトファイルと
同じ階層に保存しておきます。




サンプルプログラム




サーバー:192.168.1.103
ユーザー:admin
パスワード:P@ssw0rd
データベース:sample
テーブル:test



上記条件のデータベースに接続するサンプルを書いてみます。


・sample.js


  1. var url = "jdbc:mariadb://192.168.1.103:3306/sample"
  2. var con = java.sql.DriverManager.getConnection(url, 'admin', 'P@ssw0rd')
  3. var stmt = con.createStatement()
  4. var rs = stmt.executeQuery('select * from test')
  5. while(rs.next()){
  6.     print(rs.getInt('id') + ':' + rs.getString('item'))
  7. }
  8. print('ok')




jjsの引数を見ると「-cp」でクラスパスを指定できる模様。
ダウンロードした「mariadb-java-client-1.5.6.jar」を指定して実行するとエラーになります。


$ jjs -cp mariadb-java-client-1.5.6.jar sample.js
Exception in thread "main" java.lang.RuntimeException: java.sql.SQLException:
No suitable driver found for jdbc:mariadb://192.168.1.103:3306/sample




JDBCドライバは使用できないのかな?と悩んでいたところ、この記事を見つけました。
how to specify the CLASSPATH for for jjs/Nashorn javascript?


「-J-Djava.class.path=」でドライバのjarファイルを指定しろとのこと。
-Jオプションは、Java仮想マシン(JVM)に対するオプションのようです。
https://docs.oracle.com/javase/jp/8/docs/technotes/tools/windows/javac.html


オプションを変更して、再度実行。


$ jjs -J-Djava.class.path=mariadb-java-client-1.5.6.jar sample.js
1:test1
2:test2
3:test3
4:test4
5:test5
ok



ちゃんとデータベースに接続し、データの取得が行えました。






もうひとつのサンプル



せっかく-cpオプションがあるので、この指定だけでデータベースに接続できないか考えてみます。

以前、JDBCドライバについて調べた時のことが役に立ちました。
JDBC over Thriftを作成する その1(JDBCドライバの作り方)


DriverManagerを使用せず、直接対象のJDBCドライバーを生成。
コネクションを取得してやります。


  1. var prop = new java.util.Properties()
  2. prop.setProperty('user', 'admin')
  3. prop.setProperty('password', 'P@ssw0rd')
  4. var url = "jdbc:mariadb://192.168.1.103:3306/sample"
  5. var driver = new org.mariadb.jdbc.Driver()
  6. var con = driver.connect(url, prop)
  7. var stmt = con.createStatement()
  8. var rs = stmt.executeQuery('select * from test')
  9. while(rs.next()){
  10.     print(rs.getInt('id') + ':' + rs.getString('item'))
  11. }
  12. print('ok')




強引ですが、この書き方であれば-cpオプションにJDBCドライバのjarファイルを
指定することで実行可能となります。


$ jjs -cp mariadb-java-client-1.5.6.jar sample.js
1:test1
2:test2
3:test3
4:test4
5:test5
ok





【参考URL】

MariaDB 10にJDBCドライバ(MariaDB Connector/J 1.1.9)で接続する

how to specify the CLASSPATH for for jjs/Nashorn javascript?

https://docs.oracle.com/javase/jp/8/docs/technotes/tools/windows/javac.html

JDBC over Thriftを作成する その1(JDBCドライバの作り方)

関連記事

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

  1. 2017/01/15(日) 21:14:41|
  2. Java
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<java 8 jjsスクリプト http接続とjsonデータのデコード | ホーム | OpenJDK 8 jjs javafxの画面を作成する>>

コメント

コメントの投稿


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

トラックバック

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