2012-12-08 2 views
0

java를 사용하여 Microsoft Access 데이터베이스에 일부 값을 입력하려고합니다.Microsoft Access 및 Java JDBC-ODBC 오류

내가 할 수 그러나 오류,

은 java.sql.SQLException : [마이크로 소프트] [ODBC 드라이버 관리자] 지정된 DSN 스레드에서 드라이버 및 응용 프로그램 예외 사이의 아키텍처 불일치를 포함 "주" java.lang.NullPointerException

SysWoW64> odbcad32를 사용하여 데이터 소스 im을 작성하고 데이터 소스를 시스템 DNS에 추가하십시오. 나는 64 비트 시스템에서 발생하는 문제가있는 다른 곳을 보았 기 때문에 이것을 말하고있다. 그러나 그것은 여전히 ​​나를 위해 작동하지 않습니다.

Microsoft Office 32bit.

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) 

마이크로 소프트 오피스 64 비트

필자가 64 비트 버전을 설치하고 지금 오류 [마이크로 소프트] [ODBC 드라이버 관리자] 아니 유효한 파일 이름을 점점 메신저.

+0

http://www.codeproject.com/Articles/35018/Access-MS-Access-Databases- from-Java 간단히 말해서 MS Access DB에 액세스하는 방법이 아니며이를 알려주려고합니다. –

+0

아직 데이터 소스를 찾을 수 없습니다. 오류가 발생합니다. – user1638362

답변

3

먼저 ODBC를 통해 해당 데이터베이스에 액세스 할 수 있는지 확인하십시오. 64 비트 및 32 비트 시스템 모두에서 DSN을 odbcad32으로 지정하십시오. 그런 다음 JDBC 연결 문자열 사용 : jdbc:odbc:[CreatedDSN]. odbcad32의 64 비트 버전에서 Access에 연결할 수없는 경우 odbcad32의 32 비트 버전에서 작동하는지 확인하고 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/