1

ms-accessからリストボックスにデータをロードし、アイテムの追加、更新、削除などのアクションを作成するプログラムを作成します..アイテムを適切に挿入および削除しました。しかし、ボタンがクリックされたときに更新クエリが起動しないため(アイテムがデータベースで更新されない)、この更新を機能させるために何をすべきかわかりません。このコードの下では、本来あるべきように機能します。

            OleDbCommand cmd = new OleDbCommand("UPDATE Item SET ITEM = @ITEM, ITEM_DESC = @ITEM_DESC, PRICE = @PRICE, QUANTITY = @QUANTITY WHERE ID = @ID", GetConnection());
            cmd.Parameters.AddWithValue("@ID", Convert.ToInt32(txtItemID.Text));
            cmd.Parameters.AddWithValue("@ITEM", txtItemName.Text);
            cmd.Parameters.AddWithValue("@ITEM_DESC", txtItemDesc.Text);
            cmd.Parameters.AddWithValue("@PRICE", Convert.ToDouble(txtItemPrice2.Text));
            cmd.Parameters.AddWithValue("@QUANTITY", Convert.ToInt32(txtItemQuantity.Value));
            cmd.ExecuteNonQuery();
4

1 に答える 1

4

パラメータの順序が間違っています。私が見る限り、クエリと同じ順序である必要があります。名前は、プログラマーへのプロンプトとして以外はまったく無関係であり、実際の意味では使用されません。これは、ID に間違った値が使用されていることを意味します。

OleDbCommand cmd = new OleDbCommand("UPDATE Item SET ITEM = @ITEM,  
          ITEM_DESC = @ITEM_DESC, PRICE = @PRICE, QUANTITY = @QUANTITY 
          WHERE ID = @ID", GetConnection());
cmd.Parameters.AddWithValue("@ITEM", txtItemName.Text);
cmd.Parameters.AddWithValue("@ITEM_DESC", txtItemDesc.Text);
cmd.Parameters.AddWithValue("@PRICE", Convert.ToDouble(txtItemPrice2.Text));
cmd.Parameters.AddWithValue("@QUANTITY", Convert.ToInt32(txtItemQuantity.Value));
cmd.Parameters.AddWithValue("@ID", Convert.ToInt32(txtItemID.Text));
cmd.ExecuteNonQuery();
于 2013-03-15T10:59:03.547 に答える