0

我的用户表有一个名为Adminwhich is的字段tinyint(1)。1 为管理员,0 为普通用户。

我想在用户登录时设置一个会话变量,该变量是真还是假,具体取决于他们是否是管理员。

if ((int)Reader["Admin"] == 0)
{
    HttpContext.Current.Session["Admin"] = false;
}
else
{
    HttpContext.Current.Session["Admin"] = true;
}

Reader是一个SqlDataReader。该代码产生以下错误:

System.InvalidCastException:指定的强制转换无效。

如何正确Reader["Admin"]转换为 int?

4

3 回答 3

3

那是因为 tinyint 变成了 System.Byte 不能显式地转换为 System.Int32

您将不得不使用Convert.ToInt32(Byte)

于 2012-11-15T05:54:28.850 回答
0

tinyintByte在 C# 中转换为。将演员/条件更改为

 (Byte)Reader["Admin"] == 0
于 2012-11-15T05:53:17.300 回答
0

检查以下链接

如何在 c# 中将 t-sql 的“tinyint”转换为整数?

关于 CLR 类型转换的 MSDN 参考

于 2012-11-15T06:13:01.577 回答