繁体   English   中英

Microsoft Access和Java JDBC-ODBC错误

[英]Microsoft Access and Java JDBC-ODBC Error

尝试使用java在Microsoft Access数据库中插入一些值。

我会出错,

java.sql.SQLException:[Microsoft] [ODBC驱动程序管理器]指定的DSN包含线程“ main”中的驱动程序和应用程序异常之间的体系结构不匹配java.lang.NullPointerException

要使用SysWoW64> odbcad32创建数据源im并将其添加到系统DNS中。 我这样说是因为我已经看到其他地方在64位系统中会出现问题。 但是,它仍然对我不起作用。

Microsoft Office 32位。

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


public class AuctionHouseJDBC {

    /**
     * @param args
     */
    public static void main(String[] args) {

        String theItem = "Car";
        String theClient="Name";
        String theMessage="1001";



Connection conn =null; // Create connection object

        try{
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            System.out.println("Driver Found");
        } catch(Exception e) {
            System.out.println("Driver Not Found");
            System.err.println(e);
        }

        // connecting to database
        try{
            String database ="jdbc:odbc:Driver={Microsoft Access Driver (*.accdb)};DBQ=AuctionHouseDatabase.accdb;";

            conn = DriverManager.getConnection(database,"","");

            System.out.println("Conn Found");
        }
        catch(SQLException se) {
            System.out.println("Conn Not Found");
            System.err.println(se);
        }
        // Create select statement and execute it

        try{        
            /*String insertSQL = "INSERT INTO AuctionHouse VALUES (  "
                    +"'" +theItem+"', "  
                    +"'" +theClient+"', "
                    +"'" +theMessage+"')";  
            */

            Statement stmt = conn.createStatement();
            String insertSQL = "Insert into AuctionHouse VALUES ('Item','Name','Price')";

             stmt.executeUpdate(insertSQL);
            // Retrieve the results

            conn.close();
        } catch(SQLException se) {
            System.out.println("SqlStatment Not Found");
            System.err.println(se);
        }

    }

}

StaceTrace:

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)
    at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)

Microsoft Office 64位

我已经安装了64位版本,现在却出现错误[Microsoft] [ODBC Driver Manager]不是有效的文件名。

首先,请确保您可以通过ODBC访问该数据库。 odbcad32为64位和32位系统制作DSN。 然后作为JDBC连接字符串使用: jdbc:odbc:[CreatedDSN] 如果您无法以odbcad32 64位版本连接到Access,请确保它可以在odbcad32 32位版本中使用,并确保使用32位版本的Java。

还可以查看以下其他响应: 无法使用Windows-64bit连接到MS Access DB

特别有趣的是链接到: http : //www.selikoff.net/2011/07/26/connecting-to-ms-access-file-via-jdbc-in-64-bit-java/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM