2012-04-23 2 views
4

지금까지 32 비트 Access 데이터베이스에 연결해야했을 때 간단히 32 비트 JVM을 사용하여 응용 프로그램을 실행했습니다. 그러나 64 비트 JVM이 필요한 응용 프로그램을 개발 중이지만 여전히 32 비트 Access Database에 연결해야합니다. 이건 내 코드입니다64 비트 JVM에서 32 비트 액세스 데이터베이스에 연결하는 방법은 무엇입니까?

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) 
at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source) 
at java.sql.DriverManager.getConnection(Unknown Source) 
at java.sql.DriverManager.getConnection(Unknown Source) 

: 내가 연결하려 할 때, 나는이 예외 얻을 (? 또는 시스템) ODBC DSN의가 별도가 사용자를 위해 내 경험

에서

String s = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + path; 
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
conn = DriverManager.getConnection(s, user, password); 
+0

이 게시물을 확인해 보면 비슷한 문제 인 것 같습니다. http://stackoverflow.com/questions/3454701/32bit-text-drivers-microsoft-access-microsoft-excel-and-text-files-from- 에이. Microsoft의 64 비트 MS Access Redistributable 팩을 설치하는 것과 관련하여 마지막 대답을 자세히 살펴보십시오. – mazaneicha

+0

때로는 사용자 계정도 http://stackoverflow.com/a/36793611/808723을 참조하십시오. – GameScripting

답변

9

32 비트 및 64 비트 정의. 아마 당신은 32 비트 정의를 가지고 있다고 생각하지만, Java ODBC-Bridge는 64 비트 정의를 찾고 있습니다. 에 64 비트 프로그램에서 32 비트 Access ODBC 드라이버를 직접 연결할 수 없습니다 (시도 할 때 오류가 발생 함).

마이크로 소프트가 윈도우 32 비트 ODBC Microsoft Access에서 드라이버 (32 & 64 비트)를 배포하고 있지만, 그렇지 않은 는 A A 64 bit Access ODBC Driver 가능한 Microsoft에서이 윈도우 64와 64 비트 MS Access에 드라이버를 배포한다. 64 비트 MsAccess 드라이버를 다운로드하고 설치하는 데 문제가 있습니다.

  • Java/Driver는 Java 6 (64 비트)로 테스트했을 때 간헐적으로 작동합니다. Java 7에서 테스트하지 않았습니다. java 6을 사용하면 String 필드가 SQL select 문장의 끝 부분에있는 것이면 좋다고 생각합니다. 일부 SQL 문이 작동하지 않는 것을 발견했습니다. 이 드라이버가 64 비트 드라이버, 위치를 32 비트 드라이버
  • , 당신은이 설치 될 위치를 모르는 정확히 알고있다. 이로 인해 자동화 된 설치 스크립트 작성이 어려워집니다.
  • 또한 별도의 64 비트 ODBC 정의를 만들어야합니다.

    ============================================== = 다른 노트에

, 32 비트 자바 에서 실행되는 일부 데이터베이스 프록시/풀링 패키지를 실행하는 것이 가능할 수있다 (그리고 TCP/IP를 통해 연결?). 나는 그것을 결코 시도하지 않았다.

자바 (64) - >> DB 프록시는 32 비트 자바 DB를 실행 - >> MS 액세스는

데이터베이스 프록시 목록 : SSL-SQL-프록시 서버 같은 http://www.manageability.org/blog/stuff/jdbc-proxy-drivers

뭔가 작동 할 수

행운을 빌어 요, 바라건대 몇 가지 중 하나는 원래의 대답부터 솔루션


을 제공 할 수있다 2 JDBC 드라이버의

오픈 소스 :http://ucanaccess.sourceforge.net/site.html

상업 :http://www.csv-jdbc.com/stels_mdb_jdbc.htm

나는 시도하지 않은

중 하나


편집 : 2014년 5월 8일

는 상업적인 드라이버로 보이는 Easysoft Driver 및,648,

Article 유용


편집 할 수 2016년 1월 6일

고드 톰슨이 말한대로; ODBC-Bridge가 Java 8에서 제거되었습니다. 좋은 소식은 UCanAccess이 활발하게 개발 중이며 꾸준히 발전하고있는 것 같습니다.

+0

Java와 함께 사용하면 Bruce가 64 비트 Microsoft Access ODBC 드라이버 문제에 관해 언급 한 내용을 확인합니다. 그것은 매우 버그가있는 것으로 보이며, 어떤 이유로 인터넷에 관한 정보가 거의 없습니다. 열 순서가 중요한 것으로 보이는 문제도있었습니다.32 비트 ODBC 드라이버 (다시 32 비트 JVM으로 전환하는 것을 의미 함)로 다시 전환했으며 모든 것이 다시 정상적으로 작동합니다. – kaliatech

0

문제는 당신이 32 비트 최신 JDK를 설치하려고 자바 실행해야하고 내가 JDK 버전 를 사용하여 실행

일을하는 것입니다 "JDK-7u67-창-i586.exe"

+0

이것은 OP가 명시 적으로 64 비트 JVM이 필요하다는 질문에 대답하지 않습니다. – abiessu

2

JDBC-ODBC Bridge가 Java 8에서 제거되었으므로 Access ODBC를 둘러싼 이러한 모든 문제는 점점 더 과거의 문제가되어 "실제"JDBC 드라이버가 필요할 것입니다.

앞의 대답에서 언급했듯이 UCanAccess은 무료 오픈 소스 옵션입니다. ODBC를 전혀 사용하지 않는 순수 Java 구현이므로 플랫폼 (Windows, Linux, ...) 또는 아키텍처 (32 비트 또는 64 비트)와 관계없이 작동합니다.

UCanAccess 사용에 대한 자세한 내용은 관련 질문 here을 참조하십시오.

관련 문제