c# - 如何将数组/数据表等变量传递给 SQL Server?

标签 c# sql sql-server

有时您需要使用数据表中的许多行升级数据库,或者您有一个充满数据的数组,而不是将所有这些数据放在一个字符串中,然后在 SQL SERVER 中拆分,或者迭代代码中的数据表逐行更新数据库,还有其他方法吗? SQL SERVER 2005中除了传统的变量,还有其他类型的变量吗?

最佳答案

我同意 John 的观点,SqlBulkCopy 或 sqlxml 是 SQL Server 2005 中的最佳选择;请注意,在 SQL Server 2008 中,您还有 table valued parameters , 这值得考虑;特别是与新的 merge join 混合使用时.

请注意,如果您使用 SqlBulkCopy,我强烈建议仅批量插入到暂存表 - 即,一个单独的表仅用于导入;然后运行存储过程将数据移动到实时表。这样您就可以获得正确的日志记录,并且您可以在运行 SP 时仅在数据库中拥有一个范围严格的事务(即您不需要跨越所有网络 IO 的事务)。

另外一点;如果您正在处理大量数据,您可能不想加载 DataTable(因为这会强制您首先在内存中缓冲所有数据);作为替代方案,也可以编写自己的 IDataReader 从流(例如文件等)中提取数据;参见 SimpleDataReader here . SqlBulkCopy 将非常愉快地接受来自 IDataReader 的数据。

关于c# - 如何将数组/数据表等变量传递给 SQL Server?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/251271/

相关文章:

c# - 控制 C# 中的中心面板滚动

javascript - 如何使用javascript为html中的按钮添加消息框

sql - 一道简单的sql查询题

php - sql中的第2组AND语句

c# - 仅垂直移动表单

c# - 如何将编译后的代码同步到多个 EC2 实例

c# - 创建 Windows 服务时 SchedularCallBack 出错

mysql - 此 SQL 条件会排除 NULL 值吗?

sql-server - INSERT 触发器是否递归或导致无限循环?

sql-server - 找出 SQL Azure 中哪个查询增加了 DTU