2017-07-06 72 views
0

我有一個DataGridView控件和一個保存按鈕。點擊保存按鈕後,我想通過DataAdapter Update()命令將對DataGridView所做的任何更改反映到我的數據庫中。但是,點擊保存按鈕並重新加載表單後,更新不在那裏。對DataGridView的更改沒有反映在數據庫中

這裏是目前保存按鈕全部代碼:

private void btnSave_Click(object sender, EventArgs e) 
    { 
     SqlConnection con = new SqlConnection("Data Source=addtool.database.windows.net;Initial Catalog=AddToolToInventoryDB;User id=kanerbw; Password=Rabaraba!11;"); 
     DataTable dt = new DataTable(); 
     SqlDataAdapter adapter = new SqlDataAdapter("select * from ToolTB", con); 
     SqlCommandBuilder myBuilder = new SqlCommandBuilder(adapter); 

     con.Open(); 
     SqlCommandBuilder scb = new SqlCommandBuilder(adapter); 
     myBuilder.GetUpdateCommand(); 
     adapter.UpdateCommand = myBuilder.GetUpdateCommand(); 
     adapter.Update(dt); 
     con.Close(); 
    } 

編輯:我忘了我的DGV的數據源設置爲數據表。這裏的工作代碼:

private void btnSave_Click(object sender, EventArgs e) 
    { 
     using (var con = new SqlConnection(connectionString)) 
     { 
      SqlDataAdapter adapter = new SqlDataAdapter("select * from ToolTB", con); 
      SqlCommandBuilder myBuilder = new SqlCommandBuilder(adapter); 

      dgvProductInfo.DataSource = dt; 

      adapter.UpdateCommand = myBuilder.GetUpdateCommand(); 
      adapter.Update(dt); 

      dt.Clear(); 
      adapter.Fill(dt); 
     } 
    } 

回答

0

你的代碼中有幾個問題:

  1. 你是不是在using聲明封閉的SQLConnection。你應該總是使用這種模式,使得連接妥善處理:using(var connection = new SqlConnection(...)){ rest of statements here }

  2. btnSave_Click功能,你再從數據庫中獲取的數據 - 見的select * from tbl...代碼和你再次填充數據表;因此,顯然不會有任何反映。您需要做的是從頁面讀取Updated DataTable,並在btnSave_Click函數中使用它將更新推送到數據庫。

  3. 你的問題是指DataGridView,我相信是一個用戶控制WinForms,但你的問題被標記爲ASP.NET。您是指GridView控制器嗎?無論哪種方式,兩個控件都應該有一個方法來獲取綁定到它們的DataSource。您應該可以使用DataSource將更新推送到數據庫。

我希望這個指針是有幫助的。鑑於您在問題中提供的代碼,我不能更具體。

+0

感謝您的幫助。我正在使用Winforms和DataGridView,因此我相應地調整了我的標籤。我也實現了一個'using'語句。但是,爲了初始化DataAdapter,您需要指定一個'SELECT'命令。 –

相關問題