JDBC API

一、常用JDBC API

在java.sql包中包含體現JDBC基本功能的若干接口和類:

1.Driver 接口:代表驅動程序

2.DriverManager 類:驅動程序管理員

3.Connection 接口:代表數據庫連接

4.Statement 、PreparedStatement、CallableStatement 接口:代表數據庫操作對象

5.ResultSet 接口:代表結果集

6.DatabaseMetadata、ResultSetMetadata接口:代表元數據

7.Types 類:代表JDBC類型

===============================================================================


二、若干API的具體說明

Statement和PreparedStatement------SQL語句執行接口

       Statement接口代表了一個數據庫的狀態,再向數據庫發送相應的SQL語句時,都需要創建Statement接口或者PreparedStatement接口。

Statement主要用於操作不帶參數的SQL語句,比如增、刪、改。

PreparedStatement:預編譯的Statement接口

    第一步:通過連接獲得PreparedStatement接口對象,用帶佔位符(?)的sql語句構造。

                     PreparedStatement ps=con.praperedStatement("select * from test where id=?");

    第二步:設置參數

                     ps.setString(1,"5");

     第三步:執行sql語句

                     rs= ps.executeQuery();


Statement 發送完整的sql語句到數據庫不是直接執行,而是先編譯、後運行。

PreparedStatement 先發送帶參數的sql語句,在發送一組參數值。

如果是同構的sql語句,則PreparedStatement效率高。對於異構的sql語句,兩者效率差不多。

同構:兩個sql語句可編譯的部分是相同的,只有參數值不同。

異構:兩個sql語句的格式是不同的。

注意點:1.使用預編譯的Statement(即PreparedStatement)編譯多條sql語句一起執行。

          2.可以跨數據庫使用,編寫通用程序。

          3.能用預編譯時儘量用預編譯。

--------------------------------------------------------------------------------------------------------


ResultSet接口:

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

---------------------------------------------------------------------------------------------------------


ResultSetMetaData----元數據操作接口:

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

    JDBC通過元數據(MetaData)來獲取具體的表相關的信息,例如,可以查詢數據庫中有哪些表、標有哪些字段、字段的屬性等。MetaData 通過一系列的getXXX將這些信息返回給我們。

    MetaData元數據包括 數據庫源數據DatabaseMetadata和 結果集元數據ResultSetMetaData

     數據庫源數據DatabaseMetadata:使用connection.getMetaData()獲得了關於數據庫整體的元數據信息。

    結果集元數據ResultSetMetaData:resultSet.getDataMeta獲得的比較重要的是表的列名、列的屬性等信息。

    結果集元數據對象:ResultSetMetaData meta = rs.getDataMeta();

                   字段個數:meta.getColumnCount();

                   字段名字:meta.getColumnName();

                   字段JDBC類型:meta.getColumnType();

                   字段數據庫類型:meta.getColumnTypeName();

    數據庫元數據對象:DatabaseMetaData meta = con.getMetaData();

                    數據庫名:meta.getDatabaseProductName();

                    數據庫版本號:meta.getDatabaseProductVersion();

                    數據庫驅動名:meta.getDriverName();

                    數據庫驅動版本號:meta.getDriverVersion();

                    數據庫URL:meta.getURL();

                   該連接的數據庫登錄名:meta.getUserName();

-------------------------------------------------------------------------------------------------------------------------------------


三、JDBC應用程序的基本步驟:

1.註冊驅動

2.建立數據庫連接

3.創建數據庫操作對象

4.執行SQL

5.處理結果集

6.關閉JDBC對象

1.註冊一個驅動driver

         註冊驅動程序的三種方式:

         方式一:Class.forName("Oracle.jdbc.driver.OracleDriver");

         方式二:Driver driver=new Oracle.jdbc.driver.OracleDriver();

                   DriverManager.registerDriver(driver);

         方式三:編譯時在虛擬機中加載驅動

                   javac -D jdbc.drivers = oracle.jabc.driver.OracleDriver xxx.java

                   java -D jabc.drivers = 驅動全名   類名

                   使用系統屬性名,加載驅動 -D表示爲系統屬性賦值

              附:mysql 的Driver全名:com.mysql.jdbc.Driver

                   sqlserver 的Driver全名:com.microsoft.jdbc.sqlserver.SQLServerDriver

2.建立連接    

         conn=DriverManager.getConnection

                   ("jdbc:oracle.thin:@192.168.0.254:1521/test","username","password");

        上面括號中放的是:oracle自協議+@+ip:port /數據庫實例名,數據庫用戶名,用戶密碼。

         mysql url寫法:jdbc:mysql://192.168.254:3306/test

3.獲得一個Statement對象

        sta = conn.createStatement();

4.通過Statement執行sql語句

        sta.excuteQuery(sql);//返回一個查詢結果集

        sta.executeUpdate(sql);//返回值爲 int 型,表示影響記錄的條數

        將sql語句通過連接發送到數據庫中執行,以實現對數據庫的操作。

5.處理結果集

        使用Connection對象獲得一個Stagement,Statement中的executeQuery(String  sql)方法可以使用select語句查詢,並返回一個結果集 ResultSet 。通過遍歷這個結果集,可以獲得select語句的查詢結果。ResultSet的next()方法會操作一個遊標從第一條記錄開始讀取,直到最後一天記 錄。 executeUpdate(String sql)方法用於執行 DDL /DML 語句,比如update,delete等。

         只有select語句纔有返回結果集。

         例:Statement sta = con.createStatement(); //創建statement對象

              String sql = " insert into test(id,name) values(1"+" " " "+"king"+" "" "+") ";

              sta.executeUpdate(sql); //執行sql語句

              String sql = "select * from test";

              ReslutSet rs = sta.executeQuery(sql);//執行sql語句後有結果集

              //遍歷處理結果集

              while(rs.next()){

                   System.out.println(rs.getInt("id"));

                   System.out.println(rs.getString("name"));

              }

6.關閉數據庫連接(釋放資源)

   調用close()方法:

        rs.close();         

        sta.close();          

        conn.close();

        ResultSet 、Statement 和Connetction是依次依賴的。

        注意:要按先 ResultSet ,再Statement,最後Connetction的順序關閉資源。因ResultSet和Statement在連接的情況下才能使用,所以在連使用束 後可能還有其他的statement還在連接,所以不能先關閉Connection。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章