2013-03-20 22 views
0

我想我需要一些關於(My)SqlDataAdapter如何工作的說明。我有一個DGV,用於顯示MySQL表中的一列;但是當我需要編輯記錄時,我需要大部分其他字段,並在另一個winform中執行此操作。所以我想我需要一些最佳實踐意見:DataGridView和Record ID C#

問題1:當綁定到數據源時:我是否需要選擇所有我想在表單中編輯的字段?

string query = "SELECT * FROM cusdata"; 
cusAdapter = new MySqlDataAdapter(query,pppDB.sqlConn);   
cusAdapter.Fill(mainSet,"cusdata"); 
dgv_cusData.DataSource = mainSet.Tables["cusdata"] 

問題2:我看到很多信息都在大約只選擇要在DGV中顯示的字段的網頁,但如果我編輯的數據如何適配器確切地知道正在更新什麼紀錄後端?

我想我只是有點困惑不同的方法,我需要一些指導。我想要一個datagridview,我可以顯示一列(客戶名稱)。我希望能夠以另一種形式編輯客戶記錄,並在成功完成數據庫操作後使DVG刷新新信息。

我已經給了週末的最好的部分,直到今天找到一篇文章或博客或其他東西,證明了這一點。列表形式。有人可以請指點我正確的方向嗎?非常感謝社區。

回答

1

的經驗,你不應該選擇所有字段,而只選擇字段,你需要

Select CustId, CustName, CustAddress, CustPhone from cusdata 

這會影響性能。

當您編輯數據,可以使用下面的代碼:

string connectionString = "[Put your connection string here]"; 
using (SqlConnection conn = new SqlConnection(connectionString)) 
    { 
     conn.Open(); 
     using (SqlCommand cmd = new SqlCommand("UPDATE cusdata SET [email protected], [email protected] WHERE [email protected]", conn)) 
     { 
      cmd.Parameters.AddWithValue("@CustId", 1); 
      cmd.Parameters.AddWithValue("@CustName", "Name Input"); 
      cmd.Parameters.AddWithValue("@CustAddress", "Address input"); 

      int rows = cmd.ExecuteNonQuery(); 

      //rows number of record got updated 
     } 
    } 

的這部分代碼讓你指定要在更新表中的字段和數據

cmd.Parameters.AddWithValue("@CustId", 1); 
cmd.Parameters.AddWithValue("@CustName", "Name Input"); 
cmd.Parameters.AddWithValue("@CustAddress", "Address input"); 
+0

的好文章在C#中的基礎crud http://lamahashim.blogspot.com/2010/04/c-read-insert-update-delete-from-sql.html – Jhigs 2013-03-20 21:45:08

+0

感謝您的答覆。我確實瞭解CRUD的基礎知識以及如何將參數化查詢發送到後端;不過,我希望通過使用數據表將數據綁定到datagridview並使用SqlDataAdapter對後端進行更新來處理所有事情。我需要真實的世界文章/例子來說明這是如何由別人來完成的。 – user1532602 2013-03-21 12:12:35