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.

updatestmt を次のように変更すると:

"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 に答える