English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
データベースからのクエリから読み取られるSQL文は、結果セットにデータを返します。SELECT文は、データベースから行を選択し、それらを結果セットで確認する標準的な方法です。Sql.ResultSetインターフェースは、データベースクエリの結果セットを表します。
ResultSetオブジェクトは、結果セット内の現在の行のポインタを維持します。「結果セット(result set)」という用語は、ResultSetオブジェクトに含まれる行と列データを指します。
ResultSetインターフェースのメソッドは、3つのカテゴリーに分類されます。-
ナビゲーションメソッド: カーソルを左右に移動するために使用されます。
Getメソッド: カーソルが指している現在の行の列のデータを確認するために使用されます。
Updateメソッド:現在の行の各列のデータを更新するために使用されます。その後、更新は基盤データベースで更新することもできます。
カーソルはResultSetの属性に基づいて移動できます。これらの属性は、対応する生成ResultSetのStatementを作成したときに指定されます。
JDBCは以下のメソッドを提供して、必要なResultSetを持つ文を作成します。-
createStatement(int RSType, int RSConcurrency);
prepareStatement(String SQL, int RSType, int RSConcurrency);
prepareCall(String sql, int RSType, int RSConcurrency);
最初の引数はResultSetオブジェクトのタイプを示し、2つ目の引数はResultSetの常量のいずれかで、結果セットが読み取り専用であるか更新可能であるかを指定します。
以下に示されるRSTypeが可能です。ResultSetのタイプを指定しない場合、自動的にTYPE_FORWARD_ONLYタイプの結果セットが取得されます。
タイプ | 説明 |
---|---|
ResultSet.TYPE_FORWARD_ONLY | カーソルは結果セット内で前にのみ移動できます。 |
ResultSet.TYPE_SCROLL_INSENSITIVE | カーソルは前後双方にスクロールすることができ、結果セットは他の人が結果セットを作成した後にデータベースで行った変更に反応しません。 |
ResultSet.TYPE_SCROLL_SENSITIVE. | カーソルは前後にスクロール可能で、結果セットは他の人が結果セットの作成後にデータベースに対して行った変更に非常に敏感です。 |
以下にRSConcurrencyが示されています。並行型を指定しない場合、自動的にCONCUR_READ_ONLYタイプが取得されます。
並行 | 説明 |
---|---|
ResultSet.CONCUR_READ_ONLY | 只読み結果セットを作成します。これはデフォルトの値です。 |
ResultSet.CONCUR_UPDATABLE | 更新可能な結果セットを作成します。 |
これまでに書いたすべての例は以下のように書けることができます。この例では、只読みのResultSetオブジェクトを作成するためのStatementオブジェクトを初期化します。-
try { Statement stmt = conn.createStatement( ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); } catch(Exception ex) { .... } finally { .... }
ResultSetインターフェースには、カーソルの移動に関連する方法がいくつかあります。-
番号 | 方法と説明 |
---|---|
1 | public void beforeFirst() throws SQLException カーソルを最初の行の前に移動します。 |
2 | public void afterLast() throws SQLException カーソルを最後の行の次に移動します。 |
3 | public boolean first() throws SQLException カーソルを最初の行に移動します。 |
4 | public void last() throws SQLException カーソルを最後の行に移動します。 |
5 | public boolean absolute(int row) throws SQLException カーソルを指定された行に移動します。 |
6 | public boolean relative(int row) throws SQLException カーソルを指定された行数分前に進めます。現在の位置から移動します。 |
7 | public boolean previous() throws SQLException カーソルを前の行に移動します。前の行が結果セットにない場合、このメソッドはfalseを返します。 |
8 | public boolean next() throws SQLException カーソルを次の行に移動します。結果セットにさらに行がない場合、このメソッドはfalseを返します。 |
9 | public int getRow() throws SQLException カーソルが指している行の行番号を返します。 |
10 | public void moveToInsertRow() throws SQLException カーソルを結果セットの特別な行に移動します。この行は、データベースに新しい行を挿入するために使用できます。現在のカーソル位置を覚えておきます。 |
11 | public void moveToCurrentRow() throws SQLException カーソルが現在行に位置している場合、カーソルを現在行に戻します;そうでない場合、このメソッドは何も行いません。 |
よりよく理解するためには、以下を研究しましょう「ナビゲーション-例文コード。
ResultSetインターフェースには、現在行のデータを取得するための多くのメソッドが含まれています。
各データタイプにはgetメソッドがあり、各getメソッドには2つのバージョンがあります。-
列名を持つ列。
列インデックスを持つインデックス。
例えば、興味のある列がintを持っている場合、ResultSetのgetInt()メソッドのいずれかを使用する必要があります。
番号 | 方法と説明 |
---|---|
1 | public int getInt(String columnName) throws SQLException 現在行のcolumnName名の列のintを返します。 |
2 | public int getInt(int columnIndex) throws SQLException 指定された列インデックスの現在行の整数を返します。列インデックスは1から始まる、これは行の最初の列が意味することです。1と続きがあります。2と続きがあります。 |
同様に、ResultSetインターフェースでは、8種類のJava基本タイプの各種、および一般的なタイプ(java.lang.String、java.lang.Object、java.net.URLなど)に対して、getメソッドがあります。
java.sql.Date、java.sql.Time、java.sql.Timestamp、java.sql.Clob、java.sql.BlobなどのSQLデータタイプを取得するための方法もあります。これらのSQLデータタイプの使用に関する詳細は、ドキュメントを確認してください。
よりよく理解するために、以下を研究しましょう確認する-例文コード。
ResultSetインターフェースには、結果セットデータを更新するためのメソッドのセットが含まれています。
getメソッドと同様に、各データタイプには2つの更新メソッドがあります。-
列名を持つ列。
列インデックスを持つインデックス。
例えば、結果セットの現在行のString列を更新するには、以下のupdateString()メソッドのいずれかを使用できます。-
番号 | 方法と説明 |
---|---|
1 | public void updateString(int columnIndex, String s) throws SQLException 指定された列のStringをsの値に変更します。 |
2 | public void updateString(String columnName, String s) throws SQLException 前のメソッドと同様ですが、列はインデックスではなく名前で指定されます。 |
java.sqlパッケージには、String、Object、URL、およびSQLデータ型の更新メソッドとともに、8種類の原始データ型があります。
結果セット内の一行を更新することで、ResultSetオブジェクト内の現在の行の列が変更されますが、基本データベース内の行は変更されません。データベース内の行の変更を更新するには、以下のいずれかのメソッドを呼び出す必要があります。
番号 | 方法と説明 |
---|---|
1 | public void updateRow() データベース内の対応する行を更新することで、現在の行を更新します。 |
2 | public void deleteRow() データベースから現在の行を削除します。 |
3 | public void refreshRow() 結果セット内のデータをリフレッシュし、データベース内の最新の変更を反映します。 |
4 | public void cancelRowUpdates() 現在の行に対して行われた任何の更新をキャンセルします。 |
5 | public void insertRow() データベースに一行を挿入します。このメソッドを呼び出すことができるのは、カーソルが挿入行に指しているときだけです。 |
よりよく理解するためには、以下を研究しましょう「サンプルコードの更新。