我想用MS 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]
按Enter键并继续作为管理员来源:source link “ )现在,当我在conctrol pannel中启动ODBC时,我可以看到驱动程序screenshoot
我的程序代码(我试过两种方法,但我有同样的错误):
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);
}
}
错误
java.sql.SQLException:[Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序
答案 0 :(得分:12)
使用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");
因此,对于您的示例,它将是Connection conn=DriverManager.getConnection("jdbc:ucanaccess://"+path)
答案 1 :(得分:2)
如果您使用的是Windows 64位,则可能需要转到此路径
C:/Windows/SysWOW64/odbcad32.exe
然后我注意到您正在使用直接路径而不是创建新的System DSN
,您的直接路径是正确的,直到 access 文件的路径为止,您必须提供如下所示的完整路径:
jdbc:odbc:Driver = Microsoft Access Driver(* .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();
}
}
答案 2 :(得分:2)
我回答了类似的问题enter link description here。
当时基本上是:
此后似乎有一个新的开源Ms-Access JDBC Driver Ms-Access JDBC driver。我不知道它有多好。
答案 3 :(得分:0)
你刚刚在代码中遗漏了一些内容:
db ="JDBC:ODBC:Driver=Microsoft Access Driver (*.mdb, *.accdb); DBQ="+path;
您需要在{}
和Driver=
之间添加)=;
。
像这样下面
db ="JDBC:ODBC:Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ="+path;
答案 4 :(得分:0)
final String fileName = "c:/myDataBase.mdb"
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+fileName;
Connection con = DriverManager.getConnection(url,username,password);
答案 5 :(得分:-1)
问题是您应该在Java 32位上运行以尝试安装最新的JDK并且它将起作用
我使用JDK版&#34; jdk-7u67-windows-i586.exe&#34;
运行它答案 6 :(得分:-1)
在64位系统上,你应该:
答案 7 :(得分:-1)
JDBC-ODBC MS-ACCESS连接已停止在JDK8中工作。我通过在同一台PC上安装JDK7和JDK8来解决了这个问题,一旦安装了JDK7,我将它分配为我在项目中使用的JDK版本,如下所示:Netbeans:
1.右键单击列表中的项目&gt;点击属性
2.在左导航树上列出图书馆
3.CLICK BUTTON MANAGE PLATFORMS&gt;点击按钮添加平台...
4.FOLLOW WIZARD,尽管它显示JAVA标准版点击下一步
5.NAVIGATE到C:\ Program Files(x86)\ Java和SELECT JDK7的文件夹&gt;点击下一步
6.具有正确信息的现场自动填充...&gt;然后点击完成
7.从列表中选择JDK平台&gt;点击关闭&gt;行
8.JDK7应该在图书馆包装中显示。
JDK7 in Libraries Package 单击浏览器中的返回以在查看图像后返回此处...
从这里开始,一切都必须顺利进行。
希望它能解决你的问题。
感谢。