使用存储过程使用SqlDataAdapter加载数据时,C#Winforms更新数据库

时间:2018-10-16 15:34:49

标签: c# database stored-procedures sqldataadapter

这个问题可能已经被问过很多次了,但我仍在努力。我从数据库中加载数据,如下所示:

private void loadProduct()
{
      SqlConnection conn = null ;

      try
      {
           using (conn = new SqlConnection(myGlobals.connString))
           {
                conn.Open();
                dsProduct = new DataSet();

                using (SqlCommand cmd = new SqlCommand("getProduct", conn))
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@productId", productId);

                    daProduct = new SqlDataAdapter(cmd);                        
                    daProduct.Fill(dsProduct, "product");
                    daProduct.UpdateCommand = cmd;                  
                } 
                conn.Close();
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Data loading error!..."
                + Environment.NewLine
                + ex.ToString());
        }
        finally
        {
            conn.Dispose();
            //cmd.Dispose();
            //adapter.Dispose();
        }
    } 

我的getProduct存储过程如下:

...
CREATE PROCEDURE [dbo].[getProduct]
    @productId int
AS
BEGIN
    SET NOCOUNT ON;    
SELECT * from product WHERE   (product.productId = @productId)    
END

ProductId是表的主键。

现在我想使用adapter.Update(table)更新数据库

private void btnSave_Click_1(object sender, EventArgs e)
    {
        try
        {
            using (SqlConnection conn = new SqlConnection(myGlobals.connString))
            {
                conn.Open();
                SqlCommandBuilder cbProduct = new SqlCommandBuilder(daProduct);
                bsProduct.EndEdit();

                daProduct.UpdateCommand.Connection = conn;
                int rows = daProduct.Update(dsProduct, "product");
                MessageBox.Show(rows.ToString() + " Updated Successfully");
            }                    
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

更新功能有效并显示:1成功更新 但是实际上数据库永远不会更新。 我的代码有什么问题?

0 个答案:

没有答案