<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    無線&移動互聯網技術研發

    換位思考·····
    posts - 19, comments - 53, trackbacks - 0, articles - 283
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    JDBC幾個重要接口重點講解

    Posted on 2009-06-21 22:13 Gavin.lee 閱讀(979) 評論(0)  編輯  收藏 所屬分類: JDBC
    在JDBC 中包括了兩個包:java.sql和javax.sql。
            ① java.sql   基本功能。
               這個包中的類和接口主要針對基本的數據庫編程服務,如生成連接、執行語句以及準備語句和運行批處理查詢等。
               同時也有一些高級的處理,比如批處理更新、事務隔離和可滾動結果集等。
            ② javax.sql  擴展功能。
               它主要為數據庫方面的高級操作提供了接口和類。
               如為連接管理、分布式事務和舊有的連接提供了更好的抽象,它引入了容器管理的連接池、分布式事務和行集等。

            API                                說明
        Connection                        與特定數據庫的連接(會話)。能夠通過getMetaData方法獲得數據庫提供的信息、 
                                                  所支持的SQL語法、存儲過程和此連接的功能等信息。代表了數據庫。 

        Driver                                每個驅動程序類必需實現的接口,每個數據庫驅動程序也都應該提供一個實現Driver接口的類。 

        DriverManager(Class)          管理一組JDBC驅動程序的基本服務。作為初始化的一部分,此接口會嘗試加載 
                                                  在”jdbc.drivers”系統屬性中引用的驅動程序。只是一個輔助類,是工具。 

        Statement                            用于執行靜態SQL語句并返回其生成結果的對象。 

        PreparedStatement             繼承Statement接口,表示預編譯的SQL語句的對象,SQL語句被預編譯并且存儲 
                                                  在PreparedStatement對象中。然后可以使用此對象高效地多次執行該語句。 

        CallableStatement             用來訪問數據庫中的存儲過程。它提供了一些方法來指定語句所使用的輸入/輸出參數。 

        ResultSet                         指的是查詢返回的數據庫結果集。 

        ResultSetMetaData             可用于獲取關于ResultSet對象中列的類型和屬性信息的對象。 

        注:除了標出的Class,其它均為接口。每個都是“java.sql.”包下的。


        1. Statement  —— SQL語句執行接口
           代表了一個數據庫的狀態,在向數據庫發送相應的SQL語句時,都需要創建Statement接口或PreparedStatement接口。
           在具體應用中,Statement主要用于操作不帶參數(可以直接運行)的SQL語句,比如刪除語句、添加或更新。

        2. PreparedStatement:預編譯的Statement
            第一步:通過連接獲得PreparedStatement對象,用帶占位符(?)的sql語句構造。
                PreparedStatement  pstm = con.preparedStatement(“select * from test where id=?”);
            第二步:設置參數
                pstm.setString(1,“ganbin”);//第一個字段是“ganbin”;需一個個字段寫
            第三步:執行sql語句
                Rs  =  pstm.excuteQuery();
            statement發送完整的Sql語句到數據庫不是直接執行而是由數據庫先編譯,再運行。每次都需要編譯。
            而PreparedStatement是先發送帶參數的Sql語句,由數據庫先編譯,再發送一組組參數值。(同構時不需重復編譯)
            如果是同構的sql語句,PreparedStatement的效率要比statement高。而對于異構的sql則兩者效率差不多。
            一般都用PreparedStatement代替Statement,因為它是類型安全的。Statement對參數類型不作檢查,故不夠安全。
                同構:兩個Sql語句可編譯部分是相同的,只有參數值不同。
                異構:整個sql語句的格式是不同的
            注意點:1、使用預編譯的Statement編譯多條Sql語句一次執行
                  2、可以跨數據庫使用,編寫通用程序
                  3、能用預編譯時盡量用預編譯
                  4、如果第二個SQL語句與前一個是異構的,需要再次編譯“ps = con.prepareStatement(sql);“

        3. ResultSet —— 結果集操作接口
           ResultSet接口是查詢結果集接口,它對返回的結果集進行處理。ResultSet是程序員進行JDBC操作的必需接口。

        4. ResultSetMetaData —— 元數據操作接口
           ResultSetMetaData是對元數據進行操作的接口,可以實現很多高級功能。
           Hibernate運行數據庫的操作,大部分都是通過此接口。可以認為,此接口是SQL查詢語言的一種反射機制。
           ResultSetMetaData接口可以通過數組的形式,遍歷數據庫的各個字段的屬性,對于開發者來說,此機制的意義重大。

           JDBC通過元數據(MetaData)來獲得具體的表的相關信息,例如,可以查詢數據庫中有哪些表,表有哪些字段,以及字段的
           屬性等。MetaData中通過一系列getXXX將這些信息返回給我們。     
           數據庫元數據 Database MetaData 用connection.getMetaData()獲得;包含了關于數據庫整體元數據信息。
           結果集元數據 ResultSet MetaData 用resultSet.getMetaData()獲得;比較重要的是獲得表的列名,列數等信息。
                    結果集元數據對象:ResultSetMetaData meta = rs.getMetaData();
                    字段個數:meta.getColomnCount();
                    字段名字:meta.getColumnName();
                    字段JDBC類型:meta.getColumnType();
                    字段數據庫類型:meta.getColumnTypeName();

           數據庫元數據對象:DatabaseMetaData dbmd = con.getMetaData();
                    數據庫名:dbmd.getDatabaseProductName();
                    數據庫版本號:dbmd.getDatabaseProductVersion();
                    數據庫驅動名:dbmd.getDriverName();
                    數據庫驅動版本號:dbmd.getDriverVersion();
                    數據庫Url:dbmd.getURL();
                    該連接的登陸名:dbmd.getUserName();
    主站蜘蛛池模板: 国产精品国产免费无码专区不卡| 大学生一级毛片免费看| 亚洲福利在线播放| 国产精品亚洲一区二区无码 | 97久久精品亚洲中文字幕无码| 中国一级特黄的片子免费 | 99久久综合国产精品免费| 亚洲最大在线视频| 亚洲香蕉免费有线视频| 亚洲成A人片在线播放器| 在线观看人成视频免费| 成人精品国产亚洲欧洲| 亚洲国产成人五月综合网 | 亚洲午夜久久久精品影院| 日韩精品免费视频| 91精品国产亚洲爽啪在线影院| 日韩中文字幕精品免费一区| 亚洲乱理伦片在线观看中字| 永久免费毛片手机版在线看| 九九全国免费视频| 亚洲日本va在线视频观看| 免费A级毛片在线播放| 亚洲视频在线观看2018| 国产99视频免费精品是看6| 久久久久久久国产免费看| 亚洲AV无码成人精品区蜜桃| 免费大片黄在线观看yw| 校园亚洲春色另类小说合集| 国产亚洲精品免费视频播放| 亚洲免费电影网站| 狼人大香伊蕉国产WWW亚洲| 亚洲啪啪综合AV一区| 可以免费看黄视频的网站| 免费一区二区无码视频在线播放| 亚洲精品午夜国产VA久久成人| 免费黄色福利视频| 青青免费在线视频| 亚洲精品成人图区| 亚洲国产精品丝袜在线观看| 狼群影院在线观看免费观看直播| 久久精品国产亚洲AV未满十八|