首页 >后端开发 >C++ >如何在 C# 中通过参数化查询高效插入多行?

如何在 C# 中通过参数化查询高效插入多行?

DDD
DDD原创
2025-01-01 04:54:10540浏览

How Can I Efficiently Insert Multiple Rows with Parameterized Queries in C#?

在 C# 中使用单个查询插入多个参数化行

参数化查询允许开发人员在不硬编码值的情况下执行 SQL 语句,从而防止 SQL注入攻击并提高性能。使用参数化值插入多行可以非常高效,尤其是在使用大量行时。

在提供的代码中,每行都是单独插入的,这可能会很慢。为了解决这个问题,您可以利用 SQL Server 2008 及更高版本的表值参数。

创建表值参数

首先,创建一个用户 -定义数据列的定义表类型:

CREATE TYPE MyTableType AS TABLE
(
    Col1 int,
    Col2 varchar(20)
)

创建一个存储过程

接下来,创建一个接受表值参数的存储过程:

CREATE PROCEDURE MyProcedure
(
    @MyTable dbo.MyTableType READONLY 
)
AS

INSERT INTO MyTable (Col1, Col2)
SELECT Col1, Col2 
FROM @MyTable

GO

请注意,@MyTable 参数被标记为 READONLY,因为表值参数必须是只读的。

使用 a 执行存储过程DataTable

最后,使用 DataTable 从 C# 执行存储过程:

DataTable dt = new DataTable();
dt.Columns.Add("Col1", typeof(int));
dt.Columns.Add("Col2", typeof(string));

// Fill your data table here

using (var con = new SqlConnection("ConnectionString"))
{
    using(var cmd = new SqlCommand("MyProcedure", con))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@MyTable", SqlDbType.Structured).Value = dt;
        con.Open();
        cmd.ExecuteNonQuery();
    }
}

通过使用表值参数,您可以使用单个参数化查询插入多行,显着提高性能。

以上是如何在 C# 中通过参数化查询高效插入多行?的详细内容。更多信息请关注PHP中文网其他相关文章!

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