• ベストアンサー

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 できました。 これは、どういうことが原因なのでしょうか? 教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • baha
  • ベストアンサー率38% (16/42)
回答No.2

commit,rollbackがみあたりませんが、AutoCommitがtrueという前提でしょうか? 明示的にcommitをいれてみてはどうですか?

noname#2205
質問者

お礼

すみません。 Commitの処理を加えるといけました。 (Commitの位置が悪かったみたいです) しかし、アプレットのときは、 CommitなしでもINSERTできたのに、 Servletでの開発ではできないのは、どうして なんでしょうか?? (同じDBを用いております) とにかくありがとうございました。

noname#2205
質問者

補足

同様でした。。。

その他の回答 (2)

noname#16216
noname#16216
回答No.3

的外れな意見ならごめんなさい。 ConnectionやStatementのclose()漏れっていうことはないんですよね?

noname#2205
質問者

補足

ありがとうございます。 ちなみにStatementは、いちいち クローズしていくのがいいのでしょうか?

  • kuro_73
  • ベストアンサー率28% (33/117)
回答No.1

さっぱり分かりませんが、 psqlとはなんですか? stmt は java.sql.PreparedStatement ですか? それとも別のもの(サードパーティ提供等)ですか? in は何で帰ってきましたか? データベース側のログにはなにもかかれていないのですか?

noname#2205
質問者

補足

すみません。説明不足です。。 データベースを直接同じSQLでinsertすると 追加されたという意味です。 はい。stmtはそのStatementのことです。 inは1でかえってます。 0がエラーですよね? JBuilderで開発してるのですが、 メッセージウィンドウには、正常なものしか でてないのです。

関連するQ&A