C#数据集无法更新SQL Server数据库表

本文关键字:Server 数据库 SQL 更新 数据集 | 更新日期: 2023-09-27 18:29:04

我很难理解我做错了什么。我已经能够毫无问题地使用SQL Server数据库中的数据选择和填充表单。现在,当我试图通过修改后的数据集写回数据库时,什么也没发生。显然,更新命令不起作用,我正在努力找出原因。这是下面的代码。

[我是C#和SQL的新手,所以如果你能像我5岁一样解释,我将不胜感激:)]

编辑:我100%确定它连接到数据库,检索数据并填充数据集。

    if (!(String.IsNullOrEmpty(Request.QueryString["newsID"])))
    {            
        SqlDataAdapter UpdateNewsSDA = new SqlDataAdapter("SELECT newsID, newsTitle, newsAuthor, newsDate, shortContent, mainContent FROM news_Table WHERE newsID = @newsID", connectObj);
        UpdateNewsSDA.SelectCommand.Parameters.Add("@newsID", SqlDbType.Int).Value = Convert.ToInt32(Request.QueryString["newsID"]);
        UpdateNewsSDA.UpdateCommand = new SqlCommand("UPDATE news_table SET newsTitle=@newsTitle, newsAuthor=@newsAuthor, newsDate=@newsDate, shortContent=@shortContent, mainContent=@mainContent WHERE newsID=@newsID", connectObj);
        UpdateNewsSDA.UpdateCommand.Parameters.Add("@newsID", SqlDbType.Int).Value = Convert.ToInt32(Request.QueryString["newsID"]);
        UpdateNewsSDA.UpdateCommand.Parameters.Add("@newsTitle", SqlDbType.Text).Value = title_Textbox.Text;
        UpdateNewsSDA.UpdateCommand.Parameters.Add("@newsAuthor", SqlDbType.Text).Value = author_Textbox.Text;
        UpdateNewsSDA.UpdateCommand.Parameters.Add("@newsDate", SqlDbType.DateTime).Value = Convert.ToDateTime(date_Textbox.Text);
        UpdateNewsSDA.UpdateCommand.Parameters.Add("@shortContent", SqlDbType.Text).Value = shortContent_Textbox.Text;
        UpdateNewsSDA.UpdateCommand.Parameters.Add("@mainContent", SqlDbType.Text).Value = mainContent_Textbox.Text;                       
        DataSet UpdateNewsDS = new DataSet();
        SqlCommandBuilder UpdateNewsCommandBuilder = new SqlCommandBuilder(UpdateNewsSDA);
        UpdateNewsSDA.MissingSchemaAction = MissingSchemaAction.AddWithKey;
        UpdateNewsSDA.FillSchema(UpdateNewsDS, SchemaType.Source);
        UpdateNewsSDA.Fill(UpdateNewsDS); 
        DataTable UpdateNewsTable = new DataTable();
        UpdateNewsTable = UpdateNewsDS.Tables[0];
        DataRow CurrentDR;
        CurrentDR = UpdateNewsTable.Rows.Find(Convert.ToInt32(Request.QueryString["newsID"]));
        CurrentDR.BeginEdit();
        CurrentDR["newsAuthor"] = "Ron Weasely";
        CurrentDR.AcceptChanges();
        CurrentDR.EndEdit();

        UpdateNewsSDA.Update(UpdateNewsDS);            
    }

编辑2:我发现了这个问题和下面的整个块!

UpdateNewsSDA.UpdateCommand = new SqlCommand("UPDATE news_table SET newsTitle=@newsTitle, newsAuthor=@newsAuthor, newsDate=@newsDate, shortContent=@shortContent, mainContent=@mainContent WHERE newsID=@newsID", connectObj);
        UpdateNewsSDA.UpdateCommand.Parameters.Add("@newsID", SqlDbType.Int).Value = Convert.ToInt32(Request.QueryString["newsID"]);
        UpdateNewsSDA.UpdateCommand.Parameters.Add("@newsTitle", SqlDbType.Text).Value = title_Textbox.Text;
        UpdateNewsSDA.UpdateCommand.Parameters.Add("@newsAuthor", SqlDbType.Text).Value = author_Textbox.Text;
        UpdateNewsSDA.UpdateCommand.Parameters.Add("@newsDate", SqlDbType.DateTime).Value = Convert.ToDateTime(date_Textbox.Text);
        UpdateNewsSDA.UpdateCommand.Parameters.Add("@shortContent", SqlDbType.Text).Value = shortContent_Textbox.Text;
        UpdateNewsSDA.UpdateCommand.Parameters.Add("@mainContent", SqlDbType.Text).Value = mainContent_Textbox.Text;

令人欣慰的是,我的update命令起了作用,但很快就被上面的代码替换为文本框的原始内容。

干杯。

C#数据集无法更新SQL Server数据库表

删除CurrentDR.AcceptChanges();,因为它会将DataRow设置为未修改,并且更改不会持久化到数据库中。