- ベストアンサー
JDBCでのinsertについて
JDBCを使ってDBを扱います。 データベースはPostgresqlです。 Servlet+JSP+Beanで開発しているのですが、 以下のようなinsert処理をBeanで行っています。 String sql_insert = "INSERT INTO tal_ks(cd,kbn)" + " VALUES(" + vl1 + ",'" + vl2 + "')";System.out.println(sql_insert); System.out.println("SQL文発行"); int in = stmt.executeUpdate(sql_insert); System.out.println("(SQL文発行後"); ・ ・ ・ これを行うと、例外処理には流れず 実行したかのように見えるんですが、 実際はデータがはいっておりません。 このSQLと同じものをpsqlで直接実行すると insert できました。 これは、どういうことが原因なのでしょうか? 教えていただきたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
commit,rollbackがみあたりませんが、AutoCommitがtrueという前提でしょうか? 明示的にcommitをいれてみてはどうですか?
その他の回答 (2)
的外れな意見ならごめんなさい。 ConnectionやStatementのclose()漏れっていうことはないんですよね?
補足
ありがとうございます。 ちなみにStatementは、いちいち クローズしていくのがいいのでしょうか?
- kuro_73
- ベストアンサー率28% (33/117)
さっぱり分かりませんが、 psqlとはなんですか? stmt は java.sql.PreparedStatement ですか? それとも別のもの(サードパーティ提供等)ですか? in は何で帰ってきましたか? データベース側のログにはなにもかかれていないのですか?
補足
すみません。説明不足です。。 データベースを直接同じSQLでinsertすると 追加されたという意味です。 はい。stmtはそのStatementのことです。 inは1でかえってます。 0がエラーですよね? JBuilderで開発してるのですが、 メッセージウィンドウには、正常なものしか でてないのです。
お礼
すみません。 Commitの処理を加えるといけました。 (Commitの位置が悪かったみたいです) しかし、アプレットのときは、 CommitなしでもINSERTできたのに、 Servletでの開発ではできないのは、どうして なんでしょうか?? (同じDBを用いております) とにかくありがとうございました。
補足
同様でした。。。