標籤:
1、資料持久化
l 持久化(persistence):把資料儲存到可掉電式存放裝置中以供之後使用,也稱為“固化”。在大多數情況下,伺服器或用戶端應用中資料的持久化是通過關係型資料庫來實現
l 存放裝置:磁碟、硬碟, 隨身碟,光碟片等
l 儲存形式:資料庫、xml檔案、txt檔案等
2、知識點2: Java 中的資料存放區技術
l 在Java中,資料庫存取技術可分為如下幾類:
l JDBC直接存取資料庫
l 第三方O/R工具,如Hibernate, ibatis 等
l JDBC是java訪問資料庫的基石,其他技術都是對jdbc的封裝
3、什麼是JDBC
l JDBC(Java Database Connectivity)是一個獨立於特定資料庫管理系統、通用的操作資料庫的Interface(一組API),定義了用來訪問資料庫的標準Java類庫,而介面的實現有各個資料庫廠商來完成
l JDBC驅動程式(jar包):資料庫廠商對JDBC介面的一組實作類別(jar包)
4、什麼是ODBC
l ODBC(Open Database Connectivity,開放資料庫連接)是微軟公司開放服務結構中有關資料庫的一個組成部分,它建立了一組規範,並提供了一組對資料庫訪問的標準API
5、JDBC的分類
目前有四種可供使用的JDBC驅動程式,不同類型的的驅動程式有著不一樣的使用方法,所以當我們在串連資料庫之前,必須先依照我們的需求選擇一個適當的驅動程式,這四種不同類型的驅動程式分別是:
1 JDBC-ODBC橋 :橋接器型的驅動程式,
2 部分本地API部分Java的驅動程式,也是橋接器型驅動程式之一
3 JDBC網路純Java驅動程式
4 本地協議的純 Java 驅動程式:這類型的驅動程式是最成熟的JDBC驅動程式,不但無需在使用者電腦上安裝任何額外的驅動程式,也不需在伺服器端安裝任何的中介程式(middleware),所有存取資料庫的操作,都直接由驅動程式來完成。
6、JDBC API介面介紹
7、java初體驗
// 1.資料庫服務開啟。 2.需要將資料庫驅動匯入.
//JDBC體驗
public class Test1 { public static void main(String[] args) throws Exception { //1.將驅動進行註冊(可以進行與資料庫的連結) DriverManager.registerDriver(new Driver()); //2.得到一個與資料庫連接的對象 Connection con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb","root","root"); //3.得到一個執行sql對象 Statement stm=con.createStatement(); //4.執行sql語句. 以查詢為例,執行後會返回一個ResultSet結果集。(其實就是包含查詢到的資訊) ResultSet rs=stm.executeQuery("select * from emp"); //查表名 //5.將結果集中的內容迭代出來. while(rs.next()){ Object obj=rs.getObject("ename"); //查列名 System.out.println(obj); } //6.需要將資源釋放 rs.close(); stm.close(); con.close(); }}
8、對以上代碼進行異常處理:
//JDBC異常處理public class Test3 { public static void main(String[] args) { Connection con = null; Statement stm = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection( "jdbc:mysql://127.0.0.1:3306/mydb", "root", "root"); stm = con.createStatement(); rs = stm.executeQuery("select * from emp"); while (rs.next()) { String name = rs.getString("ename"); int no = rs.getInt("empno"); Date date = rs.getDate("hiredate"); System.out.println(name + " " + no + " " + date); } } catch (ClassNotFoundException e) { e.printStackTrace(); throw new RuntimeException("載入驅動失敗"); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException("SQL操作失敗"); } finally { try { if (rs != null) rs.close(); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException("關閉rs失敗的"); } try { if (stm != null) stm.close(); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException("關閉stm失敗的"); } try { if (con != null) con.close(); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException("關閉con失敗的"); } } }}
9、對以上代碼進行最佳化(1)
public class Test4 { @Test public void jdbcTest() { //定義在外面,同時將處理異常方法定義在外面 String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://127.0.0.1:3306/mydb"; String username = "root"; String password = "root"; Connection con = null; Statement stm = null; ResultSet rs = null; try { Class.forName(driver); con = DriverManager.getConnection(url, username, password); stm = con.createStatement(); rs = stm.executeQuery("select * from emp"); while (rs.next()) { String name = rs.getString("ename"); int no = rs.getInt("empno"); Date date = rs.getDate("hiredate"); System.out.println(name + " " + no + " " + date); } } catch (ClassNotFoundException e) { e.printStackTrace(); throw new RuntimeException("載入驅動失敗"); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException("SQL操作失敗"); } finally { closeResultSet(rs); closeStatment(stm); closeConnection(con); } } // 關閉Connection // 關閉的Statement // 關閉ResultSet方法 public void closeConnection(Connection con) { try { if (con != null) con.close(); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException("關閉con失敗的"); } } public void closeStatment(Statement stm) { try { if (stm != null) stm.close(); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException("關閉stm失敗的"); } } public void closeResultSet(ResultSet rs) { try { if (rs != null) rs.close(); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException("關閉rs失敗的"); } }}
10 對以上代碼再次最佳化,定義一個mysqldb.properties設定檔。。。。看下一篇
java學習筆記—JDBC1(16)