Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 通过columnname获取DataReader.GetString() 字典字段=新字典(); 对于(int i=0;i_Sql_Datareader - Fatal编程技术网

Sql 通过columnname获取DataReader.GetString() 字典字段=新字典(); 对于(int i=0;i

Sql 通过columnname获取DataReader.GetString() 字典字段=新字典(); 对于(int i=0;i,sql,datareader,Sql,Datareader,这样做让我很想哭,但我似乎不知道如何按列名使用类型特定的检索方法,除了这样。请告诉我有更好的办法。这是针对DB2的,但如果可能的话,我希望解决方案也适用于MS Sql 为了提高性能和可读性,我通常以匿名类型缓存序号: this._MyField1 = reader.GetString(dr.GetOrdinal("field1")); this._Myfield2 = reader.GetInt16(dr.GetOrdinal("field2")); 这真是个好主意! this._MyFiel

这样做让我很想哭,但我似乎不知道如何按列名使用类型特定的检索方法,除了这样。请告诉我有更好的办法。这是针对DB2的,但如果可能的话,我希望解决方案也适用于MS Sql

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

this._MyField1 = reader.GetString(dr.GetOrdinal("field1"));
this._Myfield2 = reader.GetInt16(dr.GetOrdinal("field2"));

这真是个好主意!
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));
    }
}
// ...