0

(データベースを更新しない)動作していない私は、Windowsアプリケーションで作られたC#のグリッドビューの変更からデータベースを更新しようとしている以下のコードを持っている....SqlDataAdapter.Update(データテーブル)

コードがSQL Serverデータベースを更新していません。私はどこに問題が起こっているのか分かりません。すべてがうまくいくようです...

また、「更新クエリステートメント」を使用してデータベーステーブルを更新する方法もありますが、ポイントはデータグリッドビューの値変更の更新ステートメントを書き込む方法です。私はバインディングとselectコマンド文に問題があるかもしれないと推測

...

誰もがこの問題を解決するために正しい方向に私を指すもらえますか?

public partial class KnowledgeBaseForm : Form 
{ 
    private SqlDataAdapter SDA = new SqlDataAdapter(); 
    private DataTable DT = new DataTable(); 

    private void button_retrievekb_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      con.Open(); 
      SqlDataAdapter SDA = new SqlDataAdapter(@"SELECT * From Table1", con); 

      SDA.Fill(DT); 

      bindingsource.DataSource = DT; 
      dataGridView.DataSource = bindingsource; 

      if (DT.Rows.Count > 0) 
      { 
       dataGridView.Columns[0].DefaultCellStyle.ForeColor = Color.Gray; 
       dataGridView.Columns[0].ReadOnly = true; 
      } 
      else 
      { 
       MessageBox.Show("No Knowledge Base Rules Found"); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Error : " + ex.Message); 
     } 
     finally 
     { 
      con.Close(); 
     } 
    } 

    private void button_update_Click(object sender, EventArgs e) 
    { 
     if (MessageBox.Show("Do you really want to Update these values?", "Confirm Update", MessageBoxButtons.YesNo) == DialogResult.Yes) 
     { 
      //binding the datasource with the changes made in the gridview 
      bindingsource.DataSource = dataGridView.DataSource; 
      DT.AcceptChanges(); 
      scb = new SqlCommandBuilder(SDA);     
      SDA.Update((DataTable) bindingsource.DataSource); 
      MessageBox.Show("Updates successfully submitted to CoSD"); 
     } 
    } 
} 
+0

あなたのDataAdapterのようなクラスのルートでごDTオブジェクトを宣言し、SDA.Updateを呼び出す前にDT.AcceptChangesを使用し、それをテストし、それが –

+0

こんにちはを動作するかどうか、今私たちにしてみましょう。 ..私はあなたが言ったようにコードを編集しました...しかし、まだdidnt仕事... –

答えて

1

これを試してみてください:

public partial class KnowledgeBaseForm : Form 
    { 
    SqlDataAdapter SDA = new SqlDataAdapter(); 
    DataTable DT = new DataTable(); 
    DataSet ds = new DataSet(); 
    private void button_retrievekb_Click(object sender, EventArgs e) 
      { 

       SDA = new SqlDataAdapter(@"SELECT * From Table1", con); 
       ds = new DataSet(); 
       SDA.fill(ds,"SomeName"); 
       dataGridView1.DataSource = ds.Tables[0]; 
      } 

    private void button_update_Click(object sender, EventArgs e) 
      { 


      if (MessageBox.Show("Do you really want to Update these values?", "Confirm Update", MessageBoxButtons.YesNo) == DialogResult.Yes) 
      { 
       SqlCommandBuilder builder = new SqlCommandBuilder(SDA); 
       SDA.Update(ds,"SomeNme"); 

      } 
      } 
    }