これはむしろばかげた質問かもしれません。しかし、手動でデータ/値をJavaの結果セットに追加することは可能ですか?たとえば、すでにデータセットされているResultSetがある場合、その上にデータを追加する方法はありますか?Java ResultSetに手動でデータを追加する
//if this was possible for instance
ResultSet rs;
rs.setData("someValue");
ありがとうございます!
これはむしろばかげた質問かもしれません。しかし、手動でデータ/値をJavaの結果セットに追加することは可能ですか?たとえば、すでにデータセットされているResultSetがある場合、その上にデータを追加する方法はありますか?Java ResultSetに手動でデータを追加する
//if this was possible for instance
ResultSet rs;
rs.setData("someValue");
ありがとうございます!
あなたのカスタム実装で任意のJDBC ResultSet
をラップすることができます:
public class MyResultSet implements ResultSet {
// Delegate most implementations to the underlying database result set:
private final ResultSet delegate;
public MyResultSet(ResultSet delegate) {
this.delegate = delegate;
}
@Override
public int getInt(int index) throws SQLException {
return delegate.getInt(index);
}
// [... more delegate methods ...]
// Add custom methods
public void setData(Object someValue) { ... }
public Object getData() { ... }
}
カスタム結果セットは、他の結果セットのように振る舞います。あなたのカスタム結果セットからデータを読み取るクライアントコードは、あなたがそれを実行する変更を気にしません。言い換えれば、あなたはいくつかのデータが利用可能であること
public class MyResultSet implements ResultSet {
// [...]
@Override
public int getInt(int index) throws SQLException {
if (index == 3) {
return 42;
} else {
return delegate.getInt(index);
}
}
}
また、基礎となるデータベースにデータを追加しますResultSet
using insertRow()
が、これに値を追加することができます。あなただけのデータベースがResultSet
からList
またはSet
または類似のものにデータを追加し、修正変更することなく、結果にデータを追加したい場合は
rs.moveToInsertRow();
rs.updateString("someColumn", "someValue");
rs.insertRow();
:あなたはこれをやってみたかった場合はあなたのような何かをしたいですそれ。
をふりをすることができますがResultSet
更新可能な戻りますステートメントを作成する必要があります。例:
Statement stmt = connection.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE
);
ResultSet resultSet = stmt.executeQuery(" SELECT col1 FROM tablename ");
rs.absolute(5); // moves the cursor to the 5th row of rs
rs.updateString("col1", "NEW VALUE"); // updates the col1 column of row 5 to be NEW VALUE
rs.updateRow(); // updates the row in the data source