首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C# dataset无法更新SQL Server数据库表

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

Stack Overflow用户
提问于 2012-03-27 17:52:32
回答 1查看 791关注 0票数 1

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

我是C#和SQL的新手,所以如果你能像我5岁那样解释,我将非常感激:)

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

代码语言:javascript
运行
复制
    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:我发现了这个问题,它就是下面的整个区块!

代码语言:javascript
运行
复制
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命令起作用了,但很快就被上面的代码替换为textbox的原始内容。

干杯。

EN

回答 1

Stack Overflow用户

发布于 2012-03-27 18:01:46

删除CurrentDR.AcceptChanges();,因为它会将DataRow设置为unmodified,并且更改不会持久保存在数据库中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9887159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档