2011-08-04 44 views
0

我在以下方面遇到了一些困難:我有一個數據集,我想在GridView中更改值時更新數據庫。該數據集來自於以下幾個方法:winform應用程序中的數據集更新

public static DataSet Display_all_members() 
    { 
     ds = new DataSet(); 
     try 
     { 
      string query = "SELECT date_to, last_name ,first_name , member_pay FROM Member "; 
      conS.Open(); 
      adapter = new SqlDataAdapter(query, conS); 
      adapter.Fill(ds, "To_display"); 
     } 
     catch (Exception r) 
     {} 
     finally 
     { 
      conS.Close(); 
     } 
     return ds; 
    } 

在形式我做

ds2 = DAL.Display_all_members(); 
dataGridView1.DataSource = ds2; 
dataGridView1.DataMember = "To_display"; 

現在我得到更新和我做形式

if (ds2.HasChanges() == true) 
     { 
      DAL.update(ds2); 
     } 

以下在該方法

public static void update(DataSet ki) 
    { 
      SqlCommandBuilder n = new SqlCommandBuilder(da); 
       da.Update(ds); 

    } 

還有它不起作用。有什麼問題? 這是錯誤:更新無法找到TableMapping ['Table']或DataTable'Table'。

+0

1)您並沒有真正使用CommandBuilder,2)您沒有包含主鍵,3)您可能需要將該「To_display」傳遞給更新。 –

+0

你可以請更新我的問題,謝謝 –

+0

你可以發佈你用來填充數據集的實際SQL。 – Raghu

回答

0

它可能只是一個錯字,但您的更新方法在DataAdapter.Update()調用中使用了兩個不同的變量 - DataSet kida

試試這個:

protected void update(DataSet ds) 
{ 
    da.Update(ds, 'To_display") 
} 

DataAdapter DataTable and DataColumn Mappings (ADO.NET)

「如果在調用DataAdapter的Fill或Update方法時,你不指定表名或的DataTableMapping名稱,DataAdapter的尋找一個的DataTableMapping命名爲「Table」,如果該DataTableMapping不存在,則DataTable的TableName爲「Table」。

如果您使用的是最初填充的DataSet,那麼您可能需要在需要時指定表名以避免此錯誤。

相關問題