java學習筆記—JDBC1(16)

來源:互聯網
上載者:User

標籤:

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)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.