我在以下方面遇到了一些困难:当在gridView中进行值更改时,我想要使用数据集来更新数据库。数据集来自以下方法:
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 :(得分:0)
这可能只是一个错字,但您的更新方法在DataAdapter.Update()调用中使用了两个不同的变量 - DataSet ki
和da
。
试试这个:
protected void update(DataSet ds)
{
da.Update(ds, 'To_display")
}
来自DataAdapter DataTable and DataColumn Mappings (ADO.NET):
“如果在调用DataAdapter的Fill或Update方法时未指定TableName或DataTableMapping名称,DataAdapter将查找名为”Table“的DataTableMapping。如果DataTableMapping不存在,则DataTable的TableName为“表”,“
如果您使用的是最初填充的相同DataSet,则可能需要在必要时指定表名以避免此错误。