首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >布尔强制转换指定的强制转换不是将值从case语句传递给reader.GetBooleanVal的有效错误。

布尔强制转换指定的强制转换不是将值从case语句传递给reader.GetBooleanVal的有效错误。
EN

Stack Overflow用户
提问于 2020-02-20 21:10:33
回答 1查看 122关注 0票数 1

当我遍历reader.GetBooleanVal循环时,当我点击reader.GetBooleanVal时所得到的错误是“指定的强制转换无效”。但在我的选择声明中,一切似乎都是正确的。不知道为什么我会得到这个例外。

我的目标是取决于我要返回的某个值--我正在更改另一列的结果,为什么我要使用case语句.任何帮助都将不胜感激。

代码语言:javascript
复制
 List<CollectionCodeParameter> list = new List<CollectionCodeParameter>();
        var sql = @"IF EXISTS (SELECT 1 FROM dbo.[collcode_Agency_Codes])
            BEGIN
                select
                  [collcode],
                   case when([collcode] = 'PIE')  then 1
                else 0
               end as [fin_hold],
                 FROM[dbo].[collcode_Agency_Codes]
            WITH(NOLOCK)
      WHERE type = @AgencyType
            END";
          ....code....

        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            var ordinals = reader.GetOrdinals();
            while (reader.Read())
            {
                CollectionCodeParameter item = new CollectionCodeParameter();

                item.FinancialHold = reader.GetBooleanVal(ordinals.GetOrdinal("fin_hold")).HasValue ? 
                reader.GetBooleanVal(ordinals.GetOrdinal("fin_hold")).Value : false; ;


                list.Add(item);
            }

错误来自下面。我的fin_hold在我的表定义中有一点。

代码语言:javascript
复制
public static bool? GetBooleanVal(this SqlDataReader reader, int ordinal)
    {
        if (ordinal < 0) return null;
        return reader.IsDBNull(ordinal) ? null : (bool?)reader.GetBoolean(ordinal);
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-20 21:40:09

它将帮助您调试解决您缩短的if语句,这样您就可以逐行调试它。

我现在无法尝试SQL,所以我不得不猜测:

在SQL中,case语句不是返回bit,而是返回int

代码语言:javascript
复制
case when([collcode] = 'PIE')
    then 1
    else 0
end as [fin_hold],

编辑:

我的fin_hold在我的表定义中有一点。

您不是返回您的列,而是从您的案例陈述中返回一个数字。别名as [fin_hold]与表定义无关。

试试这个:

代码语言:javascript
复制
case when([collcode] = 'PIE')
    then Cast(1 as bit)
    else Cast(0 as bit)
end as [fin_hold],
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60328562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档