Microsoft Access和Java JDBC-ODBC错误

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

我可以犯一个错误,

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

使用SysWoW64> odbcad32创建数据源,并将数据源添加到系统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位版本,现在我得到一个错误[微软] [ODBC驱动程序管理器]不是一个有效的文件名。

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