エラーが発生します:
このコマンドに関連付けられた開いている DataReader が既に存在し、最初に閉じる必要があります。
私のコード:
SqlCommand cmd = new SqlCommand("SELECT * FROM shoppingcart", con);
SqlDataReader dr;
con.Open();
dr = cmd.ExecuteReader();
while (dr.Read())
{
found = true;
productdate = Convert.ToDateTime(dr.GetString(4));
string ago1 = string.Format("{0:MM/dd/yy}", Convert.ToString(productdate));
string productdate1 = string.Format("{0:MM/dd/yy}", Convert.ToString(ago));
int productqty = Convert.ToInt32( dr.GetValue(3));
int productID = Convert.ToInt32(dr.GetValue(2));
int cartID = Convert.ToInt32(dr.GetValue(0));
if (productdate < ago)
{
SqlCommand updateproducts = new SqlCommand("UPDATE products SET ProductQuantity=ProductQuantity+@ProductQuantity WHERE ProductID=@ProductID", con);
updateproducts.Parameters.AddWithValue("@ProductQuantity", productqty);
updateproducts.Parameters.AddWithValue("@ProductID", productID);
updateproducts.ExecuteNonQuery();
SqlCommand deletecart = new SqlCommand("DELETE FROM shoppingcart WHERE ID=@ID", con);
deletecart.Parameters.AddWithValue("@ID", cartID);
deletecart.ExecuteNonQuery();
}
}
con.Close();
内部で更新と削除を実行する必要がありwhile(dr.read())
ますが、接続を閉じてからもう一度開くとエラーがポップアップし、その間に停止し、ExecuteReader
閉じているというエラーが表示されます。私を助けてください。