我很难理解我到底做错了什么。我已经能够毫不费力地用我的SQL Server数据库中的数据选择和填充表单。现在,当我尝试通过修改后的数据集写回数据库时,什么也没有发生。显然,update命令不起作用,我正在尝试找出原因。下面是代码。
我是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命令起作用了,但很快就被上面的代码替换为textbox的原始内容。
干杯。
发布于 2012-03-27 18:01:46
删除CurrentDR.AcceptChanges();,因为它会将DataRow设置为unmodified,并且更改不会持久保存在数据库中。
https://stackoverflow.com/questions/9887159
复制相似问题