วิธีเชื่อมต่อ MSAccess บน Java 1.8


การติดต่อ Access เดิมทีนั้นจะติดต่อผ่านไดร์เวอร์ “sun.jdbc.odbc.JdbcOdbcDriver” แต่เมื่อถึง Java 1.8 ไดร์เวอร์ตัวนี้ได้ถูกตัดออกไป เมื่อศึกษาดูส่วนใหญ่จะแนะนำให้ใช้ Ucanaccess แต่ปรากฏว่าการใช้งาน Query บางอย่างยังมีปัญหาเช่น การใช้ insert โดยดึงข้อมูลจากตารางอื่นมาใส่ (insert into table1 select * from table2) การเชื่อมต่อกับไฟล์ประเภท mdw

จากปัญหาดังกล่าวจึงขอแนะนำวิธีเชื่อมต่อ MSAccess เพื่มเติมคือ 2 วิธีคือ

  1. นำไดร์เวอร์จาก Java 1.7 มาใส่ใน Java 1.8

1.1 ติดตั้ง jdk7 หรือ jre7 (ต้องเป็น version 32 bit เพราะ version 64 bit ไม่มี JdbcOdbcDriver)

1.2 เข้าไปในโฟลเดอร์ jre\lib และหาไฟล์ rt.jar เช่น

ถ้าเป็น jdk1.7.0_79 ไฟล์ rt.jar จะอยู่ที่โฟลเดอร์ C:\Program Files (x86)\Java\jdk1.7.0_79\jre\lib\

1.3 Unzip ไฟล์ rt.jar

1.4 คัดลอกโฟลเดอร์ sun\jdbc และ sun\security\action มาไว้ในโฟลเดอร์ชั่วคราว เช่น D:\working เมื่อเสร็จขั้นตอนนี้ควรจะมีโครงสร้างโฟล์เดอร์ในลักษณะนี้

D:\working\sun\jdbc\

D:\working\sun\security\action\

1.5 เรียกคำสั่ง cmd.exe แล้วเปลี่ยนตำแหน่งไปยังโฟลเดอร์ D:\working\ แล้วเรียกใช้คำสั่ง jar -cvf jdbc.jar sun

หมายเหตุ โปรแกรม jar นั้นจะอยู่ในโฟลเดอร์ jdk/bin การเรียกคำสั่ง jar ถ้ายังไม่ตั้ง path ชี้ไปยังโฟลเดอร์นี้จะเรียกใช้คำสั่ง jar ไม่ได้ ดังนั้นให้เรียกใช้โดยตรงเลยเช่น

C:\Program Files (x86)\Java\jdk1.7.0_79\bin\jar -cvf jdbc.jar sun

1.6 หลังจากเรียกคำสั่งดังกล่าวจะได้ไฟล์ jdbc.jar

1.7 คัดลอกไฟล์ jdbc.jar ไปโฟลเดอร์ jdk8 หรือ jre8\lib

1.8 คัดลอกไฟล์ jdbcodbc.dll จาก jre7\bin ไปยัง jre8\bin

ที่มา http://bigfatball.blogspot.it/2016/03/how-to-enabl…

  1. ติดต่อผ่าน ODBC

2.1 เรียก ODBC 32 bit แล้วสร้าง ODBC Connection ตามขั้นตอนต่อไปนี้

เลือก tab “DSN ผู้ใช้” แล้วกดปุ่มเพิ่ม

เลือก Microsoft Access Driver(*.mdb) แล้วกดปุ่ม “เสร็จสิ้น”

กำหนดชื่อแหล่งข้อมูล (ตามตัวอย่างนี้กำหนดเป็น TestODBC) แล้วระบุตำแหน่งไฟล์ Access (*.mdb) ที่ต้องการเชื่อมต่อข้อมูล เสร็จแล้วให้กดปุ่ม “ตกลง”

เสร็จแล้วจะได้ ODBC Connection ใหม่ที่ชื่อ TestODBC

2.2 เรียกใช้งานในจาว่า

ตัวอย่างการเรียกใช้งานผ่าน ODBC Connection

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class TestAccess {

public static void main(String[] args) {

try {

Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);

Connection conn = DriverManager.getConnection(“jdbc:odbc:TestODBC”);

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(“select * from table1”);

while(rs.next()) {

System.out.printf(“StudentID %d %s %s\n”, rs.getInt(1), rs.getString(2),rs.getString(3));

}

rs.close();

stmt.close();

conn.close();

} catch (ClassNotFoundException SQLException e) {

e.printStackTrace();

}

}

}

คำสำคัญ (Tags): #๋Java 1.8#MsAccess#JdbcOdbcDriver#odbc
หมายเลขบันทึก: 628568เขียนเมื่อ 17 พฤษภาคม 2017 10:43 น. ()แก้ไขเมื่อ 7 พฤศจิกายน 2017 15:15 น. ()สัญญาอนุญาต: ครีเอทีฟคอมมอนส์แบบ แสดงที่มา-ไม่ใช้เพื่อการค้า-ไม่ดัดแปลงจำนวนที่อ่าน


ความเห็น

ไม่มีความเห็น

พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท