Получить значение от datareader

Ниже приведен пример кода, который я написал на VB.NET.

 commandReader.CommandText = "Select stu_id from tbl_students Where stu_id = 845)"
   dr = commandReader.ExecuteReader
   While dr.Read
        var_stu_id = dr!stu_id
        var_stu_id = dr.GetValue(dr.GetOrdinal("stu_id"))
        var_stu_id = dr("stu_id")
        var_stu_id = dr.GetValue("stu_id")
   End While
   dr.Close()

Есть 4 способа получить конкретное значение из DataReader. Я хотел бы знать, какой из них лучший метод (если кто-нибудь укажет на разницу между каждым из них, это будет большим подспорьем).


person bigbiff    schedule 14.04.2015    source источник
comment
dr("stu_id") является наиболее распространенным. Как вы заметили, в VB есть ! оператор для разыменования коллекций, и он существует всегда. Это просто синтаксический ярлык для третьего варианта. Если вам очень любопытно, загрузите расширение Ref12 и выберите «Перейти к определению» при вызове конкретного метода. Он покажет вам исходный код .NET, который использовался для его написания. Например, возможно, что dr.Item(stu_id) (такой же, как dr(stu_id) будет разрешаться в тот же или очень похожий код, что и dr.GetValue(stu_id).   -  person Craig Johnson    schedule 14.04.2015
comment
Это не имеет ничего общего с С#.   -  person Zohar Peled    schedule 14.04.2015


Ответы (2)


var_stu_id = dr.GetValue(dr.GetOrdinal("stu_id"))

Это лучший способ получить данные из DataReader.

  1. Get<Datatype> функции, используемые для извлечения определенных значений DataType из DataReader. Но GetValue() можно использовать для получения значения любого типа данных.
  2. GetOrdinal() принимает номер индекса столбца, а также имя столбца в качестве ссылки на столбец, что с моей точки зрения является преимуществом использования этого метода.
  3. Раньше я пробовал другие методы, и на сегодняшний день это лучший способ для меня получить данные из DataReader. Другой метод дал некоторые исключения, такие как NullReferenceException, при доступе к столбцам.
person Mahadev    schedule 14.04.2015

DataReader предоставляет ряд методов, позволяющих получать доступ к значениям столбцов в их собственных типах данных (GetDateTime, GetDouble, GetGuid, GetInt32 и т. д.).Используя методы типизированного доступа, предполагая, что базовый тип данных известен, уменьшает количество необходимых преобразований типов при извлечении значения столбца.

Из 4 способов, которые вы показали, лучший способ - var_stu_id = dr.GetValue("stu_id"). Потому что он получает значение указанного столбца в собственном формате.

Источник: sqldatareader

данные из устройства чтения данных

person akhil kumar    schedule 14.04.2015