19

NULLopenの値を確認するにはどうすればよいMySqlDataReaderですか?

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

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

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

4

9 に答える 9

33
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
于 2011-01-19T19:39:22.793 に答える
14

if(rdr.GetString("timeOut") == DBNull.Value)

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

すみません、間違った答えです。Sam B が正しいです。私はこれをものと間違えましたDataRow

SqlDataReader は厳密に型指定されGetString()ておりIsDBNull(int column)、このケースに対応しています。

于 2011-01-19T19:20:42.483 に答える
4

rdr.IsDBNull(column)値がであるかどうかを判断するには、を呼び出す必要がありますDbNull

于 2011-01-19T19:35:34.480 に答える
2

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

于 2013-01-11T10:40:11.953 に答える
1

次のこともできます。

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

于 2011-01-19T19:23:32.743 に答える
1

に変更nullDBNull.Valueます。

于 2011-01-19T19:21:48.983 に答える