繁体   English   中英

为什么我无法使用准备好的语句来更新数据库?

[英]Why am I unable to use prepared statements to update a database?

考虑以下代码:

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

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

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM