【发布时间】:2016-10-05 09:20:05
【问题描述】:
OleDbCommand cmd = new OleDbCommand("SELECT Stock FROM Products WHERE ID=" + ProductID + ";", conn); //run the database query
OleDbDataReader cusReader = cmd.ExecuteReader(); //read the result of the query
cusReader.Read();
ProductStock = (int)cusReader.GetValue(0);
cusReader.Close();
MessageBox.Show((ProductStock).ToString()); // checks that the form is being accessed and the SELECT query works
OleDbCommand cmd1 = new OleDbCommand("UPDATE Products SET Stock=" + (ProductStock - 1) + "WHERE ID= " + ProductID +";", conn);
try
{
if (cusReader.RecordsAffected > 0)
{
MessageBox.Show("no issue was experienced");
}
else
{
MessageBox.Show("An issue occured when decreasing stock");
}
cusReader.Close();
}
catch (Exception ex)
{
MessageBox.Show("An error occured in query.\n" + ex.Message);
}
更新查询返回“出现问题”消息。显示变量 Productstock 的消息框确实返回了正确的值。谁能解释一下如何解决这个问题?
【问题讨论】:
-
你还在执行更新语句吗?
-
您可能想在
cmd1上致电ExecuteNonQuery。我想这就是@Dirk 的意思。 -
不工作的代码是从一个完美工作的更新查询中逐字复制的,所以我假设我有
-
@peter.petrov 是的,当然也可以像您在回答中所说的那样在查询中放置一个空格。
-
我不确定如何使用
ExecuteNonQuery
标签: c# sql sql-server ms-access