如何从 64 位 Java 连接到 Access .mdb 数据库? [英] How to connect to Access .mdb database from 64-bit Java?

查看:23
本文介绍了如何从 64 位 Java 连接到 Access .mdb 数据库?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下代码可以连接到 Windows 7 操作系统上的 MS Access 数据库.我已将数据源快捷方式更改为指向 64 位 odbc,然后指向 32 位.但仍然收到错误

Hi I have the below code to connect to MS Access database on Windows 7 OS. I have changed the Data Source short cut to point to 64bit odbc then 32 bit. But still getting the error as

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956)
    at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113)
    at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3072)
    at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)
    at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
    at java.sql.DriverManager.getConnection(DriverManager.java:579)
    at java.sql.DriverManager.getConnection(DriverManager.java:221)
    at TestDBConnection.main(TestDBConnection.java:21)

我的代码是:

import java.sql.Connection;
import java.sql.DriverManager;

public class TestDBConnection {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try
        {
            System.out.println("filename");
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String database = 
                      "jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\Test\Tests.mdb";
            Connection conn = DriverManager.getConnection(database, "", "");
        } catch(Exception ex) {
            ex.printStackTrace();
        }
    }

}

我如何拥有 SQL Workbench 工具,通过它我可以连接到它,但不能通过 Java 代码连接到它.

How ever I have SQL Workbench tool through which I can connect to it but not through java code.

请急需帮助,因为我在过去 3 小时在 Google 上搜索时一直在为此苦苦挣扎.

Please need help badly as I am struggling with this from past 3 hours searching on Google.

推荐答案

如果您的 Java 应用程序在 64 位 Java 虚拟机 (JVM) 中运行,则 DRIVER={Microsoft Access Driver (*.mdb)} 不会工作,因为没有 64 位版本的 Jet 数据库引擎.你可以...

If your Java app is running in a 64-bit Java Virtual Machine (JVM) then DRIVER={Microsoft Access Driver (*.mdb)} is not going to work because there is no 64-bit version of the Jet database engine. You can...

  • 此处,然后在代码中使用 DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}.
  • Download and install the 64-bit version of the Microsoft Access Database Engine from here, and then use DRIVER={Microsoft Access Driver (*.mdb, *.accdb)} in your code.

...或...

  • 在 32 位 JVM 中运行您的 Java 应用程序并继续使用现有的 DRIVER= 字符串.如果您选择此选项,此处的相关答案可能会有所帮助.
  • Run your Java app in a 32-bit JVM and continue to use the existing DRIVER= string. The related answer here might prove helpful if you choose this option.

...或...

  • UCanAccess JDBC 驱动程序用于 Access 数据库.它是一个免费的、开源的、纯 Java 实现,因此它适用于 32 位和 64 位系统,包括 Windows 和非 Windows.它也适用于 Java 8(已删除 JDBC-ODBC 桥).有关更多详细信息,请参阅:
  • Use the UCanAccess JDBC driver for Access databases. It is a free, open-source, pure Java implementation so it works on both 32-bit and 64-bit systems, both Windows and non-Windows. It also works with Java 8 (which has dropped the JDBC-ODBC Bridge). For more details, see:

      在没有 ODBC 的情况下从 Java 操作 Access 数据库

        Manipulating an Access database from Java without ODBC

这篇关于如何从 64 位 Java 连接到 Access .mdb 数据库?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆