Java 无法连接到Access数据库(“架构不匹配”错误)

Java 无法连接到Access数据库(“架构不匹配”错误),java,ms-access,jdbc,Java,Ms Access,Jdbc,从数据库中检索记录的程序 我正在运行64位Windows 7 从sysWOW64文件夹创建DSN 有一个由3个字段组成的数据库滚动名称标记 编译后未发现任何错误 执行该程序不会导致任何输出 为什么我不能执行程序 !![在命令行没有输出][1] 根据评论编辑 我得到的例外是 SQLException:[Microsoft][ODBC驱动程序管理器]指定的DSN包含驱动程序和应用程序之间的体系结构不匹配 当您没有收到Java异常/错误且没有输出时,您似乎可以连接到数据库,但它根本不包含任何数据。当您

从数据库中检索记录的程序

我正在运行64位Windows 7 从sysWOW64文件夹创建DSN 有一个由3个字段组成的数据库滚动名称标记 编译后未发现任何错误 执行该程序不会导致任何输出 为什么我不能执行程序

!![在命令行没有输出][1]

根据评论编辑

我得到的例外是

SQLException:[Microsoft][ODBC驱动程序管理器]指定的DSN包含驱动程序和应用程序之间的体系结构不匹配


当您没有收到Java异常/错误且没有输出时,您似乎可以连接到数据库,但它根本不包含任何数据。

当您没有收到Java异常/错误且没有输出时,您似乎可以连接到数据库,但它根本不包含任何数据。

基于此错误:

java.sql.SQLException: [Microsoft][ODBC Driver Manager] The specified DSN contai ns an architecture mismatch between the Driver and Application
问题是您的Java体系结构可能基于64位,但当您通过以下路径访问ODBCAD32.exe时:

%windir%\SysWoW64\odbcad32.exe
实际上,您正在访问32位版本的ODBC控制器。因此,您会遇到架构不匹配的问题。查看此项了解更多详细信息

要使其工作,您必须确保Java、DSN和MS ODBC驱动程序都是相同的体系结构(32位或64位)

因此,您可以:

下载一个32位JDK并保留您已有的DSN。 直接从%windir%\System32文件夹访问DSN是 64位版本,并在此创建数据源。 基于此错误:

java.sql.SQLException: [Microsoft][ODBC Driver Manager] The specified DSN contai ns an architecture mismatch between the Driver and Application
问题是您的Java体系结构可能基于64位,但当您通过以下路径访问ODBCAD32.exe时:

%windir%\SysWoW64\odbcad32.exe
实际上,您正在访问32位版本的ODBC控制器。因此,您会遇到架构不匹配的问题。查看此项了解更多详细信息

要使其工作,您必须确保Java、DSN和MS ODBC驱动程序都是相同的体系结构(32位或64位)

因此,您可以:

下载一个32位JDK并保留您已有的DSN。 直接从%windir%\System32文件夹访问DSN是 64位版本,并在此创建数据源。

在catch块中使用e.printStackTrace,查看是否存在异常。您可能在运行时遇到异常,但由于catch块为空,您无法看到它。您必须确保Java、DSN和MS ODBC驱动程序都是相同的体系结构(32位或64位)。否则您将遇到兼容性问题。这是输出java.sql.SQLException:[Microsoft][ODBC驱动程序管理器]指定的DSN包含驱动程序和应用程序之间的架构不匹配,这就是我要说的。您的Java架构可能是64位的,但如果我没记错的话,通过sysWOW64访问DSN是32位的ODBC控制器。因此,您会遇到架构不匹配问题。因此,需要什么解决方案使用catch块中的e.printStackTrace来查看是否存在异常。您可能在运行时遇到异常,但由于catch块为空,您无法看到它。您必须确保Java、DSN和MS ODBC驱动程序都是相同的体系结构(32位或64位)。否则您将遇到兼容性问题。这是输出java.sql.SQLException:[Microsoft][ODBC驱动程序管理器]指定的DSN包含驱动程序和应用程序之间的架构不匹配,这就是我要说的。您的Java架构可能是64位的,但如果我没记错的话,通过sysWOW64访问DSN是32位的ODBC控制器。因此,您会遇到架构不匹配的问题。因此,需要什么解决方案呢?不,它包含四个RecedsException。但你还没有打印出这个例外。因此可能没有输出。@user3346898那么您必须进行调试,如果没有任何关于代码的具体问题,我们将无法远程帮助您。我在sysWoW64文件夹中使用了cmd,但仍然没有o/pNope,它包含四个recoedsException可能存在。但你还没有打印出这个例外。因此可能没有输出。@user3346898那么您必须进行调试,如果没有任何关于代码的具体问题,我们将无法远程帮助您。我在sysWoW64文件夹中使用了cmd,仍然没有o/P我应该获得office 64位或jdk 32位…jdk正好是64位。我以前也遇到过同样的问题,因为我的办公室是32位的。我下载了jdk 32位,并通过与您相同的路径访问了DSN。然后全部是32位的,它就像一个符咒@USER3346898感谢一切工作正常charm@user3346898不客气。请不要忘记接受答案:我应该使用office 64位还是jdk 32位…jdk正好是64位。我以前也遇到过同样的问题,因为我的办公室是32位的。我下载了jdk 32位,并通过与您相同的路径访问了DSN。然后全部是32位的,它就像一个符咒@USER3346898感谢一切工作正常charm@user3346898不客气。请不要忘记接受答案: