私はwinformsアプリケーションを開発中で、ボタンをクリックするとDBにアクセスするためにデータを保存しようとしています。私は更新メソッドを使用しています(これは初めてですが、これを使用しています)が、何らかの理由でデータを保存しているときに、DBに保存された値が間違って保存されます。 誰かが私が間違ってやっていることを指摘するのに役立つことができますか?間違った列に保存してください
string cb = "UPDATE Config SET features = @features, pricecost = @pricecost, price1 = @price1, tax = @tax, margem = @margem, price = @price, barcode = @barcode WHERE Code = @code";
cmd = new OleDbCommand(cb, con);
cmd.Parameters.Add("@features", OleDbType.VarChar).Value = txtFeatures.Text;
cmd.Parameters.Add("@price", OleDbType.VarChar).Value = txt_Price.Text;
cmd.Parameters.Add("@price1", OleDbType.VarChar).Value = txt_pricewithouttax.Text;
cmd.Parameters.Add("@margem", OleDbType.VarChar).Value = txt_margem.Text;
cmd.Parameters.Add("@pricecost", OleDbType.VarChar).Value = txt_pricecost.Text;
cmd.Parameters.Add("@tax", OleDbType.VarChar).Value = txt_tax.Text;
cmd.Parameters.Add("@barcode", OleDbType.VarChar).Value = txtBarcode.Text;
cmd.Parameters.Add("@code", OleDbType.VarChar).Value = txtCode.Text;
例えば、txt_Price.Textはprice1 @で保存し、txt_margem.Textが@priceで保存...
私はこれを解決するために何ができますか?
おかげ
コードをたどって、フィールドの値が一致していることを確認してください。どこかの名前の不一致が考えられます。 – gilliduck
場合によっては、更新ステートメントは、更新するフィールドが配置されているのと同じ列の順序にする必要があります。質問を更新し、Configテーブルのデータベース列スキーマを表示することもできますか。 – MethodMan
OLE Access用DBドライバは、名前付きパラメータを適切にサポートします。クエリに出現する順にパラメータを追加します。または、[この回答に記載されている](https://stackoverflow.com/a/21925885/4137916)のような回避策でヘルパーを適用してください。 –