DataReader. GetString () через columnname

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 методы поиска именем столбца кроме этого пути. скажите мне, что существует лучший путь. это - specificly для DB2, но я хотел бы решение работать на MS Sql также, если это возможно,

9
задан KellCOMnet 12 July 2010 в 13:28
поделиться

1 ответ

Вы ищете метод 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));
    }
}
// ...
18
ответ дан 4 December 2019 в 11:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: