代码之家  ›  专栏  ›  技术社区  ›  Partial

C:更新没有任何主键的数据集

  •  2
  • Partial  · 技术社区  · 15 年前

    在C中,当表没有主键时,是否可以使用OLEDBAdapter并对数据集使用其更新方法,以及如何执行此操作?

    4 回复  |  直到 8 年前
        1
  •  1
  •   DOK    15 年前

    Here's an example 在VB中,这可能会给你一个大概的概念。

        2
  •  1
  •   Rasmus Bodin Löfgren    13 年前

    您总是可以使用 myTable.Select("myColumn Like 'unique value'");

        3
  •  0
  •   gbn    15 年前

    你能添加一个主键吗?

    如果没有某种唯一的ID(应该是pk),就无法知道要更新哪一行。

        4
  •  0
  •   Feng Han    8 年前

    我使用第三方数据库时也遇到了同样的问题。它们的数据库中没有主键,但它们有一组唯一的字段。

    首先,创建一个数据表,并使用唯一条件将查询结果填充它。

    DataTable dt = new DataTable();
    OleDbDataAdapter adapter = new OleDbDataAdapter();
    adapter.SelectCommand = new OleDbCommand(sqlstring, ACCESS_dbConnection);
    adapter.Fill(dt);
    

    第二,用更新的数据按列替换DS。

    foreach (DataColumn col in datarow.Columns)
    {
        Debug.WriteLine(col.ColumnName);
        ds.Rows[0][col.ColumnName] = datarow.Rows[0][col.ColumnName];
    }
    

    然后,您可以更新。

    OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter);
    adapter.UpdateCommand = cb.GetUpdateCommand();
    adapter.InsertCommand = cb.GetInsertCommand();
    adapter.Update(ds);
    

    这对我有用。

    只有在您确定只有一个查询数据中有一个查询数据时才执行此操作。如果没有,可以添加一些“if”检查