java 64 access_在64位环境下Java连接Access2010的问题与解决

整理下思路,包括出现的问题及解决方案

Java连接Access的方法

1 ODBC桥接方法,就是在控制面板“ODBC数据源(32位或64位)”那里设置DSN,百度一下,一大堆设置方法,以及什么wow64下设置兼容32位之类的东西,这里设置的数据源名称acc,连接到D盘c.accdb数据库。

主要代码:String url ="jdbc:odbc:acc";

2直接连接access不使用ODBC数据源,这个就是直接写代码

主要代码:String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=d:\\c.accdb";

全部代码:

环境(失败):

系统:win8  X64

Myeclips10 (自带JDK)

Access2010  X86

不管哪种方法都是一直不成功

总是提示:[ODBC驱动程序管理器]未发现数据源名称并且未指定默认驱动程序,或是其他的错误

网上很多都在解释ODBC方式,是因为64位操作系统和32位Access的原因,然后出现了要找到wow64下的ODBC,然后设置,这些我也都试过了,也不成功。最后根据一位网友提示,找到了一篇微软的文章:http://msdn.microsoft.com/zh-cn/library/ff965871.aspx#DataProgrammingWithAccess2010_JDBCODBCExample

在下面的:使用32位和64位的ACE提供程序那里给出了详细解释

仅64位的解决方案(64位的Access、64位的Windows)

若要实现64位的解决方案,您必须执行以下操作:

1.在64位的Windows上部署64位的Access2010

2.构建自定义的64位数据访问应用程序

仅32位的解决方案(32位的Access、32位的Windows)

如果您有32位的应用程序,希望通过Access 2010继续运行它而不进行更改,则必须安装32位版本的Access 2010。

32位Access 2010的工作方式与32位Access 2007完全一样,无需对VBA代码、COM加载项或ActiveX控件进行更改即可继续运行。

WOW64解决方案(32位的Access、64位的Windows)

WOW64技术允许在Windows 64位的平台上执行32位的应用程序。可以将32位的Access 2010安装在64位的Windows上。在这种情况下,您的数据应用程序必须是32位才能与ACE提供程序通信。这是64位Windows操作系统上的默认安装,可提供与32位Office应用程序的兼容性。

尽管32位的应用程序能够以透明方式运行,但是不支持在同一进程中混合使用两种类型的代码。64位的应用程序不能针对32位的系统库(DLL)进行链接,同样32位的应用程序也不能针对64位的系统库进行链接

也就是说如果你的系统是64位的,不管是win7,win8,如果Access是32位的,那么你的myeclips、JDK也必须是32位的(我是这么理解的)

早就忘了自己装的是多少位的了,System.out.println(System.getProperty("sun.arch.data.model"));

测试是64位的,随后在重装的问题上,我选择了重装office,重装了64位office,一切问题迎刃而解,不管是ODBC去连接还是直接连接,都成功

所以现在的环境是

系统win8  X64  myeclips10  X64 Access2010  X64

另外两种环境没有去测试

就是win8  X 64   myeclips10 32位JDK  32位Access2010  X86

或者全是32位的

全部代码:import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

public class conn1 {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

String driver = "sun.jdbc.odbc.JdbcOdbcDriver";

try{

Class.forName(driver);

String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=d:\\c.accdb";

//String url ="jdbc:odbc:acc";

Connection con = DriverManager.getConnection(url);

if(!con.isClosed()){

System.out.print("连接成功!");

}

}catch(ClassNotFoundException e){

e.printStackTrace();

}catch(SQLException e){

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值