2013-05-18 166 views
7

我想连接与Java GUI程序我的MS访问文件,但我有连接问题....JDBC驱动程序的MS Access连接

我的Windows 7 64B,和MS Office 2007 当我打开在控制面板中的ODBC驱动程序管理器我还没有找到任何驱动程序的Microsoft Access(也许当我启动ODBC开始运行64位的ODBC,现在我认为是运行32位ODBC 我读了这个,我做到了: “jdbc -odbc连接窗口7 64位机器.. 1.右键单击数据源(ODBC)..转到属性更改下面的东西

target [的%SystemRoot%\ Syswow64资料\ odbcad32.exe的] 开始在:%SYSTEMROOT%\ System32下]

按回车键继续admin来源:source link “ )现在,当我在conctrol潘内尔的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:[微软] [ODBC驱动程序管理器]数据源名称未找到,如果您使用的是Windows 64位无指定默认驱动程序

+0

您是否验证过安装Access时安装了ODBC组件? –

+0

我不记得了,但现在我重新安装了ms office 2007. – artiny

+0

这是直接路径不需要创建一个新的系统DSN,你可能需要检查你的'.mdb'文件的路径。 – Azad

回答

2

你可能需要去这条道路

C:/Windows/SysWOW64/odbcad32.exe

然后我注意到,您正在使用的直接路径,而不是创造新的System DSN,您的直接路径是正确的,直到路径访问文件,则必须给这样的完整路径:

JDBC:ODBC:驱动程序= Microsoft Access驱动程序(* .MDB,* .ACCDB); DBQ =路径/到/ Invertory.mdb”

为了得到你可能需要使用java.io.File有一个方法路径返回到该文件的路径abslute看到例如:

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(); 
    } 
} 
+0

String DATABASE =“jdbc:odbc:Driver = Microsoft Access Driver(* .mdb,* .accdb); DBQ = C:/Users/Kex/Documents/NetBeansProjects/database_form/database_form/Invertory.mdb”; String DATABASE =“jdbc:odbc:Driver = Microsoft Access Driver(* .mdb,* .accdb); DBQ = C:\\ Users \\ Kex \\ Documents \\ NetBeansProjects \\ database_form \\ database_form \\ Invertory。 MDB“;我试过两种方式,但没有work.still错误后开始。我在:C:/Windows/SysWOW64/odbcad32.exe – artiny

+0

我试过在“String DATABASE =”jdbc:odbc:Driver = Microsoft Access Driver(.mdb,* .accdb); DBQ = C之前和之后放置此代码:/ Users/Kex/Documents/NetBeansProjects/database_form/database_form /Invertory.mdb“; String DATABASE =”jdbc:odbc:Driver = Microsoft Access Driver(.mdb,* .accdb);“现在我还有其他的东西: “java.lang.NullPointerException”这意味着我连接到访问文件? – artiny

+0

不,在这个函数中没有这里是:https://www.dropbox.com/sh/wfym48e5mkso83p/TzmBVCeUhZ – artiny

2

我回答了类似的问题enter link description here而回。

基本上当时

  1. 你可以从32位Java通过JDBC-ODBC桥
  2. 连接到MS-访问你无法通过JDBC-ODBC连接到32位ODBC驱动程序来自64位的Java。有一条消息告诉你只能连接32位程序
  3. 虽然Microsoft提供了64位的Ms-Access驱动程序,但它并不适用于Java的64位JDBC-ODBC驱动程序。

从那时起,似乎就有了一个新的开源Ms-Access JDBC驱动程序Ms-Access JDBC driver。我不知道它有多好。

0

你只是失去了一些东西在你的代码就在这里:

db ="JDBC:ODBC:Driver=Microsoft Access Driver (*.mdb, *.accdb); DBQ="+path; 

您需要Driver=)=;之间添加{}。 像下面这样

db ="JDBC:ODBC:Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ="+path; 
-1

的问题是,你应该上的Java运行32位尝试安装最新的JDK,它会工作

我运行它使用JDK版本“的jdk-7u67-Windows的i586系统.EXE”

10

使用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)

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); 
+1

请描述你在做什么。 –

-1

在64位系统上,你应该:

  1. 以管理员身份运行accessdatabaseengine_64.exe
  2. 运行Java - 7-64位 - JRE。
-1

如果你是在NetBeans工作,然后解压ucanacess.zip文件中使用项目点击属性窗口中的编译选项卡上添加在类路径中的所有jar文件,并添加jar文件然后编译和测试应用程序之后。

-1

JDBC-ODBC MS-ACCESS连接已停止在JDK8中工作。我通过将JDK7与JDK8一起安装在同一台PC上解决了这个问题,一旦安装JDK7我将它指定为在我的项目中使用的JDK版本,如下所示在Netbeans中:

1.右键单击项目>单击性能

2.CLICK图书馆在左侧导航栏中

3.CLICK BUTTON后台管理平台>单击按钮添加平台...

4.按照WIZZARD,尽管它显示了Java标准版单击下一步

5.NAVIGATE到C:\ Program Files文件(x86)的\ Java和选择JDK7的文件夹>点击下一步

6.场自动填入与正确的信息...>然后单击Finish

7。从列表中选择JDK平台>点击关闭>确定

8.JDK7应显示在库文件包中。

JDK7 in Libraries Package 点击返回浏览器查看图像后返回...

从这里开始一切都必须顺利进行。

希望它能解决您的问题。

谢谢。

相关问题