微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 无法在我的查询中添加User-Defined-Data Type参数

我正在尝试使用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,则会出现以下异常:指定的类型未在目标服务器上注册.system.int32,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089.

如果我将DbType属性设置为Int(它是“MyBolean”的基本类型),则结果是异常无法将参数值从Int32转换为IEnumerable1 .`.

编辑:

修改标题,因为在sql Server 2008中,它是“用户定义数据类型”而没有“用户定义的类型”

解决方法

SqlDbType@R_404_6250@Structured用于表示您正在传递 Table Value Parameter,这就是为什么您收到的错误消息,因为您传入的值是整数,而不是“某事物列表” “用作TVP.

您需要根据MyBolean的基础数据类型设置param.sqlDbType,我怀疑它可能是Bit或Int.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐