SqlDataReader Получить Значение По Имени Столбца (Не Порядковый Номер)
С помощью методы SqlDataReader, Я могу получить значение столбца, передав его порядковый номер, например, значение первого столбца, если я передаю read.GetValue(0)
, или второй столбец, если я пройду в read.GetValue(1)
.
при просмотре методов я не вижу возможности получить значение столбца, передав имя столбца, например ColumnID. В моем мифическом примере я хотел бы пройти в read.GetValueofColumn("ColumnID")
и прочитайте значение в столбце (отметим, что метод GetValueofColumn
не существует, насколько я могу судить по списку методов).
мне не хватает метода для этого или способа сделать это?
4 ответов
Вы можете получить порядковый номер столбца с помощью GetOrdinal
метод, поэтому ваш вызов может быть:
read.GetValue(read.GetOrdinal("ColumnID"));
Datareader
имеет числовой (на основе позиции) метод и текстовый (на основе имени Поля). Таким образом, с именем Поля вы можете получить значение like
object value = reader["some field name"];
(предполагая, что reader
это datareader
)
поздний ответ, но... Это всегда работало для меня, и я думаю, что это ближе к тому, что OP пытается достичь:
using (SqlCommand cmd = new SqlCommand(cmdString, cn))
using (SqlDataReader rs = cmd.ExecuteReader()) {
if (rs.HasRows) {
while (rs.Read()) {
Meeting_DiscussionItems_MX di = new Meeting_DiscussionItems_MX();
di._Discussion_Item_MX_ID = (int) rs["Discussion_Item_MX_ID"];
di._Meeting_ID = (int) rs["Meeting_ID"];
di._Discussion_Item_Name = (string) rs["Discussion_Item_Name"];
di._Display_Order = (string) rs["Display_Order"];
di._Status = (string) rs["Status"];
di._Discussion_Items = (string) rs["Discussion_Items"];
di._ETOPS_Items = (string) rs["ETOPS_Items"];
di._Followup = (string) rs["Followup"];
di._Pinned = (string) rs["Pinned"];
di._Active = (string) rs["Active"];
_Meeting_DiscussionItems_MX.Add(di);
}
}
}
вы можете использовать:
MySqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
Console.WriteLine(rdr["id"] + " -- " + rdr["time"]);
}
rdr.Close();
здесь id
и time
- это имена столбцов