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