การติดต่อ Access เดิมทีนั้นจะติดต่อผ่านไดร์เวอร์ “sun.jdbc.odbc.JdbcOdbcDriver” แต่เมื่อถึง Java 1.8 ไดร์เวอร์ตัวนี้ได้ถูกตัดออกไป เมื่อศึกษาดูส่วนใหญ่จะแนะนำให้ใช้ Ucanaccess แต่ปรากฏว่าการใช้งาน Query บางอย่างยังมีปัญหาเช่น การใช้ insert โดยดึงข้อมูลจากตารางอื่นมาใส่ (insert into table1 select * from table2) การเชื่อมต่อกับไฟล์ประเภท mdw
จากปัญหาดังกล่าวจึงขอแนะนำวิธีเชื่อมต่อ MSAccess เพื่มเติมคือ 2 วิธีคือ
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…
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();
}
}
}
ไม่มีความเห็น