Ado.net 断开更新整个表

Posted

技术标签:

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

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

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

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

【问题讨论】:

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

以上是关于Ado.net 断开更新整个表的主要内容,如果未能解决你的问题,请参考以下文章

ADO.NET复习总结-断开式数据操作

ADO .NET 中常用的对象有那些?分别描述下?

ADO.NET 和数据集中的更新丢失

ADO.NET之使用DataSet类更新数据库

C# ado.net基础 更新一行数据 在sqlsever中的一个表中

ADO.NET DBConcurrencyException - 尝试更新已删除的行