She*_*med 7 c# sql-server stored-procedures table-variable
我真正想要做的是我想向 SQL Server 发送一个字符串数组。我正在使用 SQL Server 2008。
这可以标记为重复,但在从 stactoverflow 实施解决方案时,我面临着另一个问题
这是我的 C# 和存储过程代码
C#代码:
string[] str = new string[] {"s" , "a" , "k"};
DataTable dt = new DataTable();
dt.Columns.Add("names");
foreach (string item in str)
{
dt.Rows.Add(item);
}
foreach (DataRow r in dt.Rows)
{
Console.WriteLine(r["names"].ToString());
}
DataTable tvp = new DataTable();
SqlConnection conn = new SqlConnection("Data Source=SHZAK;Initial Catalog=synchroniztionTesing;Integrated Security=True");
conn.Open();
using (conn)
{
SqlCommand cmd = new SqlCommand("strpdPassAnStringArray", conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter tvparam = cmd.Parameters.AddWithValue("@List", tvp);
tvparam.SqlDbType = SqlDbType.Structured;
cmd.ExecuteScalar();
}
Run Code Online (Sandbox Code Playgroud)
在制作存储过程之前,我创建了一个自定义类型:
CREATE TYPE dbo.arrayOfNames
AS TABLE
(
name nvarchar(max)
);
Run Code Online (Sandbox Code Playgroud)
存储过程代码:
CREATE PROCEDURE [dbo].[strpdPassAnStringArray]
@List AS dbo.arrayOfNames READONLY
AS
BEGIN
SET NOCOUNT ON;
SELECT name FROM @List;
END
Run Code Online (Sandbox Code Playgroud)
但是在应用程序代码中,它引发了这个异常:
结构化类型中的字段不足。结构化类型必须至少有一个字段。
在线的
cmd.ExecuteScalar();
Run Code Online (Sandbox Code Playgroud)
回答:
问这个问题我太愚蠢了,但至少现在我知道是什么导致了这个异常
如果您的 DataTable 是空的,就像我的情况一样,可以引发此异常
string[] str = new string[] {"sheraz" , "ahmed" , "khan"};
DataTable tvp = new DataTable();
tvp.Columns.Add("names");
foreach (string item in str)
{
tvp.Rows.Add(item);
}
foreach (DataRow r in tvp.Rows)
{
Console.WriteLine(r["names"].ToString());
}
SqlConnection conn = new SqlConnection("Data Source=SHZAK;Initial Catalog=synchroniztionTesing;Integrated Security=True");
conn.Open();
using (conn)
{
SqlCommand cmd = new SqlCommand("strpdPassAnStringArray", conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter tvparam = cmd.Parameters.AddWithValue("@List", tvp);
tvparam.SqlDbType = SqlDbType.Structured;
cmd.ExecuteScalar();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10767 次 |
| 最近记录: |