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

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

Patricia Arquette
发布: 2025-01-12 08:42:45
原创
209 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板