连接到 java 中的 MS 访问数据库
Connect to MS access databases in java
我正在尝试将一些数据输入到 Microsoft Access 数据库中,但我总是遇到同样的错误。这是我的代码:
import java.sql.Connection;
import java.sql.DriverManager;
public class testDDB {
public static void main(String[] args) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String filename = "C:\test\Database1.mdb";
String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=";
database+= filename.trim() + ";}"; // add on to the end
Connection con = DriverManager.getConnection( database ,"","");
}catch(Exception e){
e.printStackTrace();
}
}
我收到以下错误:
java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
我看了以前的帖子,发现了类似的问题,但还是没有找到解决办法。我的电脑是 64 位 运行,当我转到 C:\Windows\SysWOW64\obdcad32.exe 时,我发现
看来我有一个 64 位版本的 ODBC...
when I go to C:\Windows\SysWOW64\obdcad32.exe, I find
| MS Access Database ... Microsoft Access Driver (*.mdb, *.accdb)
So it seems that I have a 64bit version of ODBC
文件夹名称 "SysWOW64" 可能有点误导。它包含 32 位 "WOW" 子系统的组件(即“[32 位]Windows 在 Windows[64]”) .
所以,"SysWOW64\obdcad32.exe" 实际上是 32 位 ODBC 管理员,您实际上拥有 Access "ACE" ODBC 驱动程序的 32 位版本安装。因此,您需要 运行 您的应用程序在 32 位版本的 JRE(Java 运行时环境)下才能使用该 ODBC 驱动程序。
此外,请记住 JDBC-ODBC 桥已从 Java 8 中删除,因此您的 JRE 必须适用于 Java 7 或更早版本。 (对于 Java 8 及更高版本,请考虑使用 UCanAccess JDBC 驱动程序。详情 here。)
我正在尝试将一些数据输入到 Microsoft Access 数据库中,但我总是遇到同样的错误。这是我的代码:
import java.sql.Connection;
import java.sql.DriverManager;
public class testDDB {
public static void main(String[] args) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String filename = "C:\test\Database1.mdb";
String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=";
database+= filename.trim() + ";}"; // add on to the end
Connection con = DriverManager.getConnection( database ,"","");
}catch(Exception e){
e.printStackTrace();
}
}
我收到以下错误:
java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
我看了以前的帖子,发现了类似的问题,但还是没有找到解决办法。我的电脑是 64 位 运行,当我转到 C:\Windows\SysWOW64\obdcad32.exe 时,我发现
看来我有一个 64 位版本的 ODBC...
when I go to C:\Windows\SysWOW64\obdcad32.exe, I find
| MS Access Database ... Microsoft Access Driver (*.mdb, *.accdb)
So it seems that I have a 64bit version of ODBC
文件夹名称 "SysWOW64" 可能有点误导。它包含 32 位 "WOW" 子系统的组件(即“[32 位]Windows 在 Windows[64]”) .
所以,"SysWOW64\obdcad32.exe" 实际上是 32 位 ODBC 管理员,您实际上拥有 Access "ACE" ODBC 驱动程序的 32 位版本安装。因此,您需要 运行 您的应用程序在 32 位版本的 JRE(Java 运行时环境)下才能使用该 ODBC 驱动程序。
此外,请记住 JDBC-ODBC 桥已从 Java 8 中删除,因此您的 JRE 必须适用于 Java 7 或更早版本。 (对于 Java 8 及更高版本,请考虑使用 UCanAccess JDBC 驱动程序。详情 here。)