C#将DataTable转换成SQL Server存储过程 [英] C# DataTable into SQL Server stored procedure
问题描述
我在C#中有一个 DataTable
,我试图将其传递给SQL Server。
I have a DataTable
in C#, and I'm trying to pass it to SQL Server.
我所拥有的是:
DataTable asd = new DataTable();
for (int i = 0; i < LocationDataList.Count; i++)
{
asd.Columns.Add(LocationDataList[i], typeof(string));
}
command.Parameters.Add("@PLocationDataList", SqlDbType.NVarChar, -1).Value = asd;
command.ExecuteNonQuery();
以下是程序T-SQL;
Here is the procedure T-SQL;
ALTER PROCEDURE [Sade].[SPLocationInsert]
@... INT
,@... VARCHAR(64)
,@... VARCHAR(MAX)
,@... INT
,@... INT
,@... INT
,@... INT
,@... INT
,@PLocationDataList NVARCHAR(MAX)
AS
我不知道如何传递 DataTable
以及我应该使用的数据类型。
I have no idea how to pass the DataTable
and which data type I should use.
提前感谢
Thanks in advance
推荐答案
在SQL Server中创建用户定义的表类型:
Create a user defined table type in SQL Server:
CREATE TYPE LocationTableType AS TABLE
( LocationName VARCHAR(50));
GO
并将此表值参数传递给存储过程:
And pass this table valued parameter to the stored procedure :
CREATE PROCEDURE [Sade].[SPLocationInsert]
@... INT
,@... VARCHAR(64)
,@... VARCHAR(MAX)
,@... INT
,@... INT
,@... INT
,@... INT
,@... INT
,@PLocationDataList LocationTableType READONLY
AS
SET NOCOUNT ON
-- insert your code here
GO
参考文献:
用户定义的表格类型: https://technet.microsoft.com/en- us / library / bb522526(v = sql.105).aspx
User defined table types : https://technet.microsoft.com/en-us/library/bb522526(v=sql.105).aspx
表值参数: https://technet.microsoft.com/en-us/library/bb510489(v = sql.105)。 aspx
这篇关于C#将DataTable转换成SQL Server存储过程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!