Javaでシステム開発するときに、他の人がデータベースの環境構築をする場合、データベースまわりのロジックの動作確認しつつ、開発を進めたいので、データベースはAccessのmdbで代替して開発している、というかしていた。
だって、mdbを新規作成して、デザインビューでテーブルの定義をするだけなので、楽だから。
で、久しぶりにやってみたら動かない。
jdbcodbcドライバーをロードするところで、Exceptionが発生している。
jdbcodbcドライバーをロードする箇所
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
return null;
}
Exceptionが発生!!
java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
どうしてだろう、と思い、調査してみると、こちらのサイトを発見。 どうやらjava7で、jdbcodbcドライバーを使用してのAccessのmdbのアクセスは非推奨。
そして、java8からはできなくなっていたらしい。
また、代替方法もあって、「UCanAccess」というのを使用すればできるとのこと。
まず、以下のサイトからgradleの設定情報をローカルのbuild.gradleの定義に設定する。
build.gradleに設定する定義情報
// https://mvnrepository.com/artifact/net.sf.ucanaccess/ucanaccess compile group: 'net.sf.ucanaccess', name: 'ucanaccess', version: '5.0.0'そして、次のようにmdbファイルのパスを引数にして、コネクションを取得してデータベースアクセスできる。
Connection conn = null;
try {
conn = DriverManager.getConnection("jdbc:ucanaccess://D:/dbarea/db.mdb");
} catch (SQLException e) {
e.printStackTrace();
}
