MS Accessデータベースを作成し、DSNを割り当てました。 Javaアプリケーションを介してアクセスしたい。
これは私がやっていることです:
public class AccessDbConnection {
public static void main(String[] args) {
System.out.println("**ACCESS DB CONNECTION**");
try {
Class.forName("Sun.jdbc.odbc.JdbcOdbcDriver"); // for MS Access ... MS Access driver loading
String conURL = "jdbc:odbc:sampleDNS";
Connection con = DriverManager.getConnection(conURL);
Statement statement = con.createStatement();
String qry = "SELECT * FROM Table1";
ResultSet rs = statement.executeQuery(qry);
while(rs.next()) {
String id = rs.getString("ID") ;
String fname = rs.getString("First_Name");
String lname = rs.getString("Last_Name");
System.out.println(id + fname + lname);
}
} catch (ClassNotFoundException ex) {
System.out.println("Classforname Exception!!");
Logger.getLogger(AccessDbConnection.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
System.out.println("DriverManager Exception!!");
Logger.getLogger(AccessDbConnection.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Tryブロックの最初の行で例外が発生しています。それはclass.forname("..");
です。なぜこの例外が発生するのですか?
Java 7の場合、Class.forName()
ステートメントは実際には必要ないため、単に省略できます。
Java 8の場合、JDBC-ODBCブリッジは削除されているため使用できません。代わりに CanAccess のようなものを使用する必要があります。詳細については、
jDK 8では、jdbc odbcブリッジは使用されなくなったため、JDKから削除されました。 JavaでMicrosoft Accessデータベースを使用するには、5つの追加のJARライブラリが必要です。
1- hsqldb.jar
2- jackcess 2.0.4.jar
3- commons-lang-2.6.jar
4- commons-logging-1.1.1.jar
5- ucanaccess-2.0.8.jar
これらのライブラリをJavaプロジェクトに追加し、次の行から始めます。
Connection conn=DriverManager.getConnection("jdbc:ucanaccess://<Path to your database i.e. MS Access DB>");
Statement s = conn.createStatement();
パスはE:/ Project/Java/DBAppのようになります
クエリを実行します。好む
ResultSet rs = s.executeQuery("SELECT * FROM Course");
while(rs.next())
System.out.println(rs.getString("Title") + " " + rs.getString("Code") + " " + rs.getString("Credits"));
使用される特定のインポート。 try catchブロックを使用する必要があり、いくつかの必要なことを忘れないでください。
Jdbc odbcなどのブリッジングドライバーは必要ないことを忘れないでください。
セットアップ:
My OS windows 8 64bit
Eclipse version Standard/SDK Kepler Service Release 2
My JDK is jdk-8u5-windows-i586
My JRE is jre-8u5-windows-i586
これは私が私のエラーを克服する方法です。
最初は私のClass.forName("Sun.jdbc.odbc.JdbcOdbcDriver")
も機能しませんでした。次に、これにログインします website そしてUCanAccess 2.0.8 Zip(Mr.Gord Thompsonが言ったように)ファイルをダウンロードして解凍します。
次に、そのunzipフォルダーでこれらの* .jarファイルを見つけることもできます。
ucanaccess-2.0.8.jar
commons-lang-2.6.jar
commons-logging-1.1.1.jar
hsqldb.jar
jackcess-2.0.4.jar
次に、これらの5つのファイルをすべてコピーして、次の2つの場所に貼り付けました。
C:\Program Files (x86)\Eclipse\lib
C:\Program Files (x86)\Eclipse\lib\ext
(私はプロジェクトにこれらのライブラリをインポートできなかったので、私はその面白いことをしました)
次に、プロジェクトでEclipseを再度開きます。プロジェクトのJREシステムライブラリフォルダーにすべての* .jarファイルが表示されます。
最後に私のコードが動作します。
public static void main(String[] args)
{
try
{
Connection conn=DriverManager.getConnection("jdbc:ucanaccess://C:\\Users\\Hasith\\Documents\\JavaDatabase1.mdb");
Statement stment = conn.createStatement();
String qry = "SELECT * FROM Table1";
ResultSet rs = stment.executeQuery(qry);
while(rs.next())
{
String id = rs.getString("ID") ;
String fname = rs.getString("Nama");
System.out.println(id + fname);
}
}
catch(Exception err)
{
System.out.println(err);
}
//System.out.println("Hasith Sithila");
}