1

ここで何が間違っているのか理解できません。問題なく、SQL Server データベースからデータをフォームに選択して入力することができました。変更したデータセットを介してデータベースに書き戻そうとしても、何も起こりません。どうやら、更新コマンドが機能しないようで、その理由を突き止めようとしています。以下にコードを示します。

[私は C# と SQL の初心者なので、私が 5 歳のように説明していただければ非常にありがたいです :)]

編集:DBに接続され、データを取得し、データセットにデータを入力していることは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;

どうやら、更新コマンドは機能しましたが、上記のコードによってテキストボックスの元のコンテンツにすぐに置き換えられました。

乾杯。

4

1 に答える 1

0

CurrentDR.AcceptChanges();DataRow が未変更に設定され、変更がデータベースに保持されないため、削除します。

于 2012-03-27T10:01:46.317 に答える