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

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

然后,我尝试获取名为IsConfirmed的列(在数据库中表示为位类型的列)的值,并将其转换为bool。
bool isConfirmed = int.Parse(sqlDataReader["IsConfirmed"].ToString()) == 1;

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

我看到了一个类似的问题,答案提供了以下代码:
bool isConfirmed = sqlDataReader.GetBoolean(0);

但这对我的情况不起作用,因为我不知道IsConfirmed列的索引,也不想知道。我想使用列名。

最佳答案

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

试试这个:

bool isConfirmed = (bool)sqlDataReader["IsConfirmed"]

09-07 14:37