首页 > 后端开发 > C++ > C# 如何高效地将参数化数据批量插入数据库?

C# 如何高效地将参数化数据批量插入数据库?

Patricia Arquette
发布: 2025-01-03 21:18:09
原创
991 人浏览过

How Can C# Efficiently Bulk Insert Parameterized Data into a Database?

使用 C# 将参数化变量批量插入数据库

高效地将大量参数化变量插入数据库是开发人员面临的常见挑战。 C# 提供了一种使用表值参数和存储过程在单个查询中插入多行的解决方案。

创建用户定义的表类型

首先创建一个镜像目标数据库结构的用户定义表类型表:

CREATE TYPE MyTableType AS TABLE
(
    Col1 int,
    Col2 varchar(20) 
)
GO
登录后复制

定义存储过程

接下来,创建一个存储过程,接受新创建的表类型作为输入参数:

CREATE PROCEDURE MyProcedure
(
    @MyTable dbo.MyTableType READONLY -- NOTE: table valued parameters must be Readonly!
)
AS

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

GO
登录后复制

该存储过程会将 @MyTable 表类型中的数据插入到 MyTable 表中

从 C# 执行存储过程

最后,使用以下代码从 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();
    }
}
登录后复制

使用表值的优点参数

使用表值参数有几个优点:

  • 高效:单个查询替换多个插入语句,显着提高性能。
  • 参数化:数据以参数化的方式传递,降低了风险SQL注入攻击。
  • 可扩展:可以在不改变存储过程的情况下修改用户定义的表类型以匹配不同的场景。

以上是C# 如何高效地将参数化数据批量插入数据库?的详细内容。更多信息请关注PHP中文网其他相关文章!

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