winform app中的DataSet更新

时间:2011-08-04 10:06:58

标签: c# .net winforms

我在以下方面遇到了一些困难:当在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'。

1 个答案:

答案 0 :(得分: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方法时未指定TableName或DataTableMapping名称,DataAdapter将查找名为”Table“的DataTableMapping。如果DataTableMapping不存在,则DataTable的TableName为“表”,“

如果您使用的是最初填充的相同DataSet,则可能需要在必要时指定表名以避免此错误。