2

考虑以下代码:

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.

如果我将 updatetmt 更改为:

"UPDATE marketplaces.amazon_merchant_fulfilled_orders SET order_status = '"+status+"' WHERE amazon_order_id='"+orderId+"';";并删除pstInsert.setString代码工作正常的调用。

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

平台:PostgreSQL 9.2 和 Java 7

4

1 回答 1

5

您以错误的顺序设置参数。笔记:

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);
于 2013-01-18T16:08:56.820 回答