質問

どうすれば確認できますか NULL オープンの価値 MySqlDataReader?

以下は機能しません。それは常にヒットしています else:

if (rdr.GetString("timeOut") == null)
{
    queryResult.Egresstime = "Logged in";
}
else
{
    queryResult.Egresstime = rdr.GetString("timeOut");
}

rdr.IsDbNull(int i) 名前ではなく、列番号のみを受け入れます。

役に立ちましたか?

解決

var ordinal = rdr.GetOrdinal("timeOut");
if(rdr.IsDBNull(ordinal)) {
  queryResult.Egresstime = "Logged in";
} else {
  queryResult.Egresstime = rdr.GetString(ordinal);
}//if

また

if(Convert.IsDBNull(rdr["timeOut"])) {
  queryResult.Egresstime = "Logged in";
} else {
  queryResult.Egresstime = rdr.GetString("timeOut");
}//if

他のヒント

if(rdr.getString( "Timeout")== dbnull.Value)

null と同じではありません DBNull

申し訳ありませんが、間違った答え、サムBは正しいです。私はこれを間違えました DataRow もの。

Sqldatareaderは強く入力されています GetString() と提供します IsDBNull(int column) この場合。

あなたは電話する必要があります rdr.IsDBNull(column) 値があるかどうかを判断します DbNull.

nullフィールドから取得するオブジェクトをと比較できます dbnull.value.

変化する nullDBNull.Value.

あなたもできます:

If (string.IsNullOrEmpty(rdr.GetString("timeOut"))

これが私が好きなものです:

var MyString = rdr["column"] is DBNull ? "It's null!" : rdr.GetString("column");

例えば (元の要件の場合):

queryResult.Egresstime = rdr["timeOut"] is DBNull ? "Logged in" : rdr.GetString("timeOut");

これが私が読むために作成した方法です DBNull aを返します default(T) 万一に備えて:

   private T GetNullable<T>(MySqlDataReader reader, int ordinal, Func<int, T> getValue)
        {
            if (reader.IsDBNull(ordinal))
            {
                return default(T);
            }
            return getValue(ordinal);
        }

このように使用できます。

   if (reader.Read())
            {
                account = new Account();
                account.Id = reader.GetInt32(0);
                account.Name = reader.GetString(1);
                account.MailVerifiedAt = GetNullable(reader, 2, reader.GetDateTime);
                account.MailToken = GetNullable(reader, 3, reader.GetString);
            }

一般的なタイプ T の返品値に基づいて解決されます reader.- 方法。文字列を返すと、を受け取ります null の場合には DBNull. 。それが int それは戻ってきます 0, 、など

注:整数値については、 0 ので注意してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top