猿问

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

我试图连接到使用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);

        }

    }

}


收到一只叮咚
浏览 3026回答 3
3回答

慕桂英546537

这些都不对我有用。我确实在MSDN上找到了答案。虽然有暗示。错误中的体系结构是指32位和64位。我的解决方案是找出我的应用程序在(访问)2010b为32b下运行。我通过在任务管理器的“进程”选项卡中查找所有32b进程的名称结尾都带有* 32的字符来发现此问题。如前所述,控制面板将从此处启动64位版本的ODBCc:\windows\system32\odbcad32.exe这里是32位版本:c:\windows\sysWOW64\odbcad32.exe (最容易复制并粘贴到运行对话框中)因此,我在每个指向同一对象的ODBC控制面板(AKA管理员)中设置了以32和64结尾的DSN。然后,我根据使用它的应用程序是32b还是64b来选择/选择正确的。
随时随地看视频慕课网APP

相关分类

Java
我要回答