这是我的代码,
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代码是有效的,为什么不能正常工作?
答案 0 :(得分:1)
错误或日志消息对您和我们都有帮助。
除了缺少预订记录外,没有迹象表明出现了什么问题吗?
架构详细信息可能有所帮助。也许你违反了主键或外键约束。
我将这些方法重构为两个单独的方法并单独测试。
这两个INSERT是否是单个事务的一部分?他们应该是。如果保留INSERT失败,您希望发生什么?用户应该回滚吗?
您的代码段未显示您如何清理资源。你最好也要考虑那些,或者你以后会感到悲伤。
答案 1 :(得分:0)
我从你自己的评论中看到你发现问题与日期的JDBC类型转换有关 - 很高兴你解决了。这种问题出现了很多,值得熟悉JDBC类型转换。以下链接是一个很好的解释和参考:
http://docs.oracle.com/javase/6/docs/technotes/guides/jdbc/getstart/mapping.html
这些年来,我反复提到页面末尾的表格,你也一样。 (我在Java 1.7版本的文档中找不到这个,但它应该是相同的。)