Набор данных C # не может обновить таблицу базы данных SQL Server - PullRequest
1 голос
/ 27 марта 2012

У меня проблемы с пониманием, что я здесь делаю неправильно.Я смог выбрать и заполнить формы данными из моей базы данных SQL Server без проблем.Теперь, когда я пытаюсь выполнить обратную запись в базу данных через мой измененный набор данных, ничего не происходит.Видимо, команда обновления не работает, и я пытаюсь выяснить, почему.Вот код ниже.

[Я новичок в C # и SQL, поэтому я буду очень признателен, если вы сможете объяснить, как я 5 :)]

Edit: I 'm 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;

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

Приветствия.

1 Ответ

0 голосов
/ 27 марта 2012

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

...