最近在練習使用 JAVA 連結 資料庫,先練習如何存取 Microsoft 的 Access。
使用
String str = "sun.jdbc.odbc.JdbcOdbcDriver"; Class.forName(str);
建立 jdbc -> odbc 驅動程式居然不管用,原來是因為 Java 8 已經不支援了,所以改用 UCanAccess 這個 Java API。
在開始介紹之前,請先使用 Microsoft Access 建立一個資料庫與資料表,方法如下:
Step 1: 打開 Microsoft Access ,點擊"建立"標籤,選擇"資料表設計"。
Step 2: 建立欄位->另存新檔,下方的圖只建立了兩個欄位(account與pwd),當你另存新檔的時候就可以決定"資料表名稱",之後Acces會跳出下列的視窗問你是否增加主索引鍵,當然就是"是"。
之後請到下列的網站:
選擇網頁最上方的 Download UCanAccess,點它並下載它。
下載且解壓縮完之後,請把 ucanaccess-2.0.9.5.jar 與 lib 中所有的 jar 檔通通import到java開發工具。
之後就可以使用 Java 與 Microsoft Access 進行連結。
連結的步驟為:
1. 建立驅動程式
2. 連結資料庫
3. 進行新增、修改、選擇、刪除。
我寫了以下的程式碼,清楚地描述所有的事情:
package jdbcexample; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import net.ucanaccess.jdbc.JackcessOpenerInterface; public class JDBCExample { public static void main(String[] args) throws SQLException { Connection connDB = null; try { //建立驅動程式,連結odbc至Microsoft Access Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); //下列字串的://之後要加上access檔案存放的地方 String dataSource = "jdbc:ucanaccess://d:/Database1.accdb"; //連結資料庫 connDB = DriverManager.getConnection(dataSource); //SQL共有 INSERT、SELECT、UPDATE、DELETE,以下分別列舉 Statement st = connDB.createStatement(); //之後新增資料 st.executeUpdate("INSERT INTO member (account, pwd) VALUES ('A','Taipei')"); st.executeUpdate("INSERT INTO member (account, pwd) VALUES ('B','Taipei')"); st.executeUpdate("INSERT INTO member (account, pwd) VALUES ('C','Taipei')"); //撈出剛剛新增的資料 st.execute("SELECT * FROM member"); ResultSet rs = st.getResultSet(); while(rs.next()) { System.out.println(rs.getString("account")+" "+rs.getString("pwd")); } //刪除 account=c的資料 st.executeUpdate("DELETE FROM member where account='A'"); st.execute("SELECT * FROM member"); ResultSet rs1 = st.getResultSet(); while(rs1.next()) { System.out.println(rs1.getString("account")+" "+rs1.getString("pwd")); } st.close(); connDB.close(); }catch(ClassNotFoundException e) { System.out.println("Driver loading failed!"); }catch(SQLException e) { System.out.println("DB linking failed!"); } } }
文章標籤
全站熱搜
留言列表