2017-01-05 95 views
2

我想輸入一些數據到微軟訪問數據庫,但我總是得到相同的錯誤。這裏是我的代碼:連接到MS訪問數據庫在java

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,我發現enter image description here

如此看來,我有ODBC 64位版本的...

+1

[JDBC驅動程序MS Access連接]的可能重複(http://stackoverflow.com/questions/16626301/jdbc-driver-ms-訪問連接) – DimaSan

+0

您是否將訪問數據庫設置爲ODBC數據源? – BretC

+0

這可以幫助你[JDBC ODBC驅動程序](http://stackoverflow.com/questions/17115632/microsoftodbc-driver-manager-data-source-name-not-found-and-no-default-drive) – Kedar1442

回答

1

當我到C:\ Windows \ SysWOW64 \ obdcad32.exe時,發現

| MS Access數據庫... Microsoft Access驅動程序(* .MDB,* .ACCDB)

如此看來,我有ODBC

64位版本的文件夾名稱 「Syswow64資料」 可能是有點誤導。它包含用於32位「WOW」子系統(即「[32位] Windows在Windows [64]」)上的組件。

因此,「SysWOW64 \ obdcad32.exe」實際上是ODBC管理員的32位,實際上您安裝的是Access「ACE」ODBC驅動程序的32位版本。因此,您需要在JRE(Java運行時環境)的32位版本下運行您的應用程序才能使用該ODBC驅動程序。

另外,請記住,JDBC-ODBC Bridge已從Java 8中移除,因此您的JRE必須適用於Java 7或更早版本。 (對於Java 8和更高版本,請考慮使用UCanAccess JDBC驅動程序。詳細信息here。)