我无法理解我在这里做错了什么。我已经能够使用SQL Server数据库中的数据选择和填充表单,没有任何问题。现在,当我尝试通过修改后的数据集写回数据库时,没有任何反应。显然,更新命令不起作用,我试图找出原因。这是下面的代码。
[我是C#和SQL的新手,所以如果你能像我这样解释,我将非常感激:) :)
编辑:我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;
显然,我的更新命令工作但很快被上面代码的文本框的原始内容所取代。
干杯。
答案 0 :(得分:0)
删除CurrentDR.AcceptChanges();
,因为它会将您的DataRow设置为未修改,并且更改不会在数据库中保留。