【问题标题】:C#: Update dataset without any primary keyC#:在没有任何主键的情况下更新数据集
【发布时间】:2010-12-21 06:27:50
【问题描述】:

当表没有主键时,是否可以在 C# 中使用 OleDbAdapter 并将其 Update 方法用于数据集?我该怎么做?

【问题讨论】:

    标签: c# dataset primary-key dataadapter


    【解决方案1】:

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

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

    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);
    

    这对我有用。

    只有在您确定只有一对一的查询数据时才这样做。如果没有,您可能需要添加一些“如果”检查

    【讨论】:

      【解决方案2】:

      你总是可以使用myTable.Select("myColumn Like 'unique value'");找到一行

      【讨论】:

        【解决方案3】:

        可以添加主键吗?

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-01-22
            • 1970-01-01
            • 2021-12-24
            • 1970-01-01
            • 2014-10-15
            • 2014-07-26
            相关资源
            最近更新 更多