C#を使用してデータベースを更新しようとしていますが、「UPDATEステートメントの構文エラー」というエラーが表示されます。私はこのエラーの他の例を探して、たくさん見つけましたが、それぞれが異なります。多くのことがこのエラーを引き起こす可能性があり、私はこれに指を置くことができません。
query = String.Format(@"UPDATE PAYMENT
SET MONTANT={0}, TYPE='4-Comptant',note='PPA',flag='O', date='{2:yyyyMMdd}'
WHERE num_payment={1}", -payment, id, dt);
daUpdate.UpdateCommand.CommandText = query;
daUpdate.UpdateCommand.ExecuteNonQuery(); //update the table in the database
デバッグモードでは、次のようになります。文字列は次のようになります。
支払いの更新 SET MONTANT = -390、TYPE = '4-Comptant'、note ='PPA'、flag ='O'、date = '20120601' WHERE num_payment = 8
データベースでは、num_paymentは長整数で主キーです。MONTANTはダブルで、他はすべてテキストです。
編集:人々のアドバイスに従って、私は物事を少し変更しましたが、それでも同じエラーが発生します。現在の状態は次のとおりです。
OleDbCommand cmd = _con.CreateCommand();
cmd.CommandText = @"UPDATE PAYMENT
SET MONTANT=@montant, [TYPE]='4-Comptant',note='PPA',flag='O', [date]=@theDate
WHERE num_payment=@numPayment";
cmd.Parameters.AddWithValue("@montant", -payment);
cmd.Parameters.AddWithValue("@theDate", String.Format("{0:yyyyMMdd}", dt));
cmd.Parameters.AddWithValue("@numPayment", id);
cmd.ExecuteNonQuery();
デバッグ出力は以前と同じように見えますが、実際の値の代わりに「@something」が表示される点が異なります。