DataReader 最佳实践
类似于这个问题,但答案从来没有真正抽出时间来了解我想知道的事情。从 DataReader 获取值是否有任何标准?即,这
dataReader.GetString(dataReader.GetOrdinal("ColumnName"));
被认为更好/更差/与此相同吗?
(string) dataReader["ColumnName"];
Similar to this question, but the answers never really got around to what I want to know. Is there any standards around getting values from a DataReader? I.e., is this
dataReader.GetString(dataReader.GetOrdinal("ColumnName"));
considered better/worse/the same as this?
(string) dataReader["ColumnName"];
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是我的做法:
像上面所示的那样检查
DBNull
非常重要,因为如果DataReader
中的字段为空,那么它会在以下情况下抛出异常:你尝试找回它。Here is the way that I do it:
It is important to check for
DBNull
like I have shown above because if the field is null in theDataReader
it will throw an exception when you try to retrieve it.我创建了一些扩展方法,让我将
IDataReader
视为可枚举,并通过返回可空整数等来处理DbNull
。这让我可以检查 null 并应用使用 C#??
运算符的默认值。...
IDataReader
上的其他GetDataType()
方法依此类推。I made some extension methods to let me treat an
IDataReader
as an enumerable, and to deal withDbNull
by returning nullable ints, etc. This lets me check for null and apply a default value with the C#??
operator....and so on for the other
GetDataType()
methods onIDataReader
.这是一个扩展类;对我来说效果很好。它处理 int 和 boolean 的空值:
This an extension class; it works pretty ok for me. It handles nulls for int and boolean: