【问题标题】:How to insert multiple records in a table through single call如何通过单个调用在表中插入多条记录
【发布时间】:2014-05-21 05:04:22
【问题描述】:

我的数据库表结构如下:

表名:StructureTable

Field 1: FiledName
Field 2: FieldValue
Field 3: Comments

存储过程如下:

       3 input param:@FiledName,@FieldValue,@Comments

       BEGIN
              INSERT INTO StructureTable (FiledName,FieldValue,Comments) Values(@FiledName,@FieldValue,@Comments)


       END

现在,我将从前端插入 7 个字段,如下所示:

FieldName | FieldValue |    Comment 
---------------------------------------
  Name        John        name insert
Profession   Analyst       Profession

...

我创建了一个包含insert/update 脚本的程序。

问题:我不想进行 7 次调用以将 7 个字段插入数据库。

我想像上面一样打一个电话并输入 7 个字段。

请提出任何方法或分享任何代码来实现这一目标。

我正在使用SQL Server 2008ADO.NET

谢谢

【问题讨论】:

  • 我还没有写代码。我想知道方法。现在,我只想对 sql 进行多次插入调用。
  • 但是你说你做了一个程序。
  • 批量插入或类似的东西怎么样 - blog.sqlauthority.com/2012/08/29/…

标签: sql-server sql-server-2008 ado.net user-defined-types


【解决方案1】:

由于您同时使用 Sql Server 2008 和 ADO.Net,完成传递多组参数任务的推荐方法是使用 Table Valued Parameter。该文档链接还概述了开发人员过去使用的其他方法,例如逗号分隔的字符串、xml 文档或批量复制。 DataTables 也是可能的,但如果您还没有使用它们,则不是必需的。 TVP 是 Microsoft 专门针对这种情况提供的技术。

一旦您在数据库中创建了 User-Defined-Table-Type,并获得了 ADO.Net 代码设置来填充该 TVP 的实例,您将想知道如何填充它,这并不总是显而易见的.您可以使用 DataTable,这是 BAdmin 提供的链接示例。不幸的是,他没有很好地解释您没有将 DataTable 发送到存储过程,而是从 DataTable 填充 TVP。您还可以使用 DataReader(如果您正在从另一个结果集中读取参数值,但您不是)或 IEnumerable<SqlDataRecord>,一旦掌握了它就很容易创建(请参阅 SqlDataRecord)。这是一个关于设置一个从对象列表中提供 SqlDataRecord 枚举器的类的优秀教程:http://lennilobel.wordpress.com/2009/07/29/sql-server-2008-table-valued-parameters-and-c-custom-iterators-a-match-made-in-heaven/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 2020-10-18
    • 2018-12-03
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    相关资源
    最近更新 更多