Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将数据追加到SQL-在发现唯一记录时应插入,否则条件将覆盖现有数据_C#_Sql_Sql Server_Datatable - Fatal编程技术网

C# 将数据追加到SQL-在发现唯一记录时应插入,否则条件将覆盖现有数据

C# 将数据追加到SQL-在发现唯一记录时应插入,否则条件将覆盖现有数据,c#,sql,sql-server,datatable,C#,Sql,Sql Server,Datatable,表的名称不是静态的。我有一个C#数据表中的记录列表。将行导入MSSQL表的动机 当前场景:如果任何行失败,或者如果它已经具有相同的数据,例如(主键重复检测),则不会处理整行的追加 如何将包含成功行和失败行列表的数据导入表X 有条件 当覆盖处于活动状态时,追加所有记录,包括重复记录 当覆盖非活动时,仅追加唯一记录并给出失败记录的列表 最好的方法是什么?您以前使用过MERGE吗?我看到了一些MERGE的示例,但似乎都建议使用预先确定的表结构,而不是动态生成。您可以使用任意SQL构建字符串,包括MER

表的名称不是静态的。我有一个C#数据表中的记录列表。将行导入MSSQL表的动机

当前场景:如果任何行失败,或者如果它已经具有相同的数据,例如(主键重复检测),则不会处理整行的追加

如何将包含成功行和失败行列表的数据导入表X

有条件

  • 当覆盖处于活动状态时,追加所有记录,包括重复记录

  • 当覆盖非活动时,仅追加唯一记录并给出失败记录的列表


  • 最好的方法是什么?

    您以前使用过
    MERGE
    吗?我看到了一些MERGE的示例,但似乎都建议使用预先确定的表结构,而不是动态生成。您可以使用任意SQL构建字符串,包括MERGE。只需确保您不接受SQL注入。“当覆盖处于活动状态时…”我假设此“覆盖”是代码中的一个变量?我建议使用两种不同的sql语句,一种用于覆盖,另一种用于“升级”。然后,您可以将这两条语句放入带有IF的SP中,或将它们分开。是覆盖将是一个变量/参数,如果处于活动状态,则无论是否找到匹配的数据,都要用上载的数据替换它。如果没有DataTableCreatePrevior的模式,我如何将datatable作为参数传递给存储过程?