Java連線Access資料庫
-
JDK1.7以下連線Access:ODBC連線方式
-
使用的工具
- java JDK 1.7;
- Access 2013;
- ODBC資料來源;
-
資料庫結構
- 建立資料庫shop,在其中新增表goods,表結構如下:
-
使用的工具
- 資料如下:
- 建立ODBC資料來源:控制面板-->管理工具-->資料來源(odbc)
- 具體程式碼:目前環境是JDK1.8,下列程式碼沒有測試
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import import java.util.Date; public class Example11_1 { public static void main(String args[]) throws Exception { Connection con = null; Statement sql; ResultSet rs; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // 用ODBC連線資料來源的方式 con
= DriverManager.getConnection("jdbc:odbc:myData","",""); // 用java程式碼直接連線access檔案 // con = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=shop.mdb","",""); sql = con.createStatement(); rs = sql.executeQuery("SELECT * FROM goods WHERE price>0"); while(rs.next()) { String number = rs.getString(1); String
name =
rs.getString(2); Date date = rs.getDate("madTime"); double price = rs.getDouble("price"); System.out.printf("%-4s",number); System.out.printf("%-6s",name); System.out.printf("%-15s",date.toString()); System.out.printf("%6s\n",price); } con.close(); } } |
-
在java程式碼中建立Jdbc-Odbc橋接器,程式碼是:
- Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
-
連線資料庫,這裡要用到java.sql包中的Connection類宣告一個物件,再用類DriverManager呼叫它的靜態方法getConnection建立這個連線。
- Connection con=DriverManager.getConnection("jdbc:odbc:資料來源名字","資料來源使用者名稱","資料來源密碼");
-
JDK1.8連線Access
-
說明:JDK1.8不再包含access橋接驅動,所以要手動引入Access驅動包
- 引入了jar包後,相關的呼叫類也發生了變化,改變如下:黃色高亮為改變部分;
-
說明:JDK1.8不再包含access橋接驅動,所以要手動引入Access驅動包
package hey.up; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JDBCAccess { public static void main(String[] args) { // url表示需要連線的資料來源的位置,此時使用的是JDBC-ODBC橋的連線方式,url是"jdbc:odbc:資料來源名" String url = "jdbc:Access:///d:/a1.mdb"; try { Class.forName("com.hxtt.sql.access.AccessDriver"); Connection conn = DriverManager.getConnection(url); Statement stat = conn.createStatement(); String sql = "select * from goods"; ResultSet rs = stat.executeQuery(sql); while(rs.next()){ System.out.println(rs.getString(2)); } } catch (ClassNotFoundException | SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } |
-
效果
-
注意:網上還有一種將Access_JDBC30.jar放入JDK中的lib檔案下,利用classpath系統變數來引用,這樣就省去了將jar包引入專案的步驟。但此方式我沒有測試通過,所以只是簡單記錄下來操作步驟;
- 把Access_JDBC30.jar放到JDK的lib裡;
- 添加了以後,修改CLASSPATH,環境變數的值需要加上這個jar包,路徑為驅動包的絕對路徑,例如C:\ProgramFiles\Java\jre1.8.0_65\lib\Access_JDBC30.jar,新增完後,需要重啟電腦。[如果CLASSPATH中已有值,在最後新增就行,不同值之間新增分號;]一定要重啟電腦!