我想用Java GUI程序连接我的MS访问文件,但我有连接问题....
我有Windows 7 64b和ms office 2007.当我在控制面板中打开ODBC驱动程序管理器时,我没有找到任何Microsoft Access驱动程序(也许当我启动ODBC开始运行64位ODBC时,现在我认为正在运行32位ODBC.我读了这个,我做了:"jdbc-odbc连接窗口7 64位机器.. 1.右键单击数据源(ODBC)..转到属性更改下面的事情
目标[%SystemRoot%\ SysWOW64\odbcad32.exe]开始于:[%SystemRoot%\ System32]
按回车键继续作为管理源:源链接 ")现在,当我在conctrol pannel中启动ODBC时,我可以看到驱动程序的屏幕截图
我的程序代码(我试过两种方法,但我有同样的错误):
public void Connect() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
// String DatabaseFile = "D:java/Invertory.mdb";
// String DATABASE =
// "jdbc:odbc:Driver="
// + "{Microsoft Access Driver (*.mdb, *.accdb)};"
// + "DBQ=" + DatabaseFile;`enter code here`
String DATABASE ="jdbc:odbc:Driver= Microsoft Access Driver (*.mdb, *.accdb);DBQ=Invertory.mdb";
CONEX = DriverManager.getConnection(DATABASE);
} catch (Exception X) {
X.printStackTrace();
//JOptionPane.showMessageDialog(null,e);
}
}
Run Code Online (Sandbox Code Playgroud)
错误
java.sql.SQLException:[Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序
Ant*_* O. 13
使用UCanAccess JDBC驱动程序:
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
Connection conn=DriverManager.getConnection("jdbc:ucanaccess://<mdb or accdb file path>",user, password);
for example:
Connection conn=DriverManager.getConnection("jdbc:ucanaccess://c:/pippo.mdb");
Run Code Online (Sandbox Code Playgroud)
所以对你的例子来说就是这样 Connection conn=DriverManager.getConnection("jdbc:ucanaccess://"+path)
如果您使用的是 Windows 64 位,您可能需要转到此路径
C:/Windows/SysWOW64/odbcad32.exe
然后我注意到您正在使用直接路径而不是创建新路径,您的直接路径是正确的,直到访问System DSN文件的路径您必须提供如下完整路径:
jdbc:odbc:Driver= Microsoft Access 驱动程序 (*.mdb, *.accdb);DBQ=path/to/Invertory.mdb"
要获取路径,您可能需要使用java.io.File有一个方法返回文件的绝对路径,请参阅示例:
import java.sql.*;
public class TestConnection {
Connection con ;
Statement st ;
ResultSet rs ;
String db;
public TestConnection (){
try{
String path = new java.io.File("Invertory.mdb").getAbsolutePath();
db ="JDBC:ODBC:Driver=Microsoft Access Driver (*.mdb, *.accdb); DBQ="+path;
doConnection();
} catch(NullPointerException ex){
ex.printStackTrace();
}
}
public void doConnection(){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection(db);
st = con.createStatement();
rs = st.executeQuery("select * from Invertory");
while(rs.next()){
System.out.println(rs.getObject(1));
}
}catch(SQLException | ClassNotFoundException ex){
System.out.println(ex.toString());
}
}
public static void main(String...argS){
new TestConnection();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
88219 次 |
| 最近记录: |