SQL 文をデータベースに発行する時には必ず、Statement インスタンス が必要です。Statement インスタンスを持っていれば、executeQuery() メソッドを使って問い合わせを発行できます。このメソッドは、結果全 体を持った ResultSet インスタンスを返します。
Statement インタフェースを使用する際に以下を考慮しなければなりま せん。
必要な時には何回でも 1 つの Statement インスタンスを使用できます。 接続を開いたらすぐにこのインスタンスを作成でき、この接続が有効な期 間内で使用することができます。1 つの Statement には 1 つの ResultSet しかあり得ないことを覚えておかなければなりません。
ResultSet の処理中に問い合わせを実行する必要があれば、単純に別の Statement を作成して、それを使用して下さい。
スレッドを使用し、複数スレッドがデータベースを使用する場合、各スレッ ドに Statement インスタンスを分けて使わなければなりません。このような 使用を考えているのでしたら、この文書の後で記述する、スレッドとサーブレ ットを参照して下さい。そこにはいくつか重要な点が記載されています。
ResultSet インタフェースを使用する際、以下のことを考慮しなければな りません。
値を読む前に必ず、next() を呼び出して下さい。 結果があれば、真を返します。しかし、これにより処理のための行の準備 が行なわれるということがもっと重要です。
JDBC の仕様では、一度しかフィールドにアクセスで きません。この規則を厳守することは最も安全なのですが、現時点での Postgres のドライバでは、必要ならば何回 でもフィールドにアクセスすることができます。
ResultSet に対する処理が完了した時には close() を呼び出して ResultSet を閉じなければ なりません。
ResultSet を作成する時に使用していた Statement に別の問い合わせを 要求すると、その時点で開いていたインスタンスは閉ざされます。
例を以下に示します。
Statement st = db.createStatement(); ResultSet rs = st.executeQuery("select * from mytable"); while(rs.next()) { System.out.print("Column 1 returned "); System.out.println(rs.getString(1)); } rs.close(); st.close();