0

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?

2
  • A little more information would be useful, such as what data is being returned? Is it scalar? Is all the row information needed? Commented Oct 29, 2010 at 12:19
  • No sure I understand what you mean by "what" data is being returned? The row contains about 8 fields. The recordset is returning only one record. Its not scalar (first column of the first row). I need to return all the fields. HTH Commented Oct 29, 2010 at 12:20

1 Answer 1

1

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.

2
  • 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. Commented Oct 29, 2010 at 14:03
  • It wouldn't make sense to return the whole row as String. Use Linq, Dataset.ReadXML or a custom class. Maybe this link helps: forums.asp.net/p/1587381/4013756.aspx Commented Oct 29, 2010 at 14:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.