6

C# について質問があります。System.DBNullを DataReader と組み合わせて使用​​することについてコミュニティに質問したかっただけです。

データベースにクエリを実行して null 値をチェックする場合、どちらがより適切/優先されますか?

' is ' 演算子の使用:

reader["fieldname"] is DBNull

または値を確認するだけです:

reader["fieldname"] == DBNull.Value

どちらも機能しているようです。他の意見を聞きたかっただけです。

4

3 に答える 3

7

DBNull.Valueそれがクラスの唯一の非 null 値であることを考えるとDBNull、この 2 つは事実上同等です。どちらがより読みやすいと思いますか? 個人的には最初のバージョンがとても気に入っていますが、マイレージは異なる場合があります。

いずれにせよ、パフォーマンスの面で問題になることはまずありません。

于 2012-06-19T15:10:48.383 に答える
4

この方法でも確認できます:

Convert.IsDBNull(reader["field name"]);
于 2012-06-19T15:11:03.390 に答える
2

ほとんどの変換と同等性のチェックにConvertを使用する傾向があるため、Microsoftは一般的にConvert.IsDBNullの使用を推奨していると思います。

http://msdn.microsoft.com/en-us/library/system.dbnull.aspxから:

データベースフィールドから取得した値がDBNull値であるかどうかを判断するには、そのフィールドの値をDBNull.Value.Equalsメソッドに渡します。ただし、一部の言語とデータベースオブジェクトは、データベースフィールドの値がDBNull.Valueであるかどうかを簡単に判断できるメソッドを提供します。これらには、Visual Basic IsDBNull関数、Convert.IsDBNullメソッド、DataTableReader.IsDBNullメソッド、およびIDataRecord.IsDBNullメソッドが含まれます。

于 2012-06-19T15:16:58.327 に答える