我在这里遇到了一个奇怪的问题。每当我运行更新查询时,在Windows窗体中我都可以看到DataGridView中的更新值。但是在我停止程序之后,我通过SQL Server检查了我的数据库,它没有显示更新的值。
try
{
using (SqlConnection conn = new SqlConnection("Data Source=(LocalDB)\\v11.0;AttachDbFilename=|DataDirectory|\\SDM.mdf;Integrated Security=True;Connect Timeout=30"))
{
int updateValue = Int32.Parse(numericUpDown.Text);
string productname = productnamecb.Text;
string getvalue = "SELECT Product_UnitStock FROM Product WHERE Product_Name ='" + productname + "'";
SqlCommand cmd = new SqlCommand(getvalue, conn);
conn.Open();
SqlDataReader rd = cmd.ExecuteReader();
if (rd.HasRows)
{
rd.Read(); // read first row
var oldvalue = rd.GetInt32(0);
conn.Close();
int total = oldvalue + updateValue;
string updateData = "UPDATE Product SET Product_UnitStock = " + total + " WHERE Product_Name = '" + productname + "'";
SqlCommand cmmd = new SqlCommand(updateData, conn);
conn.Open();
cmmd.ExecuteNonQuery();
conn.Close();
}
else
{
MessageBox.Show("System Error", "System Error");
}
}
}
catch (SqlException ex)
{
MessageBox.Show(ex.ToString());
}
这是通过DataGridView在Windows窗体中看到的值。如第1行所示,产品库存为" 92"。
但是每当我关闭程序时,我都会通过SQL Server查看它返回的默认值是" 80"。
答案 0 :(得分:0)
从你的代码片段中,你再也没有真正重新读取数据库中的值,因此表单保留是用户最后一次离开它。您确实将数据写入数据库,但我的猜测是您自动回滚事务(代码中没有明确的事务处理)。