c# – 检查重复项并从DataTable中删除数据库表的好方法?

c# – 检查重复项并从DataTable中删除数据库表的好方法?,第1张

概述我的代码中有一个填充的DataTable: 我正在使用SQL Server CE 4.0并解决性能问题,我正在使用SqlCeBulkCopy: SqlCeBulkCopyOptions options = new SqlCeBulkCopyOptions();options = options |= SqlCeBulkCopyOptions.KeepNulls;// Check for DB 我的代码中有一个填充的Datatable:

我正在使用sql Server CE 4.0并解决性能问题,我正在使用sqlCeBulkcopy:

sqlCeBulkcopyOptions options = new sqlCeBulkcopyOptions();options = options |= sqlCeBulkcopyOptions.KeepNulls;// Check for DB duplicatesusing (sqlCeBulkcopy bc = new sqlCeBulkcopy(strConn,options)){    dt = RemoveDuplicateRows(dt,"Email");    bc.Destinationtablename = "RecipIEnts";    bc.WritetoServer(dt);}

RemoveDuplicateRows将从Datatable中删除重复项,但不会检查数据库中已存在的内容.

我想在将其传递给WritetoServer(dt)之前,有效地删除Datatable中存在于实际数据库表中的所有项.

什么是这个问题的良好性能,成本效益的解决方案?

解决方法 那么你需要对数据表和现有表格进行调整吗?我不确定sql ce是否支持临时表,我用ms sql做了类似的事情,这里是伪代码

string tmptableDeFinition = "create table #tmpEmails (...)";using(var connection = new sqlCeConnection(connectionString)){    //Create temp table    var tmptableCommand = new sqlCeCommand(tmptableDefiniton,connection);    tmptableCommand.ExecuteNonquery();    //Bulk copy to the temp table,note that bulk copy run faster if the teble is empty    //which is always true in this case...    using (var bc = new sqlCeBulkcopy(connection,options))    {         bc.Destinationtablename = "#tmpEmails";         bc.WritetoServer(dt);    }    //Run a sp,that have temp table and original one,and marge as you wish in sql    //for sp to compile properly,you would have to copy tmp table to script too    var spCommand = new sqlCommand("sp_MargeTempEmailsWithOriginal",connection);    spCommand.Type = SP //Don't remember exact prop name and enum value    spCommand.ExecuteNonquery();}
总结

以上是内存溢出为你收集整理的c# – 检查重复项并从DataTable中删除数据库表的好方法?全部内容,希望文章能够帮你解决c# – 检查重复项并从DataTable中删除数据库表的好方法?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1230091.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存