INSERT文、UPDATE文、DELETE文を実行しても、テーブルが更新されません。
java
1String url = "jdbc:postgresql://localhost:5432/database"; 2String user = "user"; 3String password = "password"; 4 5Class.forName("org.postgresql.Driver"); 6Connection c = DeviceManager.getConnection(url, user, password); 7 8String sql = "INSERT INTO sites (id, name, url) VALUES (?, ?, ?)"); 9PreparedStatement ps = c.prepareStatement(sql); 10ps.setInt(1, 1); 11ps.setString(2, "teratail"); 12ps.setString(3, "teratail.com"); 13 14int count = ps.executeUpdate(); 15out.println(count); // 影響を受けたレコードの行数を出力。「1」が出力される。 16 17c.close();
接続するユーザーにINSERT権限がないときは、executeUpdate
メソッドを実行した際にSQLException
例外が発生しますが、その例外が発生することなくout.println(count);
によって1
が出力されます。
executeUpdate
メソッドの戻り値は、影響を受けたレコードの行数です。INSERT文の場合は、追加されたレコードの行数です。つまり、1
が表示されるということは、1レコード追加されているということだと思います。しかし、pgAdminでテーブルの中身を見てみると、レコードは追加されていません。UPDATE文、DELETE文を実行した時も同じです。
他の確認事項も書いておきます。
● SELECT文の結果は問題なく取得できる。使用したのはexecuteQuery
メソッド。
● pgAdminでINSERT文を実行すると、問題なくレコードが追加される。
原因がわかる方、あるいは予測できる方の回答をお待ちしています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/24 09:46