スクロール可能なResultSet
3143 ワード
スクロール可能なResultSetの作成:public Statement createStatement(int rsType,int rsConcurrenty)throws SQLExceptionでは、rsTypeは3つの変数の1つである必要があります.ResultSetインタフェースに追加してオブジェクトタイプを示します.TYPE_FORWARD_ONLY:スクロール不可の結果セットを作成し、デフォルトTYPE_SCROLL_INSENSITIVE:ResultSetカーソルを2方向に移動できるように指定し、ResultSetの処理中にResultSet下位データに対する変更はResultSetに反映されません.プログラムがデータベースを再問合せしない限り
TYPE_SCROLL_SENSITIVE:ResultSetカーソルを2方向に移動できるように指定し、ResultSetの処理中にResultSet下位データの変更が直ちにResultSetに反映されます.
rsConcurrentyはResultSet定数の1つでなければなりません.結果セットが読み取り専用か更新可能かを指定します.CONCUR_READ_ONLYデフォルトではResultSetを更新できません(つまりResultSetの内容の変更はResultSetの更新方法でデータベースに反映されません)CONCUR_UPDATABLEはResultSetを更新できることを指定します(つまりResultSetの内容の変更はResultSetの更新方法でデータベースに反映されます)
sql server 2005データベースを採用し、データベース変更時に設定
例外が投げ出されるので、以上の完全なコードに変更できます.
削除操作に注意してください.削除後に現在の結果セットを表示する場合は、もう一度クエリー操作を実行したほうがいいです.現在の結果セットでカーソルを先頭に移動して出力するのはだめです.削除操作が実行されているため、しかし、異なるJDBCは、削除操作を異なる方法で処理する(削除行を結果セットに表示されないように移動するか、削除された行の元の位置に空の行を挿入する).削除した行などの異常を出力できないというメッセージが表示される場合があります.
TYPE_SCROLL_SENSITIVE:ResultSetカーソルを2方向に移動できるように指定し、ResultSetの処理中にResultSet下位データの変更が直ちにResultSetに反映されます.
rsConcurrentyはResultSet定数の1つでなければなりません.結果セットが読み取り専用か更新可能かを指定します.CONCUR_READ_ONLYデフォルトではResultSetを更新できません(つまりResultSetの内容の変更はResultSetの更新方法でデータベースに反映されません)CONCUR_UPDATABLEはResultSetを更新できることを指定します(つまりResultSetの内容の変更はResultSetの更新方法でデータベースに反映されます)
package com.java.databaseDemo;
import java.sql.*;
public class ModifyDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Connection conn;
Statement stmt;
ResultSet res;
String command;
try {
//
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//
conn = DriverManager.getConnection(
"jdbc:sqlserver://localhost:1433;DatabaseName=MyDB", "sa",
"123");
// Statement
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
command = "select * from teacher";
//
res = stmt.executeQuery(command);
//
while (res.next()) {
for (int i = 1; i <= 4; i++)
System.out.print(res.getString(i) + "\t");
System.out.println();
}
//
res.moveToInsertRow();
res.updateInt(1, 9);
res.updateString(2, " ");
res.updateString(3, " ");
res.updateInt(4, 42);
res.insertRow();
res.moveToCurrentRow();
//
res.absolute(4);
res.deleteRow();
//
res.first();
res.updateString(2, " ");
res.updateString(3, " ");
res.updateRow();
res=stmt.executeQuery(command);
//
System.out.println("The result set after modify:");
while (res.next()) {
for (int i = 1; i <= 4; i++)
System.out.print(res.getString(i) + "\t");
System.out.println();
}
stmt.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
sql server 2005データベースを採用し、データベース変更時に設定
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
例外が投げ出されるので、以上の完全なコードに変更できます.
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
削除操作に注意してください.削除後に現在の結果セットを表示する場合は、もう一度クエリー操作を実行したほうがいいです.現在の結果セットでカーソルを先頭に移動して出力するのはだめです.削除操作が実行されているため、しかし、異なるJDBCは、削除操作を異なる方法で処理する(削除行を結果セットに表示されないように移動するか、削除された行の元の位置に空の行を挿入する).削除した行などの異常を出力できないというメッセージが表示される場合があります.