1. 程式人生 > >Java連線Access資料庫

Java連線Access資料庫

  • JDK1.7以下連線AccessODBC連線方式
    • 使用的工具
      • 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

java.sql.Statement;

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包後,相關的呼叫類也發生了變化,改變如下:黃色高亮為改變部分;

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中已有值,在最後新增就行,不同值之間新增分號;]一定要重啟電腦!