IT박스

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

itboxs 2020. 8. 4. 07:41
반응형

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


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

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

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

(Java의 Access 데이터베이스를 사용하는 더 나은 방법을 제안하는 답변도 가장 환영받을 것입니다.)


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

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

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

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

BuildPath.png

NetBeans: Expand the tree view for your project, right-click the "Libraries" folder and choose "Add JAR/Folder...", then browse to the JAR file.

nbAddJar.png

After adding all five (5) JAR files the "Libraries" folder should look something like this:

nbLibraries.png

IntelliJ IDEA: Choose File > Project Structure... from the main menu. In the "Libraries" pane click the "Add" (+) button and add the five (5) JAR files. Once that is done the project should look something like this:

IntelliJ.png

 

That's it!

Now "U Can Access" data in .accdb and .mdb files using code like this

// 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));
}

 

Disclosure

At the time of writing this Q&A I had no involvement in or affiliation with the UCanAccess project; I just used it. I have since become a contributor to the project.

참고URL : https://stackoverflow.com/questions/21955256/manipulating-an-access-database-from-java-without-odbc

반응형