Преобразование SQLDataReader в строку в VB.Net

Я возвращаю одну строку из базы данных и хочу преобразовать SQLDataReader в строковый формат, чтобы передать ее своему веб-сервису.

        Dim rdr As SqlDataReader = sqlcmd.ExecuteReader

        If rdr.HasRows Then
            rdr.Read()
            GetInvHeaderValue = Convert.ToString(rdr.Read())
            Return GetInvHeaderValue
        Else
            GetInvHeaderValue = "<ERR>No Records Returned</ERR>"
        End If

Как преобразовать SQLDataReader в строку?

Есть ли лучшая альтернатива?


person user279521    schedule 29.10.2010    source источник
comment
Было бы полезно немного больше информации, например, какие данные возвращаются? Это скаляр? Нужна ли вся информация о строке?   -  person Wade73    schedule 29.10.2010
comment
Не уверен, что понимаю, что вы имеете в виду под тем, какие данные возвращаются? Строка содержит около 8 полей. Набор записей возвращает только одну запись. Это не скаляр (первый столбец первой строки). Мне нужно вернуть все поля. ХТН   -  person user279521    schedule 29.10.2010


Ответы (1)


rdr.Read() перемещает DataReader к следующим записям и возвращает значение, если следующая запись вообще существует. Итак, вы можете написать:

Dim GetInvHeaderValue As Object
While rdr.Read()
   GetInvHeaderValue  = rdr(0)'if this value is in Column-Index 0'
   GetInvHeaderValue  = rdr("GetInvHeaderValue")'if a Column with this name exists'
   GetInvHeaderValue  = rdr.GetString(0)'returns a String representation(there are getter for all common types)'
End While

Вы только конвертируете логическое значение, которое указывает, есть ли следующая запись в String ("True"/"False").

Дополнительные сведения см. в MSDN.

person Tim Schmelter    schedule 29.10.2010
comment
Итак, вы говорите, что мне придется читать каждое поле по отдельности, а не преобразовывать всю строку в строковый формат? Моя конечная цель — передать эту запись моему веб-сервису, который вернет результаты клиенту в формате XML. - person user279521; 29.10.2010
comment
Не имеет смысла возвращать всю строку как строку. Используйте Linq, Dataset.ReadXML или пользовательский класс. Возможно, эта ссылка поможет: forums.asp.net/p/1587381/4013756.aspx - person Tim Schmelter; 29.10.2010