关于“比特”的问题数据类型
本文关键字:问题 数据类型 比特 关于 | 更新日期: 2023-09-27 18:01:48
public static bool CheckIfUserISbanned(Guid guid)
{
StringBuilder sb = new StringBuilder();
sb.Append("SELECT Banned");
sb.Append(" FROM dbo.Users");
sb.Append(" WHERE UsersID=@UserID");
object o;
bool isBanned = false;
string myConnectionString = AllQuestionsPresented.connectionString;
using (SqlConnection conn = new SqlConnection(AllQuestionsPresented.connectionString))
{
SqlCommand cmd = new SqlCommand(sb.ToString(), conn);
conn.Open();
cmd.Parameters.Add("@UserID", SqlDbType.UniqueIdentifier).Value = guid;
o = cmd.ExecuteScalar();
}
isBanned = o == null ? false : true;//Problem here
return isBanned;
}
问题是对象总是接收到一个非空值。但在禁止字段的用户表中,我将其类型设置为"允许null"…我可以看到有null,但是没有检索到null ..这使得"isprohibited"参数一直为真…为什么它会发生,我怎么知道当对象是bool True
如果您的数据库查询在SQL中返回NULL
,则在。net中转换为DBNull
。所以不检测null
,检测DBNull.Value
您应该在表达式
DBNull.Value
。try this:
isBanned = o == null ? false : true;
还可以使用string.Empty
:
isBanned = o == string.Empty ? false : true;