ODBC없이 Java에서 Access 데이터베이스 조작


114

Java 프로젝트에서 Microsoft Access 데이터베이스 (.accdb 또는 .mdb 파일)를 조작하고 싶습니다. 다음과 같은 이유로 Microsoft의 JDBC-ODBC 브리지 및 Access ODBC 드라이버를 사용하고 싶지 않습니다.

  • JDBC-ODBC Bridge는 Java SE 8에서 제거되었으며 지원되지 않습니다 (ref : here ).
  • JDBC-ODBC 브리지는 텍스트에 U + 00FF (ref : here ) 이상의 코드 포인트가있는 유니 코드 문자가 포함 된 경우 Access ODBC 드라이버에서 제대로 작동하지 않으므로 이러한 설정은 그리스어, 러시아어, 중국어와 같은 문자를 처리 할 수 ​​없습니다. , 아랍어 등
  • Microsoft의 Access ODBC 드라이버는 Windows에서만 작동합니다.
  • 배포에 방해가 될 수있는 별도의 32 비트 및 64 비트 버전의 Access 데이터베이스 엔진 (및 ODBC 드라이버)이 있습니다.

UCanAccess 라는 Access 데이터베이스 용 JDBC 드라이버를 언급하는 다른 답변을 보았습니다. . 이 접근 방식을 사용하도록 Java 프로젝트를 어떻게 설정할 수 있습니까?

(Java에서 Access 데이터베이스로 작업하는 더 나은 방법을 제안하는 답변도 환영합니다.)


Gord 연락하고 싶습니다. 이메일 주소, 가능합니까? 건배
bonCodigo

jre8에서도 jre7의 jdbc odbc 클래스를 사용할 수 있습니다. stackoverflow.com/a/34617075/2110961
Frank M.

답변:


160

UCanAccess 는 ODBC를 사용하지 않고도 Access 데이터베이스에서 읽고 쓸 수있는 순수한 Java JDBC 드라이버입니다. 이 작업을 수행하기 위해 두 개의 다른 패키지 JackcessHSQLDB 를 사용합니다. 다음은 설정 방법에 대한 간략한 개요입니다.

 

옵션 1 : Maven 사용

프로젝트에서 Maven 을 사용 하는 경우 다음 좌표를 통해 UCanAccess를 포함 할 수 있습니다.

groupId : net.sf.ucanaccess
artifactId : ucanaccess

다음은에서 발췌 한 것입니다 pom.xml. <version>최신 릴리스를 가져 오려면 을 업데이트해야 할 수 있습니다 .

  <dependencies>
    <dependency>
        <groupId>net.sf.ucanaccess</groupId>
        <artifactId>ucanaccess</artifactId>
        <version>4.0.4</version>
    </dependency>
  </dependencies>

 

옵션 2 : 프로젝트에 JAR을 수동으로 추가

위에서 언급했듯이 UCanAccess에는 Jackcess 및 HSQLDB가 필요합니다. Jackcess는 차례로 자체 종속성이 있습니다. 따라서 UCanAccess를 사용하려면 다음 구성 요소를 포함해야합니다.

UCanAccess (ucanaccess-xxxjar)
HSQLDB (hsqldb.jar, 버전 2.2.5 이상)
Jackcess (jackcess-2.xxjar)
commons-lang (commons-lang-2.6.jar 또는 최신 2.x 버전 )
commons-logging ( commons-logging-1.1.1.jar 또는 최신 1.x 버전 )

다행히 UCanAccess는 배포 파일에 필요한 모든 JAR 파일을 포함합니다. 압축을 풀면 다음과 같은 내용이 표시됩니다.

ucanaccess-4.0.1.jar  
  /lib/
    commons-lang-2.6.jar  
    commons-logging-1.1.1.jar  
    hsqldb.jar  
    jackcess-2.1.6.jar

프로젝트에 JAR 5 개를 모두 추가 하기 만하면됩니다.

참고 : 마십시오 하지 추가 loader/ucanload.jar당신이 다른 5 JAR 파일을 추가하는 경우 빌드 경로에. 이 UcanloadDriver클래스는 특수한 상황에서만 사용되며 다른 설정이 필요합니다. 자세한 내용은 여기 에서 관련 답변 을 참조하십시오.

Eclipse : 패키지 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Build Path > Configure Build Path.... "외부 JAR 추가 ..."버튼을 클릭하여 5 개의 JAR을 각각 추가합니다. 완료되면 Java 빌드 경로가 다음과 같아야합니다.

BuildPath.png

NetBeans : 프로젝트의 트리보기를 확장하고 "라이브러리"폴더를 마우스 오른쪽 단추로 클릭하고 "JAR / 폴더 추가 ..."를 선택한 다음 JAR 파일을 찾습니다.

nbAddJar.png

5 개의 JAR 파일을 모두 추가 한 후 "Libraries"폴더는 다음과 같아야합니다.

nbLibraries.png

IntelliJ IDEA :File > Project Structure... 기본 메뉴에서 선택 합니다. "라이브러리"창에서 "추가"( +) 버튼을 클릭하고 5 개의 JAR 파일을 추가합니다. 완료되면 프로젝트는 다음과 같이 보일 것입니다.

IntelliJ.png

 

그게 다야!

이제 다음과 같은 코드를 사용하여 .accdb 및 .mdb 파일의 "U Can Access"데이터

// assumes...
//     import java.sql.*;
Connection conn=DriverManager.getConnection(
        "jdbc:ucanaccess://C:/__tmp/test/zzz.accdb");
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery("SELECT [LastName] FROM [Clients]");
while (rs.next()) {
    System.out.println(rs.getString(1));
}

 

폭로

이 Q & A를 작성하는 시점에 저는 UCanAccess 프로젝트에 관여하거나 제휴하지 않았습니다. 방금 사용했습니다. 나는 그 이후로 프로젝트의 기여자가되었습니다.


2
이 도서관과 관련이 있습니까? 그렇게한다면 공개 할 가치가 있습니다.

이것을 사용하여 Java 8의 Excel 통합 문서 (.xlsx)에 연결할 수 있습니까?
steinbitur 2014 년

2
@ sємsєм 드라이버 클래스는net.ucanaccess.jdbc.UcanaccessDriver
Gord Thompson

1
@GordThompson 훌륭한 대답입니다. 내 수업 전체 가이 문제가 파일 시스템 권한 오류라고 믿고 붙어있었습니다. 저 부하 도왔과 오라클이 자바 8에서 JDBC-ODBC 브리지 페지 실현하기 위해 파고의 놀라운 양을했다
wilbomc

1
UcanAcces 데이터 소스를 Hibernate 및 Spring과 함께 JPA에 통합하는 것은 어떻습니까?
Warren M. Nocos 2015 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.