当前位置: 首页 > 知识库问答 >
问题:

如何使用SqlDataReader获得位值并将其转换为bool?

陆子石
2023-03-14

我正在使用简单的查询从数据库中检索用户信息。

select * from dbo.[User] u where u.Email = @email

然后,我尝试获取一个名为isconfired的列(在数据库中表示为位类型列)的值,并将其转换为bool。

bool isConfirmed = int.Parse(sqlDataReader["IsConfirmed"].ToString()) == 1;

然后我得到一个FormatException错误,指出“输入字符串的格式不正确”。

我看到了一个类似的问题,其答案提供了以下代码

bool isConfirmed = sqlDataReader.GetBoolean(0);

但这不适用于我的案例,因为我不知道isconfired列的索引,也不想知道它。我想使用列名。

共有3个答案

黄弘新
2023-03-14

如果列isconfirm中没有任何空值,那么代码应该可以工作
通常这些位列具有NOT NULL属性和/或默认值0,但它可能恰好具有NULL值,在这种情况下,您的代码将失败并出现上述错误。

你可以用这种方式来修复它(但是你需要这个检查的列位置)

int colPos = sqlDataReader.GetOrdinal("IsConfirmed");
bool isConfirmed = sqlDataReader.IsDBNull(colPos) ? false : sqlDataReader.GetBoolean(colPos));

如果你真的不喜欢有一个调用来找到列位置,你可以创建一个扩展方法,允许你隐藏调用

public static class ReaderExtensions
{
    public static bool IsDBNull(this SqlDataReader reader, string colName)
    {
        int colPos = reader.GetOrdinal(colName);
         return reader.IsDBNull(colPos);
    }
}

并称之为

bool isConfirmed = int.Parse((sqlDataReader.IsDBNull("IsConfirmed") 
                    ? "0" : sqlDataReader["IsConfirmed"].ToString())) == 1;
杜高谊
2023-03-14

如果要使用列名,可以使用

bool isConfirmed = sqlDataReader.GetBoolean(sqlDataReader.GetOrdinal("IsConfirmed"));
池麒
2023-03-14

从数据读取器索引器属性返回的值属于object类型,但可以转换为它存储为的数据类型。

试试这个:

bool isConfirmed = (bool)sqlDataReader["IsConfirmed"]
 类似资料:
  • 问题内容: 如您所见,此示例代码将打印出JSON 的 KEY ,然后打印JSONS的 VALUES 。 如果json是这样的,它将打印 配置文件,约翰 : 这很酷。很好,因为我可以使用这些变量。但是,如果JSON是这样的: 在这种情况下,整个值将是数组。基本上,我只想获取该数组(在本例中为“值”)…并将其转换为JAVA可以使用的实际数组。我怎样才能做到这一点?谢谢。 问题答案: 例如: 您将必须执

  • 问题内容: 在我的数据库中,我具有NextStatDistanceTime值作为浮点数。执行“ ”行时,出现错误 系统无效的强制转换异常 如何在此代码中从sql命令获取浮点值? 这是我的代码: 问题答案: 我想是时候放一张桌子了。 T-SQL类型名称 相当于.NET C#类型名称 `DataReader` 方法 `FLOAT` `System.Double` `double` `IDataRead

  • 问题内容: 到目前为止,这就是我所拥有的:我传递一个具有2个字段的对象:String和Integer作为参数,并且我想发送信息以在C部分中对其进行处理,这在当时并不重要…我抱怨在jstring声明 我想念什么? 问题答案: ……然后一切正常。

  • 我将一个即时转换为LocalDate,下面是我的实现: 但是,我在Junit测试中遇到了异常:java.time.DateTimeException:Year的值无效(有效值-9999999999-99999999):-1000000000 有人能帮忙吗? 谢谢!

  • 问题内容: 我想播放现在以JSON格式保存的数据。但是我对R非常陌生,对如何处理数据一无所知。您可以在下面看到我设法实现的目标。但首先,我的代码: 我能够得到数据: 尽管输出看起来很原始: 请注意,JSON有点嵌套。我可以使用Python创建表,但是R似乎要复杂得多。 编辑: 我的JSON: 问题答案: 返回一个列表,您可以使用函数来遍历每个元素。将其转换为“表”非常简单(一旦您知道该怎么做!)(

  • 我花了一天左右的时间试图解决这个问题,我对发生的事情有点困惑。 本质上,我有这个方法,以便将BGR整数转换为RGB,并创建一个颜色出来 颜色代码可以在这里找到http://www.endprod.com/colors/ 这很好,但我现在尝试将其作为RGBA整数而不是RGB。我有点搞不清楚Alpha到底是如何适合RGB整数的。看起来,如果你只有RGB或BGR,或者任何你可以制作alpha 1.0/2