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