【问题标题】:DataSet update in winform appWinform 应用程序中的数据集更新
【发布时间】:2011-08-05 11:50:04
【问题描述】:

我在以下方面遇到了一些困难:我有一个数据集,当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) 您并没有真正使用 CommandBuilder,2) 您没有包含主键,3) 您可能需要将“To_display”传递给更新。
  • 你可以请更新我的问题,谢谢
  • 您能否发布您用于填充数据集的实际 SQL。

标签: c# .net winforms


【解决方案1】:

这可能只是一个错字,但您的更新方法在 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为“表”。”

如果您使用最初填充的相同数据集,您可能希望在需要的地方继续指定表名以避免此错误。

【讨论】:

    猜你喜欢
    • 2014-10-19
    • 2010-11-17
    • 2011-12-28
    • 2013-05-24
    • 2011-02-06
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多