当前位置: 首页 > 面试题库 >

Java 指定的DSN包含驱动程序和应用程序之间的体系结构不匹配

胡俊美
2023-03-14
问题内容

我正在尝试连接到使用Java的MS Access制造的数据库,但似乎无法管理。我正在使用ODBC,并且遇到了以下异常:

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

我的Java:

package javaapplication2;

import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;


/**
 *
 * @author Owner
 */
public class JavaApplication2 {

    /**
     * @param args the command line arguments
     * 
     */


    public static void main(String[] args) {
        // TODO code application logic here
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String sourceURL = new String("jdbc:odbc:myDatabase");
            System.out.println(sourceURL);
            Connection dbConnection = DriverManager.getConnection(sourceURL,"admin","");

            Statement myStmt  = dbConnection.createStatement();

            String query = "INSERT INTO People(ID, Name, Surname, Age, Contact, Location, Course) VALUES"
                    + " (1007, 'Elroy', 'Smith', '33', 21366688, 'Somewhere', 'somecourse')";

            myStmt.executeUpdate(query);

            ResultSet results = myStmt.executeQuery("SELECT * FROM People");

            while(results.next())
            {
                System.out.print(results.getString(1));
                System.out.print(results.getString(2));
                System.out.print(results.getString(3));
                System.out.println(results.getString(4));

            }

            results.close();

        }
        catch(ClassNotFoundException cnfe)
        {
            System.out.println(cnfe);
        }
        catch(SQLException sqle)
        {
            System.out.println(sqle);
        }
    }
}

问题答案:

我确实在MSDN上找到了答案。虽然有暗示。错误中的体系结构是指32位和64位。我的解决方案是找出我的应用程序在(访问)2010 b为32b的情况下运行。我通过在任务管理器的“进程”选项卡中查找所有32b进程的名称末尾带有* 32的字符来发现此问题。如前所述,控制面板将从此处启动64位版本的ODBC

c:\windows\system32\odbcad32.exe

这里是32位版本:

c:\windows\sysWOW64\odbcad32.exe (最容易复制并粘贴到运行对话框中)

因此,我在每个指向相同内容的ODBC控制面板(AKA管理员)中设置了以32和64结尾的名称的DSN。然后,我根据使用它的应用程序是32b还是64b来选择/选择正确的。



 类似资料:
  • 问题内容: 每个驱动程序之间有什么区别?我的意思是,除了其中之一是开源的 每个优点/缺点是什么? 您会推荐哪一个? 这是jTDS对这个问题的个人看法:http ://jtds.sourceforge.net/ 问题答案: 它们是不同的实现。jTDS驱动程序是Type 4,以我的经验,它具有更好的性能。我已经在生产环境中使用jTDS驱动程序5年,没有任何问题。 我建议使用jTDS。

  • 问题内容: 让我们分享基于Java的Web应用程序体系结构! Web应用程序有许多不同的体系结构,这些体系结构将使用Java来实现。这个问题的答案可以用作各种Web应用程序设计的库,各有其优缺点。虽然我意识到答案将是主观的,但让我们尽可能做到客观,并激发我们列出的利弊。 使用您喜欢的详细程度描述体系结构。为了使您的答案具有任何价值,您至少必须描述所描述的体系结构中使用的主要技术和思想。最后但并非最

  • 搜索上下文是selenium中最超级的接口,它由另一个称为网络驱动程序的接口扩展。 -所有搜索上下文和Web驱动程序接口的抽象方法都在远程WebDriver类中实现。 -所有与浏览器相关的类,如Firefox驱动程序、Chrome驱动程序等,都扩展了远程Webdriver类。 根据上面的stmt,远程web驱动程序类如何为搜索上下文接口和web驱动程序接口中定义的所有抽象方法给出定义。因为功能驱动

  • 这是一个有点开放性的问题,但是,制作一个好的可扩展电子应用程序的好方法是什么?VSCode、Atom和许多其他软件都支持扩展,但它们的代码库太大,我无法理解到底发生了什么。我对Jupyterlab感到非常惊讶,据他们说,它包含一个小小的核心,而其他一切都只是它上面的扩展。所以我想知道如何构建这些应用程序。 我的具体问题是: 是否有创建可扩展架构的最佳实践 电子部分是如何“识别”延伸的?怎么装的?什

  • 问题内容: 我有2个应用程序,一个是用C编写的,另一个是用Java编写的,它们假定在同一台机器上运行。在它们之间实施IPC的最佳方法是什么? 最好的含义是可移植性,最小的用户意识(防火墙弹出窗口…)等。 问题答案: 我将使用Sockets over loop back开始。这样,您就可以发送文本或二进制数据,并在一个进程开始或结束时彻底处理。延迟大约为20-50微秒,具体取决于您对数据进行的处理以

  • 我正在学习Dagger2,并试图构建一个非常愚蠢的示例(Mainactivity必须实例化一个汽车类)。 null 完成我的汽车课