JDBC 常用的类和接口--一学就会(欢迎转载)
目錄
?
JDBC 常用的類和接口
一、Connection接口
二、Statement接口
三、PreparedStatement接口
四、DriverManager類
五、ResultSet接口?
六、Java? ?API文檔使用
七、針對JDBC的基本操作
JDBC 常用的類和接口
在JAVA語言提供了很多的接口和類來用于數據庫的變成,
下面將介紹一些JDBC常用的類和接口,它們都是在java.sql包中
一、Connection接口
connection接口是與數據庫進行連接,在連接中執行SQL語句并返回結果集,
-
Connection對象的數據庫能夠提供描述其表,其支持的SQL語法,其存儲過程,此連接的功能等的信息。 該信息是用getMetaData方法獲得的。
注意:配置Connection時,JDBC應用程序應使用適當的Connection方法,例如setAutoCommit或setTransactionIsolation 。 當有JDBC方法可用時,應用程序不應直接調用SQL命令來更改連接的配置。 默認情況下, Connection對象處于自動提交模式,這意味著它在執行每個語句后自動提交更改。 如果自動提交模式已禁用,必須顯式調用方法commit才能提交更改; 否則數據庫更改將不會被保存。
使用JDBC 2.1核心API創建的新的Connection對象具有與之關聯的最初為空的類型映射。 用戶可以在此類型地圖中輸入UDT的自定義映射。 當UDT從數據源中檢索該方法ResultSet.getObject ,所述getObject方法將檢查連接的類型映射,以查看是否存在對UDT中的條目。 如果是這樣, getObject方法會將UDT映射到指定的類。 如果沒有條目,將使用標準映射映射UDT。
用戶可以創建一個新的類型映射,它是一個java.util.Map對象,在其中創建一個條目,并將其傳遞給可以執行自定義映射的java.sql方法。 在這種情況下,該方法將使用給定的類型映射,而不是與該連接關聯的映射。
例如,以下代碼片段指定SQL類型ATHLETES將映射到Java編程語言中的類Athletes 。 的代碼片段檢索類型映射為Connection對象con ,插入進入它,然后設置型地圖與所述新的條目作為連接的類型映射。
java.util.Map map = con.getTypeMap();map.put("mySchemaName.ATHLETES", Class.forName("Athletes"));con.setTypeMap(map);
下面介紹connection接口中的方法
| 方法 | 功能 |
| createStatement() | 創建Statement的對對象 |
| preparedStatement() | 創建預處理對象preparedStatement |
| isReadOnly() | 查看當前的Connection對象的讀取模式是不是只讀模式 |
| setReadOnly() | 設置當前Connection對象的讀取方式,默認是非讀取方式 |
| commit() | 使所有上次提交/回滾后進行的更改成為持久的更改,并釋放此Connection對象當前持有的所有數據鎖 |
| roolback() | 取消在當前事務中進行的所有更改,并釋放此Connection對象當前持有的所有數據鎖 |
| close() | 立即釋放Connection對象的數據庫和JDBC資源,而不是等待他們自動釋放 |
?
?
?
?
?
?
?
?
?
?
?
?
二、Statement接口
Statement接口用于在已經建立連接的基礎上向數據庫發送SQL語句。
在JDBC中有三種Statement對象
1.Statement對象,用于執行不帶參數的簡單的SQL語句
2.PreparedStatement:繼承Statement,用于執行動態的SQL語句。
3.CallableStatement:繼承了PreparedStatement,用于執行對數據庫存儲過程的調用。
| 方法 | 功能 |
| execute(String? sql) | 執行靜態的select語句,該語句可能返回多個結果集 |
| executeQua\ery(String? sql) | 執行給定的SQL語句,該語句返回單個ResultSet對象 |
| clearBatch() | 清空此Statement對象的當前SQL語句列表 |
| executeBatch() | 將一批命令提交給數據庫來執行,如果全部執行成功,則返回更新計數組成的數組, |
| close() | 釋放Statement實例占用的數據庫和JDBC資源 |
?
?
?
?
?
?
?
?
?
三、PreparedStatement接口
PreparedStatement接口用來動態的執行SQL語句,
通過PreparedStatement實例執行的動態SQL語句,將被編譯并保存在PreparedStatement實例中,從而反復的執行該SQL語句
- public interface PreparedStatement
extends Statement 表示預編譯的SQL語句的對象。
SQL語句已預編譯并存儲在PreparedStatement對象中。 然后可以使用該對象多次有效地執行此語句。
注意:setter方法( setShort , setString用于設置IN參數值必須指定與所定義的SQL類型的輸入參數的兼容的類型,等等)。 例如,如果IN參數具有SQL類型INTEGER ,則應使用方法setInt 。
如果需要任意參數類型轉換,方法setObject應與目標SQL類型一起使用。
在設定的參數的以下示例中, con表示一個活動連接:
PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEESSET SALARY = ? WHERE ID = ?");pstmt.setBigDecimal(1, 153833.00)pstmt.setInt(2, 110592) 下面介紹PreparedStatement的接口方法 -
PreparedStatement接口方法
方法 功能 setInt() 指定位置的參數設置int值 setaFloat() 指定位置的參數設置float值 setDouble() 指定位置的參數設置double值 setBoolean 指定位置的參數設置boolean值 setString() 指定位置的參數設置string值 executeUpdate() 執行前面包含的參數的動態insert、update、delete語句 clearParameters() 清除當前的所有參數的值
?
?
?
?
?
?
?
?
四、DriverManager類
DriverManager類用來管理數據庫的所有驅動程序,它是JDBC的管理層,作用于用戶和驅動程序之間。
通過getConnection()方法來建立連接,否則會拋出異常。
- public class DriverManager
extends Object
用于管理一組JDBC驅動程序的基本服務。
注意: JDBC 2.0 API中新增的DataSource接口提供了另一種連接到數據源的方法。 使用DataSource對象是連接到數據源的首選方法。作為其初始化的一部分, DriverManager類將嘗試加載在“jdbc.drivers”系統屬性中引用的驅動程序類。 這允許用戶自定義應用程序使用的JDBC驅動程序。 例如在?/ .hotjava / properties文件中,您可以指定:
jdbc.drivers=foo.bah.Driver:wombat.sql.Driver:bad.taste.ourDriverDriverManager方法getConnection和getDrivers已得到增強,以支持Java Standard Edition Service Provider機制。 JDBC 4.0驅動程序必須包含文件META-INF/services/java.sql.Driver 。 該文件包含java.sql.Driver的JDBC驅動程序實現的java.sql.Driver 。 例如,要加載my.sql.Driver類, META-INF/services/java.sql.Driver文件將包含條目:
my.sql.Driver應用程序不再需要使用Class.forName()顯式加載JDBC驅動程序。 目前使用加載JDBC驅動程序的現有程序Class.forName()將繼續無需修改工作。
當調用方法getConnection時, DriverManager將嘗試從初始化中加載的驅動程序中找到合適的驅動程序,并使用與當前小程序或應用程序相同的類加載器顯式加載驅動程序。
從Java 2 SDK,Standard Edition,1.3版開始,只有在授予了適當的權限后才能設置記錄流。 通常這將通過ToolTool工具來完成,該工具可用于授予permission java.sql.SQLPermission "setLog" 。
下面介紹DriverManager類
| 方法 | 功能 |
| getConnection(String url,String user,String password) | 進行連接數據庫 |
| setLoginTimeout() | 獲取驅動程序試圖登入到某一數據庫是可以等待的最長的時間,以秒為單位 |
| printIn() | 將一條消息打印在當前JDBC日志流中 |
?
?
?
?
?
?
五、ResultSet接口?
ResultSet接口類似于一個臨時表,用來暫存數據庫查詢操作所獲取的結果集,
ResultSet實例具有指向當前數據行的指針,指針開始的位置在第一條記錄的前面,通過next()方法可將指針下移。
- public interface ResultSet
extends Wrapper, AutoCloseable 表示數據庫結果集的數據表,通常通過執行查詢數據庫的語句生成。
ResultSet對象保持一個光標指向其當前的數據行。 最初,光標位于第一行之前。 next方法將光標移動到下一行,并且由于在ResultSet對象中沒有更多行時返回false ,因此可以在while循環中使用循環來遍歷結果集。
默認的ResultSet對象不可更新,并且只有一個向前移動的光標。 因此,您只能從第一行到最后一行迭代一次。 可以生成可滾動和/或可更新的ResultSet對象。 以下代碼片段(其中con是有效的Connection對象)說明了如何使可滾動且對其他人更新不敏感的結果集,這是可更新的。 有關其他選項,請參閱ResultSet字段。
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);ResultSet rs = stmt.executeQuery("SELECT a, b FROM TABLE2");// rs will be scrollable, will not show changes made by others,// and will be updatable 所述ResultSet接口提供getter方法( getBoolean , getLong ,用于從當前行檢索列值,等等)。 可以使用列的索引號或列的名稱來檢索值。 一般來說,使用列索引將更有效率。 列從1編號。為了最大可移植性,每行中的結果集列應以從左到右的順序讀取,每列應只讀一次。對于getter方法,JDBC驅動程序嘗試將底層數據轉換為getter方法中指定的Java類型,并返回合適的Java值。 JDBC規范具有一個表格,該表格顯示了可由ResultSet getter方法使用的SQL類型到Java類型的允許映射。
用作getter方法輸入的列名不區分大小寫。 當使用列名稱調用getter方法時,多個列具有相同的名稱,將返回第一個匹配列的值。 列名稱選項用于在生成結果集的SQL查詢中使用列名時使用。 對于在查詢中未明確命名的列,最好使用列號。 如果使用列名稱,程序員應該小心保證它們唯一地引用預期的列,這可以通過SQL AS子句來確保。
JDBC 2.0 API(Java¢2 SDK,Standard Edition,1.2版)中的此接口添加了一組更新方法。 關于getter方法參數的注釋也適用于updater方法的參數。
更新方法可以以兩種方式使用:
- 更新當前行中的列值。 在可滾動的ResultSet對象中,光標可以向前和向后移動到絕對位置或相對于當前行的位置。 下面的代碼段更新NAME所述的第五行中列ResultSet對象rs ,然后使用方法updateRow來更新該數據的源表rs推導。 rs.absolute(5); // moves the cursor to the fifth row of rsrs.updateString("NAME", "AINSWORTH"); // updates the// NAME column of row 5 to be AINSWORTHrs.updateRow(); // updates the row in the data source
- 將列值插入到插入行中。 可更新的ResultSet對象具有與其相關ResultSet的特殊行,用作構建要插入的行的暫存區域。 以下代碼片段將光標移動到插入行,構建一個三列行,并將其插入到rs ,并使用方法insertRow進入數據源表。 rs.moveToInsertRow(); // moves cursor to the insert rowrs.updateString(1, "AINSWORTH"); // updates the// first column of the insert row to be AINSWORTHrs.updateInt(2,35); // updates the second column to be 35rs.updateBoolean(3, true); // updates the third column to truers.insertRow();rs.moveToCurrentRow();
-
ResultSet接口?方法
方法 功能 getInt() 以int形式存放ResultSet對象的當前行的指定列表。如果列表為NULL,則返回0 first() 將指針移動到當前記錄的第一行 last() 將指針移動到當前記錄的最后一行 next() 將指針指向下一行 getrow() 查看當前行的索引號 ?
甲ResultSet當對象將自動關閉Statement生成它對象被關閉時,重新執行,或用于檢索從多個結果的序列中的下一結果。
ResultSet對象的列的數量,類型和屬性由ResultSet.getMetaData方法返回的ResultSetMetaData對象提供。
下面介紹ResultSet接口 方法
?
?
?
?
?
?
*注:其他的接口的方法可以查看JAVA? ? API進行查看,參考標題六
六、Java? ?API文檔使用
API全稱Application? Programming? Interface。及應用程序編程接口,
主要包括類的繼承結構、成員變量、成員方法、構造方法、靜態成員的描述信息和詳細說明等內容
API? 1.8中文版免費領取連接(針對英文不好的)
? ??JAVA API 1.8中文版版免費領取 請點擊
另外,JDK10的API可以在官網找到,但是是全英文,英文好的小伙伴可以使用。
七、針對JDBC的基本操作
有些小伙伴對于JDBC不是特別的懂,可以查詢下面的連接
里面有JDBC的連接、增、刪、改、查。還有jar包的導入步驟,MySQL建立數據庫
JDBC基本操作,請點擊查詢
?
如果感覺文章不錯,可以關注本博主并點贊呦,歡迎轉載!!!
總結
以上是生活随笔為你收集整理的JDBC 常用的类和接口--一学就会(欢迎转载)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos6 5从命令行进入图形界面
- 下一篇: android自定义布局实现优惠券效果