2

Postgresql と Mysql の自動インクリメントに相当する SERIAL を使用しています。私のテーブル構造は次のようになります。

id | name | description

結果セットを使用して新しいレコードを挿入するにはどうすればよいですか (実際には CachedRowSet ですが、似ています)。私はこれを試しました:

rs.moveToInsertRow();
rs.updateString("name", "x");
rs.updateString("description", "xxx");
rs.insertRow();
rs.moveToCurrentRow();

しかし、うまくいきません。私は例外を取得します。id 列の値を指定しなかったためです。しかし、どうすれば特定できますか?JDBCに自動的に挿入させるオプションはありませんか? または、レコードを挿入する前に生成されたキーを取得する方法はありますか?

4

1 に答える 1

2

更新可能な結果セットを作成するには、select 選択リストで主キーを指定する必要があります。

    // Create a statement that will return updatable result sets
    Statement stmt = connection.createStatement(
                ResultSet.TYPE_SCROLL_SENSITIVE, 
                ResultSet.CONCUR_UPDATABLE);

    //Primary key / auto-increment 'id' must be specified 
    //so that the result set is updatable
    ResultSet rs = stmt.executeQuery(
                "SELECT id, name, description FROM yourtable");
于 2013-04-25T16:19:29.373 に答える