首页 > 后端开发 > C++ > 如何有效地将字符串列表从 C# 传递到 SQL Server 存储过程?

如何有效地将字符串列表从 C# 传递到 SQL Server 存储过程?

Susan Sarandon
发布: 2025-01-04 22:35:40
原创
775 人浏览过

How Can I Efficiently Pass a List of Strings from C# to a SQL Server Stored Procedure?

C# SQL Server:将列表传递给存储过程

在 C# 中,可以通过代码调用 SQL Server 存储过程。然而,传递字符串列表并不简单。本文探讨了使用用户定义表类型 (UDT) 的替代方法。

创建用户定义表类型 (UDT)

SQL Server 2008 引入了 UDT ,它提供了一种将复杂数据类型传递给存储过程的结构化方法。要为字符串列表创建 UDT:

CREATE TYPE [dbo].[StringList] AS TABLE(
    [Item] [NVARCHAR](MAX) NULL
);
登录后复制

修改存储过程

要接受 UDT 参数,需要按如下方式修改存储过程:

CREATE PROCEDURE [dbo].[sp_UseStringList]
    @list StringList READONLY
AS
BEGIN
    -- Just return the items we passed in
    SELECT l.Item FROM @list l;
END
登录后复制

从 C# 传递列表代码

最后,这是如何从 C# 代码传递列表:

using System.Data;

var con = new SqlConnection(connstring);
con.Open();

using (SqlCommand cmd = new SqlCommand("exec sp_UseStringList @list", con))
{
    using (var table = new DataTable())
    {
        table.Columns.Add("Item", typeof(string));

        for (int i = 0; i < 10; i++)
            table.Rows.Add("Item " + i.ToString());

        var pList = new SqlParameter("@list", SqlDbType.Structured);
        pList.TypeName = "dbo.StringList";
        pList.Value = table;

        cmd.Parameters.Add(pList);

        using (var dr = cmd.ExecuteReader())
        {
            while (dr.Read())
                Console.WriteLine(dr["Item"].ToString());
        }
    }
}
登录后复制

结论

使用 UDT 是一种有效的方法将字符串列表从 C# 代码传递到 SQL Server 存储过程的方法。通过遵循上述步骤,开发人员可以在数据库交互中轻松处理动态和大型字符串列表。

以上是如何有效地将字符串列表从 C# 传递到 SQL Server 存储过程?的详细内容。更多信息请关注PHP中文网其他相关文章!

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