1. ホーム
  2. c#

DBNull if文

2023-08-20 02:10:39

質問

ストアドプロシージャを実行し、if文を使用してNULL値をチェックしようとしているのですが、うまくいきません。私はVBの人なので、私が小学生の構文エラーを犯しているならば、どうか我慢してください。

objConn = new SqlConnection(strConnection);
objConn.Open();
objCmd = new SqlCommand(strSQL, objConn);
rsData = objCmd.ExecuteReader();
rsData.Read();

if (!(rsData["usr.ursrdaystime"].Equals(System.DBNull.Value)))
        {
            strLevel = rsData["usr.ursrdaystime"].ToString();

        }

これによって、SQL接続が単なる値を返しているかどうかをチェックし、もしそうなら文字列を入力することができるでしょうか?

私は、値が返されているかどうかを確認するために、以下をチェックすることができることに慣れています。

If Not IsDBNull(rsData("usr.ursrdaystime")))

どんな助けでも感謝します!

どのように解決するのですか?

これは動作するはずです。

if (rsData["usr.ursrdaystime"] != System.DBNull.Value))
{
    strLevel = rsData["usr.ursrdaystime"].ToString();
}

のように、using文を追加する必要があります。

using (var objConn = new SqlConnection(strConnection))
     {
        objConn.Open();
        using (var objCmd = new SqlCommand(strSQL, objConn))
        {
           using (var rsData = objCmd.ExecuteReader())
           {
              while (rsData.Read())
              {
                 if (rsData["usr.ursrdaystime"] != System.DBNull.Value)
                 {
                    strLevel = rsData["usr.ursrdaystime"].ToString();
                 }
              }
           }
        }
     }

これはブロック{ ... }の外側にあるリソースを自動的に廃棄(クローズ)するものです。}.