Dictionary Fields = new Dictionary(); for (int i = 0; i < reader.FieldCount; i++) { Fields.Add(reader.GetName(i),i); } this._MyField1 = reader.GetString(Fields["field1"]); this._Myfield2 = reader.GetInt16(Fields["field2"]);
这样做让我想哭但我似乎无法弄清楚除了这种方式之外如何通过列名使用类型specfic检索方法.请告诉我有更好的方法.这特别针对DB2,但我希望该解决方案也适用于MS sql
解决方法
您正在寻找
GetOrdinal
方法:
this._MyField1 = reader.GetString(dr.Getordinal("field1")); this._Myfield2 = reader.GetInt16(dr.Getordinal("field2"));
我通常将序数缓存为匿名类型以提高性能和可读性:
// ... using (IDataReader dr = cmd.ExecuteReader()) { var ordinals = new { Foo = dr.Getordinal("Foo"),Bar = dr.Getordinal("Bar") }; while (dr.Read()) { DoSomething(dr.GetString(ordinals.Foo),dr.GetInt16(ordinals.Bar)); } } // ...
原文地址:https://www.jb51.cc/mssql/77146.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。