복붙노트

[SQL] 기둥 이름을 통해) (DataReader.GetString

SQL

기둥 이름을 통해) (DataReader.GetString

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"]);

이 일을하는 것은 나를 울게 할 수 있습니다하지만 난이 방법 이외의 열 이름 유형의 선택은 특정 검색 방법을 사용하는 방법을 알아낼 수 없습니다. 더 나은 방법이 말해주십시오. 이 DB2에 대한 specificly하지만 나는 또한 가능하면 MS SQL의 작업에 대한 해결책을 부탁합니다

해결법

  1. ==============================

    1.당신은 GetOrdinal 방법을 찾고 :

    당신은 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));
        }
    }
    // ...
    
  2. from https://stackoverflow.com/questions/3228972/datareader-getstring-via-columnname by cc-by-sa and MIT license