2011-07-11 6 views
0
public static bool CheckIfUserISbanned(Guid guid) 
{ 
    StringBuilder sb = new StringBuilder(); 
    sb.Append("SELECT Banned"); 
    sb.Append(" FROM dbo.Users"); 
    sb.Append(" WHERE [email protected]"); 
    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でない値を受け取ることです。しかし、禁止されたフィールドのUsersテーブルでは、そのタイプを "Allow Nulls"に設定しました...ヌルがあることがわかりましたが、ヌルが検索されませんでした。他のものは.. "isBanned"真実..いつも..なぜそれが起こっているのか、そしてその物体がいつ真実であるかを私は知ることができます。"bit"データ型に関する質問

答えて

6

データベースクエリーでSQLでNULLが返された場合、これは.NETでDBNullに変換されます。したがって、nullをテストするのではなく、DBNull.Valueをテストしてください。

+0

良いです。グラハム!!!それは働いた – WithFlyingColors

1

あなたはこれを試してみてください、あなたの表現でDBNull.Valueため

-1

をテストする必要があります:文字列がstring.Emptyを使用して、空であるかどうか

isBanned = o == null ? false : true; 

もチェック:

isBanned = o == string.Empty ? false : true;