views:

21

answers:

1

I am returning one row from the database, and I want to convert the SQLDataReader to a string format, so I can pass it to my webservice.

        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

How would I convert a SQLDataReader to a string?

Is there a better alternative?

+1  A: 

rdr.Read() moves the DataReader to the next records and returns if there is a next record at all. So you can write:

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

You are only converting the Boolean that indicates if there is a next record to a String("True"/"False").

Have a look at MSDN for further onformations.

Tim Schmelter
So you are saying I would have to read each field individually, as opposed to converting the whole row into string format? My end goal is to have that record passed to my webservice, which will return the results to the client in XML.
user279521
It wouldn't make sense to return the whole row as String.Use Linq, Dataset.ReadXML or a custom class. Maybe this link helps: http://forums.asp.net/p/1587381/4013756.aspx
Tim Schmelter