1

問題の定義:SQLServer データベースにテーブルがあります。このテーブルにはimage型の列があり、null値を許可します。を使用してこの表を読み、SqlDataReader利用可能な場合は画像を表示します。

私が最初に試したこと:画像列がnullかどうかを確認するためにこれを行いました

SqlDataReader reader = command.ExecuteReader();  // command is a SqlCommand

while(reader.Read())
{
    if(reader["Image"] != null)     // Image is a column name of the table
    {
        //Do something
    }
}

結果:しかし、nullに等しくなることはありません(Equalメソッドもチェックしました)。データが挿入されていなくても、この列がnullになることはありません(SQL Serverでは、実際にはnullであることがわかります)

2回目に試したこと:このコードとその動作を試しましたが、なぜnullが返されないのでしょうか。

SqlDataReader reader = command.ExecuteReader();  // command is a SqlCommand

while(reader.Read())
{
    if(reader["Image"].GetType() != typeof(System.DBNull)) 
    {
        //Do something
    }
}

質問:この振る舞いを説明するアイデアはありますか?SQLServerテーブルのImageタイプの列がnullであるかどうかを確認するためのより良い方法があれば嬉しいです。

4

1 に答える 1

4

この方法で確認する必要がありますDbNull

if(reader["Image"] != DbNull.Value)     // Image is a column name of the table
{
    //Do something
}
于 2013-02-16T16:18:56.143 に答える