preparedstatement没有正确执行

时间:2012-02-12 15:45:21

标签: java sql

这是我的代码,

String insertSQL = "INSERT INTO customer (c_id, f_name, l_name, address, email, phone)"
                    + " VALUES (?,?,?,?,?,?)";
            PreparedStatement prepStmt = connection.prepareStatement(insertSQL);
            prepStmt.setString(1, c_id);
            prepStmt.setString(2, f_name);
            prepStmt.setString(3, l_name);
            prepStmt.setString(4, address);
            prepStmt.setString(5, email);
            prepStmt.setString(6, telephone);
            runUpdateQuery(prepStmt);

            insertSQL = "INSERT INTO reservation (c_id, book_date, s_time, e_time, amount) "
                    + "VALUES (?,?,?,?,?)";
            prepStmt = connection.prepareStatement(insertSQL);
            prepStmt.setString(1, c_id);
            prepStmt.setString(2, date);
            prepStmt.setDouble(3, startTime);
            prepStmt.setDouble(4, endTime);
            prepStmt.setString(5, amount);
            out.println(prepStmt);
            runUpdateQuery(prepStmt);

第一个语句执行并更新数据库,但第二个不执行。我已经打印出语句并直接在psql中运行,并且sql代码是有效的,为什么不能正常工作?

2 个答案:

答案 0 :(得分:1)

错误或日志消息对您和我们都有帮助。

除了缺少预订记录外,没有迹象表明出现了什么问题吗?

架构详细信息可能有所帮助。也许你违反了主键或外键约束。

我将这些方法重构为两个单独的方法并单独测试。

这两个INSERT是否是单个事务的一部分?他们应该是。如果保留INSERT失败,您希望发生什么?用户应该回滚吗?

您的代码段未显示您如何清理资源。你最好也要考虑那些,或者你以后会感到悲伤。

答案 1 :(得分:0)

我从你自己的评论中看到你发现问题与日期的JDBC类型转换有关 - 很高兴你解决了。这种问题出现了很多,值得熟悉JDBC类型转换。以下链接是一个很好的解释和参考:

http://docs.oracle.com/javase/6/docs/technotes/guides/jdbc/getstart/mapping.html

这些年来,我反复提到页面末尾的表格,你也一样。 (我在Java 1.7版本的文档中找不到这个,但它应该是相同的。)