c# – 无法在我的查询中添加User-Defined-Data Type参数
发布时间:2020-12-15 17:16:41 所属栏目:百科 来源:网络整理
导读:我正在尝试使用C#和SQL Server 2008的用户定义数据类型,但是当执行command.ExecuteReader()时我引发了异常. string qyery = "SELECT * FROM Product WHERE IsAvailableProduct @Param";SqlCommand command = new SqlCommand(qyery,conn);SqlParameter param
我正在尝试使用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(); 引发的例外是:
我的代码有什么问题? 编辑: 如果我将SqlDbType更改为Udt,则会出现以下异常:指定的类型未在目标服务器上注册.System.Int32,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089. 如果我将DbType属性设置为Int(它是“MyBolean”的基本类型),则结果是异常无法将参数值从Int32转换为IEnumerable1 .`. 编辑: 我修改了标题,因为在SQL Server 2008中,它是“用户定义数据类型”而没有“用户定义的类型” 解决方法SqlDbType 枚举值Structured用于表示您正在传递
Table Value Parameter,这就是为什么您收到的错误消息,因为您传入的值是整数,而不是“某事物列表” “用作TVP.
您需要根据MyBolean的基础数据类型设置param.SqlDbType,我怀疑它可能是Bit或Int. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |