本指南演示如何将字符串列表作为参数从 C# 应用程序传递给 SQL Server 存储过程。 此方法使用用户定义的表类型(UDTT),适用于 SQL Server 2008 及更高版本。
首先,在 SQL Server 中创建一个 UDTT 来表示您的字符串列表:
<code class="language-sql">CREATE TYPE [dbo].[StringList] AS TABLE( [Item] [NVARCHAR](MAX) NULL );</code>
接下来,修改您的存储过程以接受 UDTT 作为输入:
<code class="language-sql">CREATE PROCEDURE [dbo].[sp_UseStringList] @list StringList READONLY AS BEGIN -- Process the string list SELECT l.Item FROM @list l; END</code>
以下是如何在 C# 代码中使用 UDTT:
<code class="language-csharp">using (SqlConnection con = new SqlConnection(connstring)) { con.Open(); using (SqlCommand cmd = new SqlCommand("sp_UseStringList", con)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@list", CreateStringListTable(new List<string> { "Apple", "Banana", "Orange" })); using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { // Process each string from the reader string item = reader["Item"].ToString(); Console.WriteLine(item); } } } } //Helper function to create the DataTable private DataTable CreateStringListTable(List<string> stringList) { DataTable dt = new DataTable(); dt.Columns.Add("Item", typeof(string)); foreach (string str in stringList) { dt.Rows.Add(str); } return dt; }</code>
出于测试目的,您可以直接在 SQL Server Management Studio (SSMS) 中执行存储过程,如下所示:
<code class="language-sql">DECLARE @list AS StringList; INSERT INTO @list VALUES ('Apple'); INSERT INTO @list VALUES ('Banana'); INSERT INTO @list VALUES ('Orange'); EXEC sp_UseStringList @list;</code>
当从 C# 应用程序与 SQL Server 存储过程交互时,此方法提供了一种强大而有效的方法来处理字符串列表。 与其他方法相比,使用 UDTT 可确保数据完整性并提高性能。
以上是如何在 C# 中将字符串列表传递给 SQL Server 存储过程?的详细内容。更多信息请关注PHP中文网其他相关文章!