CachedRowSet でインクリメント ID を持つテーブルに行を挿入しようとしています (私は Java wit Java DB を使用しています) が、次の SQLException を受け取りました:
java.sql.SQLException: 行の挿入に失敗し
ました...
SQLState: null
エラー コード: 0
メッセージ: 行の挿入に失敗しました これ
が私のコード スニペットです:
private static String urlString = "jdbc:derby:testdb;create=true";
private static String userName = "testUser";
private static String password = "testPassword";
...
CachedRowSet crs = new CachedRowSetImpl();
crs.setUrl(urlString);
crs.setUsername(userName);
crs.setPassword(password);
crs.setCommand("SELECT * FROM test_table");
crs.execute();
crs.moveToInsertRow();
crs.updateString("str_value", "testValue");
crs.insertRow();
crs.moveToCurrentRow();
crs.acceptChanges();
から SQLException がスローされcrs.inertRow()
ます。
テーブルに自動インクリメント ID がない場合、CachedRowSet は適切に機能します。
どうすればこれをうまく行うことができますか?
その他の詳細:
次のコードを使用してテーブルを作成します。
conn = DriverManager.getConnection(urlString, userName, password);
Statement stmt = conn.createStatement();
stmt.execute("CREATE TABLE test_table("
+ "id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),"
+ "str_value VARCHAR(20) NOT NULL,"
+ "CONSTRAINT primary_key PRIMARY KEY (id))");
System.out.println("Talbe test_table created.");