【问题标题】:Ado.net disconnected update whole tableAdo.net 断开更新整个表
【发布时间】:2019-03-07 12:25:41
【问题描述】:

我知道关于这个问题的文章还有很多,但我的问题是一个特例——我认为——

我有一个由 OleDataAdapter 填充的名为“Categories”的数据表的数据集。 从本地 PC 上的数据库中填写“类别”表后,我对其进行了大量编辑(添加行 - 可能是数千行 - 并更新字段)。

现在,我想将所有这些编辑更新到 PC 上的数据库表中。 如何尽快做到这一点?

【问题讨论】:

  • 您只是添加新行还是编辑现有行?
  • 你的不是特例。 DataAdapter 用于跟踪更改,然后更新数据库。你不需要遍历任何东西,我会避免这些解决方案。 See this documentation
  • 感谢大家的回复,但我使用的是 OleDb 而不是 Sql 并且 SqlConnection 不支持我的提供程序(Provider=Microsoft.ACE.OLEDB.12.0;Data Source=......)

标签: c# vb.net ado.net oledb


【解决方案1】:

试试 SqlBulkCopy

https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlbulkcopy?redirectedfrom=MSDN&view=netframework-4.7.2

快速示例:

 DataTable dt = new DataTable();
    foreach (var itm in sampleList) {
        DataRow row = dt.NewRow();
        row["Field1"] = itm.Field1;
        row["Field2"] = itm.Field2;
        row["Field3"] = itm.Field3;
        dt.Rows.Add(row);
    }
    using (SqlConnection cn = new SqlConnection(connectionString)) {
        cn.Open();
        using (SqlBulkCopy bulkCopy = new SqlBulkCopy(cn)) {
            bulkCopy.DestinationTableName = "dbo.Categories";
            bulkCopy.WriteToServer(dt);
        }
        cn.Close();
    }

【讨论】:

  • sqlConnection 不支持我的提供程序(Provider=Microsoft.ACE.OLEDB.12.0;Data Source=......)
猜你喜欢
  • 1970-01-01
  • 2016-09-10
  • 2017-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多