首页 >数据库 >mysql教程 >如何使用参数化表值参数和 C# 高效地将多行插入 SQL Server 2008 数据库?

如何使用参数化表值参数和 C# 高效地将多行插入 SQL Server 2008 数据库?

Patricia Arquette
Patricia Arquette原创
2025-01-12 08:42:45210浏览

How Can I Efficiently Insert Multiple Rows into a SQL Server 2008 Database using Parameterized Table-Valued Parameters and C#?

使用 C# 和表值参数优化 SQL Server 2008 中的批量数据插入

将大量行单独插入 SQL Server 2008 数据库会显着影响性能。 本文演示了一种使用参数化表值参数和 C# 的更有效方法。

定义用户定义的表类型

首先在 SQL Server 中创建一个用户定义的表类型来镜像目标表的结构:

<code class="language-sql">CREATE TYPE MyTableType AS TABLE
(
    Col1 int,
    Col2 varchar(20) 
)
GO</code>

创建存储过程

接下来,创建一个存储过程,接受此表类型作为输入并执行批量插入:

<code class="language-sql">CREATE PROCEDURE MyProcedure
(
    @MyTable dbo.MyTableType READONLY -- Readonly is crucial for table-valued parameters
)
AS
BEGIN
    INSERT INTO MyTable (Col1, Col2)
    SELECT Col1, Col2 
    FROM @MyTable;
END;
GO</code>

数据插入的 C# 实现

最后,使用 C# 填充 DataTable 并将其作为表值参数传递给存储过程:

<code class="language-csharp">DataTable dt = new DataTable();
dt.Columns.Add("Col1", typeof(int));
dt.Columns.Add("Col2", typeof(string));

// Populate the DataTable with your data

using (SqlConnection con = new SqlConnection("ConnectionString"))
{
    using (SqlCommand cmd = new SqlCommand("MyProcedure", con))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@MyTable", dt); // AddWith Value handles SqlDbType automatically
        con.Open();
        cmd.ExecuteNonQuery();
    }
}</code>

此方法利用表值参数的强大功能,显着提高从 C# 应用程序将多行插入 SQL Server 2008 数据库的效率。 与单独行插入相比,这种方法提供了卓越的性能。

以上是如何使用参数化表值参数和 C# 高效地将多行插入 SQL Server 2008 数据库?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn