首页 > 数据库 > mysql教程 > 如何使用 C# 高效地将多个参数化行插入数据库?

如何使用 C# 高效地将多个参数化行插入数据库?

Susan Sarandon
发布: 2025-01-12 08:19:42
原创
978 人浏览过

How to Efficiently Insert Multiple Parameterized Rows into a Database using C#?

在 C# 中优化数据库插入:单一参数化查询方法

将大量行单独插入数据库的效率很低。 本文演示了一种在 C# 中使用单个参数化查询来实现批量插入的高性能方法。

关键是利用存储过程和表值参数。 这种方法涉及三个主要步骤:

  1. 定义表类型:

    创建自定义 SQL Server 表类型来定义数据结构,指定列名称和数据类型。

  2. 创建存储过程:

    开发一个存储过程,该过程接受自定义表类型作为只读表值参数。然后,此过程会将数据插入到目标数据库表中。 请记住,表值参数必须READONLY

  3. 实现 C# 代码:

    在您的 C# 应用程序中:

    • 创建一个 DataTable 对象,镜像您的自定义表格类型的结构。
    • 用您想要插入的数据填充此DataTable
    • 执行存储过程,并将 DataTable 作为表值参数传递。

这是说明此过程的示例:

表类型(SQL):

<code class="language-sql">CREATE TYPE MyTableType AS TABLE
(
    Col1 INT,
    Col2 VARCHAR(20)
)
GO</code>
登录后复制

存储过程 (SQL):

<code class="language-sql">CREATE PROCEDURE MyProcedure (@MyTable MyTableType READONLY)
AS
BEGIN
    INSERT INTO MyTable (Col1, Col2)
    SELECT Col1, Col2 FROM @MyTable;
END;
GO</code>
登录后复制

C# 代码:

<code class="language-csharp">using System.Data;
using System.Data.SqlClient;

// ... other code ...

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

// Populate dt with your data here...  e.g.,
//DataRow row = dt.NewRow();
//row["Col1"] = 1;
//row["Col2"] = "Value1";
//dt.Rows.Add(row);


using (SqlConnection con = new SqlConnection("ConnectionString"))
{
    using (SqlCommand cmd = new SqlCommand("MyProcedure", con))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@MyTable", dt); //AddWithValue handles type inference
        con.Open();
        cmd.ExecuteNonQuery();
    }
}</code>
登录后复制

此方法通过减少数据库往返次数显着提高数据库插入效率,从而实现更快、更可扩展的数据处理。

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

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