关闭Windows窗体后,数据库将恢复为原始值

时间:2014-12-10 16:39:29

标签: c# sql-server sql-update windows-forms-designer

我在这里遇到了一个奇怪的问题。每当我运行更新查询时,在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"。 Windows Form

但是每当我关闭程序时,我都会通过SQL Server查看它返回的默认值是" 80"。

Sql Server

1 个答案:

答案 0 :(得分:0)

从你的代码片段中,你再也没有真正重新读取数据库中的值,因此表单保留是用户最后一次离开它。您确实将数据写入数据库,但我的猜测是您自动回滚事务(代码中没有明确的事务处理)。