シナリオ
- Java8以降はJDBC-ODBCブリッジが削除されたのでUCanAccessをインストールし接続する。
- c:\sample\test.mdbに接続しテーブル:T_通貨の通貨コード:USD の通貨名を取得
テーブル:T_通貨
UCanAccessのインストール
・インストール先はc:\ucanaccessとする。
・ここのUCanAccess-5.0.1.bin.zipをダウンロード ※この例では5.0.1だが適宜読み替える
・解凍後、以下のjarファイルをc:\ucanaccessに保管する。
ucanaccess-5.0.1.jar ←解凍フォルダの直下にある
commons-lang3-3.8.1.jar ←以下はlibフォルダ内
commons-logging-1.2.jar
hsqldb-2.5.0.jar
jackcess-3.0.1.jar
※SikuliXバグ情報
sikulix1.1.4以降のloadコマンドにバグがある模様。
https://bugs.launchpad.net/sikuli/+bug/1789569
2.1でFix予定らしい。2.0.4ではOK 2.0.4でもダメな場合がある。
回避策:下記フォルダに上記jarファイルをコピー後IDEを起動し直すと自動でロードするようだ
※AppDataは隠しファイルなので表示できるように設定する(エクスプローラ>表示タブ>隠しファイル)
C:\Users\<ユーザー名>\AppData\Roaming\Sikulix\Extensions
サンプルコード
# UCanAccessをロードしておく
load(r"C:\ucanaccess\commons-lang3-3.8.1.jar")
load(r"C:\ucanaccess\commons-logging-1.2.jar")
load(r"C:\ucanaccess\hsqldb-2.5.0.jar")
load(r"C:\ucanaccess\jackcess-3.0.1.jar")
load(r"C:\ucanaccess\ucanaccess-5.0.1.jar")
import sys
from java.lang import Class
from java.sql import DriverManager
from java.sql import PreparedStatement
reload(sys)
sys.setdefaultencoding("utf-8")
# MS-Access ファイル名指定(*.mdb, *.accdb)
MSACCESS_DB = u"jdbc:ucanaccess://C:/sample/test.mdb"
strSQL = u"SELECT * FROM T_通貨 WHERE 通貨コード = ?"
cn = DriverManager.getConnection(MSACCESS_DB)
st = cn.prepareStatement(strSQL)
st.setString(1, "USD") # プレースホルダに値を指定
try:
rs = st.executeQuery()
while rs.next():
print rs.getString(u"通貨コード"), rs.getString(u"通貨名")
except Exception, e:
print e.args[0]
finally:
rs.close()
st.close()
cn.close()
結果
USD ドル