ステートメントの概要
すべての SQL クエリは、条件に応じて 2 つのグループに分類できます。
- データの取得- これにはSELECTステートメントが含まれます。
- データの変更- これには、INSERT、UPDATE、およびDELETEステートメントが含まれます。
最初のグループでは、すでにおなじみのStatementインターフェイス メソッド、executeQuery()が使用されます。基本的には、この方法で始めるのに十分です。実際のジョブで使用する必要があるクエリの大部分をカバーしています。
後でさらに多くのオプションについて説明しますが、ここでは、テーブルからデータを取得したいだけの場合は、ほとんどの場合、executeQuery () メソッドが正しい選択であることを覚えておくことをお勧めします。
2 番目のグループのリクエストでは、Statement インターフェイスの別のメソッド、executeUpdate()を使用する必要があります。ResultSet を返すexecuteQuery()メソッドとは異なり、このメソッドはクエリの実行時にテーブル内の変更された行数を示す整数を返します。
たとえば、DELETE FROM従業員ステートメントを使用してすべての行を削除できます (そのため、十分に注意してください)。この場合、executeUpdate()メソッドは削除された行の数を返します。状況によっては、変更された行の数を知ると、データを操作するアルゴリズムを構築するのに役立つことがあります。
原則として、私たちはこの質問を終えることができます - 私たちはすでに主要なものを見てきました。データフェッチの場合-executeQuery()。データを変更するには、executeUpdate() を実行します。
executeQuery()メソッドを使用して、ユーザーテーブル内のユーザーの数を取得します。
ResultSet results = statement.executeQuery("SELECT Count(*) FROM user");
results.next();
int count = results.getInt(1);
executeUpdate()
executeUpdate()メソッドは、クエリによってテーブル内の何かが変更されるときに使用されます。それは何でも構いません:
- UPDATEステートメント
- INSERTステートメント
- DELETEステートメント
- CALL PROCEDURE文
このメソッドは、変更された (または削除された) 行の数を返します。
全従業員の給与を1000ルーブル増やすリクエストを書きましょう。
int rowsCount = statement.executeUpdate("UPDATE employee SET salary = salary+1000");
このコードを実行すると、テーブルに 6 という数字が返され、テーブルには 6 行がありました。したがって、すべての行が変更されました。
実行する()
生活の中で、選択やデータ変更など、どのようなリクエストを実行する必要があるのか正確にわからない状況が発生することがあります。この場合、JDBC の作成者は、別の汎用メソッド、execute()を JDBC に追加しました。
このメソッドは、 executeQuery()メソッドおよびexecuteUpdate()メソッドの代わりに使用できます。これらの方法がどのように異なったか覚えていますか? 右。結果のタイプ。そこで、JDBC の作成者はこのような解決策を考え出しました。
execute()メソッドはブール値を返します。この値がtrueの場合、データ フェッチ リクエストが進行中であるため、データを取得するにはgetResultSet()メソッドを呼び出す必要があります。例:
boolean hasResults = statement.execute("SELECT Count(*) FROM user");
if ( hasResults ) {
ResultSet results = statement.getResultSet();
results.next();
int count = results.getInt(1);
}
この値がfalseの場合は、データ変更リクエストが進行中であるため、getUpdateCount()メソッドを呼び出して変更された行数を取得する必要があります。例:
boolean hasResults = statement.execute("UPDATE employee SET salary = salary+1000");
if ( !hasResults ) {
int count = statement.getUpdateCount();
}
クエリの結果を表示するメソッドを書いてみましょう。
public void executeAndPrintSQLQuery(String sqlQuery) {
boolean hasResults = statement.execute(sqlQuery);
if ( hasResults ) {
ResultSet results = statement.getResultSet();
System.out.println(“Your request lines below: ”);
while (results.next()) {
Integer id = results.getInt(1);
String name = results.getString(2);
System.out.println(results.getRow() + ". " + id + "\t"+ name);
}
}
else {
int count = statement.getUpdateCount();
System.out.println(“Number of name strings: ” + count);
}
}
これは、execute()メソッドが実際に通常使用される方法です。