JDBCjava.sql.ResultSet
用于處理從SQL select語句返回的結(jié)果。
SQL select語句從數(shù)據(jù)庫讀取數(shù)據(jù),并返回結(jié)果集中的數(shù)據(jù)。
select語句的結(jié)果以表格形式顯示。它有列和行。
ResultSet對象維護一個指向結(jié)果集中當前行的游標。
對于某一行,我們可以使用 java.sql.ResultSet
中的方法來獲取數(shù)據(jù)逐列。
ResultSet接口的方法有三個類別:
光標基于ResultSet的特性是可移動的。這些屬性在創(chuàng)建JDBC語句時設(shè)置。
下面列出了Resultset類型,默認值為TYPE_FORWARD_ONLY。
類型 | 描述 |
---|---|
ResultSet.TYPE_FORWARD_ONLY | 光標只能向前移動。 |
ResultSet.TYPE_SCROLL_INSENSITIVE | 光標可以向前和向后滾動。 ResultSet對在創(chuàng)建ResultSet后對數(shù)據(jù)庫所做的更改不敏感。 |
ResultSet.TYPE_SCROLL_SENSITIVE | 光標可以向前和向后滾動。并且ResultSet對在創(chuàng)建結(jié)果集后對數(shù)據(jù)庫所做的更改很敏感。 |
ResultSet并發(fā)類型如下所示。默認并發(fā)類型為CONCUR_READ_ONLY。
并發(fā) | 描述 |
---|---|
ResultSet.CONCUR_READ_ONLY | 只讀結(jié)果集。 這是默認值 |
ResultSet.CONCUR_UPDATABLE | 可更新結(jié)果集。 |
JDBC從Connection對象提供了以下方法來使用某些類型的ResultSet創(chuàng)建語句。
createStatement(int resultSetType,int resultSetConcurrency);
prepareStatement(String SQL,int resultSetType,int resultSetConcurrency);
prepareCall(String sql,int resultSetType,int resultSetConcurrency);
以下代碼創(chuàng)建一個Statement對象以創(chuàng)建只向前的只讀ResultSet對象
Statement stmt = conn.createStatement( ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
我們可以使用ResultSet接口中的以下方法來移動光標。
方法 | 描述 |
---|---|
beforeFirst() | 將光標移動到第一行之前 |
afterLast() | 將光標移動到最后一行之后 |
first() | 將光標移動到第一行 |
last() | 將光標移動到最后一行 |
絕對(int row) | 將光標移動到指定的行 |
relative(int row) | 相對于光標所在位置向前或向后移動光標行數(shù)。 |
previous() | 將光標移到上一行。 |
next() | 將光標移動到下一行。 |
int getRow() | 返回游標指向的行號。 |
moveToInsertRow() | 將光標移動到我們可以將新行插入數(shù)據(jù)庫的位置。當前行號不更改。 |
moveToCurrentRow() | 如果光標當前位于插入行,則將光標移回當前行;否則,此方法不執(zhí)行任何操作。 |
我們有兩種方法在ResultSet中獲取數(shù)據(jù)。
例如,以下兩個方法從列中獲取int值。第一個是按列名稱,第二個是按列索引。
public int getInt(String columnName) public int getInt(int columnIndex)
列索引從1開始。
我們可以更新ResultSet對象中的當前行。
我們需要在更新期間指明列名或索引。
例如,要更新當前行的String列,我們可以使用以下方法。
public void updateString(int columnIndex, String s) throws SQLException public void updateString(String columnName, String s) throws SQLException
要將更新更改推送到數(shù)據(jù)庫,請調(diào)用以下方法之一。
描述 | 描述 |
---|---|
updateRow() | 更新數(shù)據(jù)庫中的相應(yīng)行。 |
deleteRow() | 從數(shù)據(jù)庫中刪除當前行。 |
refreshRow() | 刷新結(jié)果集以反映數(shù)據(jù)庫中的任何更改。 |
cancelRowUpdates() | 取消對當前行所做的任何更新。 |
insertRow() | 當光標指向插入行時,在數(shù)據(jù)庫中插入一行。 |
更多建議: