sql – DataReader.GetString()通过columnname

前端之家收集整理的这篇文章主要介绍了sql – DataReader.GetString()通过columnname前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. Dictionary Fields = new Dictionary();
  2. for (int i = 0; i < reader.FieldCount; i++)
  3. {
  4. Fields.Add(reader.GetName(i),i);
  5. }
  6.  
  7. this._MyField1 = reader.GetString(Fields["field1"]);
  8. this._Myfield2 = reader.GetInt16(Fields["field2"]);

这样做让我想哭但我似乎无法弄清楚除了这种方式之外如何通过列名使用类型specfic检索方法.请告诉我有更好的方法.这特别针对DB2,但我希望该解决方案也适用于MS sql

解决方法

您正在寻找 GetOrdinal方法
  1. this._MyField1 = reader.GetString(dr.GetOrdinal("field1"));
  2. this._Myfield2 = reader.GetInt16(dr.GetOrdinal("field2"));

我通常将序数缓存为匿名类型以提高性能和可读性:

  1. // ...
  2. using (IDataReader dr = cmd.ExecuteReader())
  3. {
  4. var ordinals = new {
  5. Foo = dr.GetOrdinal("Foo"),Bar = dr.GetOrdinal("Bar")
  6. };
  7.  
  8. while (dr.Read())
  9. {
  10. DoSomething(dr.GetString(ordinals.Foo),dr.GetInt16(ordinals.Bar));
  11. }
  12. }
  13. // ...

猜你在找的MsSQL相关文章