久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

JDBC應(yīng)用程序常見接口API和基本操作步驟

 昵稱21365845 2015-06-10

一,、常用JDBC API

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

1.Driver 接口:代表驅(qū)動程序

2.DriverManager 類:驅(qū)動程序管理員

3.Connection 接口:代表數(shù)據(jù)庫連接

4.Statement 、PreparedStatement,、CallableStatement 接口:代表數(shù)據(jù)庫操作對象

5.ResultSet 接口:代表結(jié)果集

6.DatabaseMetadata,、ResultSetMetadata接口:代表元數(shù)據(jù)

7.Types 類:代表JDBC類型

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


二、若干API的具體說明

Statement和 PreparedStatement ------SQL語句執(zhí)行接口

      Statement 接口代表了一個數(shù)據(jù)庫的狀態(tài),,再向數(shù)據(jù)庫發(fā)送相應(yīng)的SQL語句時,,都需要創(chuàng)建Statement 接口或者PreparedStatement 接口。

Statement 主要用于操作不帶參數(shù)的SQL語句,,比如增,、刪、改,。

PreparedStatement:預(yù)編譯的Statement接口

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

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

    第二步:設(shè)置參數(shù)

                    ps.setString(1,"5");

    第三步:執(zhí)行sql語句

                    rs= ps.executeQuery();


Statement 發(fā)送完整的sql語句到數(shù)據(jù)庫不是直接執(zhí)行,,而是先編譯,、后運(yùn)行,。

PreparedStatement 先發(fā)送帶參數(shù)的sql語句,在發(fā)送一組參數(shù)值,。

如果是同構(gòu)的sql語句,,則PreparedStatement 效率高。對于異構(gòu)的sql語句,,兩者效率差不多,。

同構(gòu): 兩個sql語句可編譯的部分是相同的,只有參數(shù)值不同,。

異構(gòu): 兩個sql語句的格式是不同的,。

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

          2.可以跨數(shù)據(jù)庫使用,,編寫通用程序,。

          3.能用預(yù)編譯時盡量用預(yù)編譯。

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


ResultSet接口:

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

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


ResultSetMetaData----元數(shù)據(jù)操作接口:

      ResultSetMetaData 是對元數(shù)據(jù)進(jìn)行操作的接口,可以實現(xiàn)很多高級功能,。Hibernate運(yùn)行數(shù)據(jù)庫的操作,,大多是通過此接口??梢哉J(rèn)為,,此接口是SQL查詢語言的一種反射機(jī)制。ResultSetMetaData 可以通過數(shù)據(jù)的形式,,來遍歷數(shù)據(jù)庫各個字段的屬性,。對于開發(fā)者來說,此機(jī)制意義重大,。

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

    MetaData元數(shù)據(jù)包括 數(shù)據(jù)庫源數(shù)據(jù)DatabaseMetadata結(jié)果集元數(shù)據(jù)ResultSetMetaData ,。

     數(shù)據(jù)庫源數(shù)據(jù)DatabaseMetadata: 使用connection.getMetaData()獲得了關(guān)于數(shù)據(jù)庫整體的元數(shù)據(jù)信息。

    結(jié)果集元數(shù)據(jù)ResultSetMetaData: resultSet.getDataMeta獲得的比較重要的是表的列名,、列的屬性等信息,。

    結(jié)果集元數(shù)據(jù)對象: ResultSetMetaData meta = rs.getDataMeta();

                  字段個數(shù):meta.getColumnCount();

                  字段名字:meta.getColumnName();

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

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

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

                   數(shù)據(jù)庫名:meta.getDatabaseProductName();

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

                   數(shù)據(jù)庫驅(qū)動名:meta.getDriverName();

                   數(shù)據(jù)庫驅(qū)動版本號:meta.getDriverVersion();

                   數(shù)據(jù)庫URL:meta.getURL();

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

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


三、JDBC應(yīng)用程序的基本步驟:

1.注冊驅(qū)動

2.建立數(shù)據(jù)庫連接

3.創(chuàng)建數(shù)據(jù)庫操作對象

4.執(zhí)行SQL

5.處理結(jié)果集

6.關(guān)閉JDBC對象

 

 

1.注冊一個驅(qū)動driver

         注冊驅(qū)動程序的三種方式:

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

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

                   DriverManager.registerDriver(driver);

         方式三:編譯時在虛擬機(jī)中加載驅(qū)動

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

                   java -D jabc.drivers = 驅(qū)動全名   類名

                   使用系統(tǒng)屬性名,,加載驅(qū)動 -D表示為系統(tǒng)屬性賦值

              附: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自協(xié)議+@+ip:port / 數(shù)據(jù)庫實例名,,數(shù)據(jù)庫用戶名,用戶密碼,。

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

3.獲得一個Statement對象

        sta = conn.createStatement();

4.通過Statement執(zhí)行sql語句

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

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

        將sql語句通過連接發(fā)送到數(shù)據(jù)庫中執(zhí)行,以實現(xiàn)對數(shù)據(jù)庫的操作,。

5.處理結(jié)果集

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

         只有select語句才有返回結(jié)果集,。

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

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

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

              String sql = "select * from test";

              ReslutSet rs = sta.executeQuery(sql);//執(zhí)行sql語句后有結(jié)果集

              //遍歷處理結(jié)果集

              while(rs.next()){

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

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

              }

6.關(guān)閉數(shù)據(jù)庫連接(釋放資源)

   調(diào)用close()方法:

        rs.close();         

        sta.close();          

        conn.close();

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

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


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多