I want to write a program to retrieve data from MS Access database. I wrote program as bellow:
package db;
import java.sql.*;
public class MSaccess_archive {
public static void main(String[] args) {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String accessFileName = "E:/L4_project/sample/db/Database";
String connURL="jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+accessFileName+".accdb;";
Connection con = DriverManager.getConnection(connURL, "","");
Statement stmt = con.createStatement();
stmt.execute("select * from student"); // execute query in table student
ResultSet rs = stmt.getResultSet(); // get any Result that came from our query
if (rs != null)
while ( rs.next() ){
System.out.println("Name: " + rs.getString("Name") + " ID: "+rs.getString("ID"));
}
stmt.close();
con.close();
}
catch (Exception err) {
System.out.println("ERROR: " + err);
}
}
}
But I got Exception as below:
ERROR: java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Could not find file '(unknown)'.
When I used a .mdb
file the above program works correctly but if I use a .accdb
file it gives the above exception.
Any ideas why?
You may revisit steps, Control panel>Administrative Tools>Data Sources>Add>Microsoft Access Drivers(*mdb,*accdb)>ok>ok>ok. It might work.for ODBC connection.
The JDBC-ODBC Bridge has been removed from Java 8 and is not supported (ref: here and here ). UCanAccess is a popular alternative. For details, see
I think you need to specify jdbc:odbc:my_access_odbc_dsn
as the URL, where my_access_odbc_dsn is your DSN name as configured in the ODBC. In my case, I was accessing an MS Access 2013 database called "PavoDB", so my URL was:
private static final String url="jdbc:odbc:PavoDB";
除非你特别需要能够运行任意的sql查询,你总是可以试试jackcess 。
The driver probably hasn't been updated to read that format. .mdb is the original one for Access; .accdb must have been revised and the ODBC driver hasn't kept up.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.