【问题标题】:Microsoft Access and Java JDBC-ODBC ErrorMicrosoft Access 和 Java JDBC-ODBC 错误
【发布时间】:2012-12-08 09:44:57
【问题描述】:

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

但是我可能会出错,

java.sql.SQLException: [Microsoft][ODBC Driver Manager] 指定的 DSN 包含驱动程序和 线程“主”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] Not a valid file name.

【问题讨论】:

标签: java jdbc odbc


【解决方案1】:

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

还可以查看其他回复:Can't connect to MS Access DB with Windows-64bit

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

【讨论】:

    猜你喜欢
    • 2012-12-17
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    相关资源
    最近更新 更多