2012-03-27 9 views
1

У меня возникли проблемы с пониманием того, что я делаю неправильно здесь. Я смог без проблем получить и заполнить формы с данными из моей базы данных SQL Server. Теперь, когда я пытаюсь записать обратно в базу данных через измененный набор данных, ничего не происходит. По-видимому, команда обновления не работает, и я пытаюсь выяснить, почему. Вот код ниже.Набор данных C# не обновляет таблицу базы данных 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 [email protected], [email protected], [email protected], [email protected], [email protected] WHERE [email protected]", 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 [email protected], [email protected], [email protected], [email protected], [email protected] WHERE [email protected]", 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; 

Аппетитно, моя команда обновления работала, но быстро была заменена исходным содержимым текстового поля кодом выше.

Cheers.

+0

Вы должны указать ** Изменить 2 ** в качестве ответа. Добавьте некоторые детали с точной проблемой, и это поможет будущим пользователям. :) – IAbstract

ответ

0

Удалить CurrentDR.AcceptChanges();, потому что он установит ваш DataRow немодифицированным, и изменения не будут сохраняться в базе данных.

+0

Я сделал это и, похоже, ничего не изменил. Я также пробовал комментировать OutDR.BeginEdit(); CurrentDR.AcceptChanges(); и CurrentDR.EndEdit() ;, Еще нет радости :( – user1293440

+1

А, я нашел проблему и разобрал ее. Cheers. (См. edit 2) – user1293440