我正在使用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中删除数据库表的好方法?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)