【发布时间】:2022-04-19 05:14:00
【问题描述】:
我正在尝试在 C# 和 SQL Server 2008 中使用用户定义的数据类型,但在执行 command.ExecuteReader() 时出现异常。
string qyery = "SELECT * FROM Product WHERE IsAvailableProduct < @Param";
SqlCommand command = new SqlCommand(qyery, conn);
SqlParameter param = new SqlParameter("@Param", SqlDbType.Structured);
param.UdtTypeName = "MyBolean";
param.SqlDbType = SqlDbType.Structured;
param.Value = 1;
command.Parameters.Add(param);
SqlDataReader reader = command.ExecuteReader();
引发的异常是:
Failed to convert parameter value from a Int32 to a IEnumerable``1.
我的代码有什么问题?
编辑:
如果我将 SqlDbType 更改为 Udt,则会出现以下异常:Specified type is not registered on the target server.System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
如果我将 DbType 属性设置为 Int(它是“MyBolean”的基本类型),则结果会引发异常 Failed to convert parameter value from a Int32 to a IEnumerable1.``也是。
编辑:
我修改了标题,因为在 SQL Server 2008 中,它是“用户定义数据类型”而不是“用户定义类型”
【问题讨论】:
-
我建议您在问题中添加 UDT 的定义 =)
标签: c# sql sql-server-2008 user-defined-types