Java 为什么我不能使用准备好的语句来更新数据库?

Java 为什么我不能使用准备好的语句来更新数据库?,java,postgresql,Java,Postgresql,考虑以下代码: String updatestmt = "UPDATE marketplaces.amazon_merchant_fulfilled_orders SET order_status = ? WHERE amazon_order_id=?;"; Connection conn = connectToDatabase(); PreparedStatement pstInsert = conn.prepareStatement(updatestmt); pstInsert.se

考虑以下代码:

String updatestmt = "UPDATE marketplaces.amazon_merchant_fulfilled_orders SET order_status = ? WHERE amazon_order_id=?;";

 Connection conn = connectToDatabase();
 PreparedStatement pstInsert = conn.prepareStatement(updatestmt);
 pstInsert.setString(1, orderId);
 pstInsert.setString(2, status);
 try {
     int rowsAffected = pstInsert.executeUpdate();
     System.out.println("Updated " + rowsAffected + " Line(s).");
 ...
执行此代码时,
rowsAffected
始终为
0

如果我将updatestmt更改为:

“更新marketplaces.amazon_merchant_完成了_orders SET order_status=”“+status+”,其中amazon_order_id=”“+orderId+”;”
并删除
psinsert。setString
调用代码,代码工作正常

我的问题是为什么我不能使用准备好的语句来更新我的数据库?


平台:PostgreSQL 9.2和Java 7

您按错误的顺序设置参数。注:

UPDATE marketplaces.amazon_merchant_fulfilled_orders
SET order_status = ? WHERE amazon_order_id=?
而你正在发送

pstInsert.setString(1, orderId);
pstInsert.setString(2, status);
更改顺序以使其正常工作

pstInsert.setString(1, status);
pstInsert.setString(2, orderId);

哇-真不敢相信我错过了那个。