'DataReader.GetString() via 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"]);
doing this makes me want to cry but i can't seem to figure out how to use the type specfic retrieval methods by column name other than this way. please tell me there is a better way. this is specificly for DB2 but i would like the solution to work for MS Sql also if possible
Solution 1:[1]
Using SqlDataReader
from Assembly System.Data.SqlClient
, you can do the following (example):
List<string> list = new();
string query = "SELECT * FROM [YourTable]";
using SqlConnection conn = new(YourConnectionString);
using SqlCommand cmd = new(query, conn);
conn.Open();
using SqlDataReader reader = cmd.ExecuteReader();
while(reader.Read() && reader.HasRows)
{
int columnNumber = reader.GetOrdinal("ColumnName")
list.Add(reader.GetString(columnNumber));
}
The method GetOrdinal(string)
from the object SqlDataReader
, accept the column name you desire to get and return the column number.
That number can be use for the method GetString(int)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 |