スクロールカーソルを使用したプログラム例について説明します。
以下のサンプルアプリケーションでは、ネーミングサービスを起動しているホスト名に、“myhost”を指定しています。サンプルアプリケーションを実行する環境に合わせて、ホスト名の値を修正してください。
// 以下のパッケージをインポートします。 import java.util.*; import java.sql.*; import javax.sql.*; import javax.naming.*; // クラスを定義します。 public class MyScrollAccess { public static void main(String args[]) { try { // JNDI環境を指定します。 Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY,"com.fujitsu.symfoware.jdbc2.jndisp.SYMContextFactory"); env.put(Context.PROVIDER_URL,"SYM://myhost:10326"); InitialContext ctx = new InitialContext(env); // JDBCデータソースを取得します。 DataSource ds = (DataSource)ctx.lookup("jdbc/ds1"); // データベースと接続します。 Connection con = ds.getConnection(); // 自動コミットの設定 con.setAutoCommit(false); // スクロール可能なResultSetオブジェクトを生成するよう指定し、 // Statementのオブジェクトを生成します。 Statement stmt = con.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE, java.sql.ResultSet.CONCUR_READ_ONLY); // SQL文を実行し、ResultSetの // オブジェクトを生成します。 ResultSet rs = stmt.executeQuery("SELECT ID,NAME FROM GENERAL.EMPLOYEE"); int iID = 0; String sName = null; int iCursor = 0; // カーソルを3行目に移動する。 if(rs.absolute(3)) { // 結果セットに3行目のデータがあった場合、データを取得します。 iID = rs.getInt(1); sName = rs.getString(2); // 取得した情報を表示します。 System.out.println("ID = " + iID); System.out.println("NAME = " + sName); // カーソルの位置が何行目にあるかを印字する。 iCursor = rs.getRow(); System.out.println("カーソル位置 = " + iCursor); } // ResultSetのオブジェクトをクローズします。 rs.close(); // Statementのオブジェクトをクローズします。 stmt.close(); // Connectionのオブジェクトをクローズします。 con.close(); } // SQLExceptionが発生した場合の処理を記述します。 catch (SQLException e) { // エラー情報を出力します。 System.out.println("ERROR MESSAGE : " + e.getMessage()); System.out.println("SQLSTATE : " + e.getSQLState()); System.out.println("ERROR CODE : " + e.getErrorCode()); e.printStackTrace(); } // その他のExceptionが発生した場合の処理を記述します。 catch (Exception e) { // スタックトレースを出力します。 e.printStackTrace(); System.out.println("ERROR MESSAGE : " + e.getMessage()); } } }