2010-10-29 6 views
0

Je renvoie une ligne de la base de données et je souhaite convertir le SQLDataReader en un format de chaîne, afin de pouvoir le transmettre à mon service Web.Conversion de SQLDataReader en chaîne dans VB.Net

 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 

Comment convertir un SQLDataReader en chaîne?

Existe-t-il une meilleure alternative?

+0

Un peu plus d'informations seraient utiles, telles que les données renvoyées? Est-ce scalaire? Toutes les informations sur les lignes sont-elles nécessaires? – Wade73

+0

Je ne suis pas sûr de comprendre ce que vous entendez par "quoi" les données sont-elles retournées? La ligne contient environ 8 champs. Le jeu d'enregistrements retourne un seul enregistrement. Ce n'est pas scalaire (première colonne de la première rangée). Je dois retourner tous les champs. HTH – user279521

Répondre

1

rdr.Read() déplace le DataReader vers les enregistrements suivants et renvoie s'il y a un enregistrement suivant du tout. Vous pouvez donc écrire:

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 

Vous ne convertir les booléenne qui indique s'il y a un enregistrement à côté d'une chaîne (« true »/« Faux »).

Jetez un coup d'œil à MSDN pour d'autres informations.

+0

Donc, vous dites que je devrais lire chaque champ individuellement, par opposition à la conversion de la ligne entière en format de chaîne? Mon but final est de faire passer cet enregistrement à mon service web, ce qui retournera les résultats au client en XML. – user279521

+0

Cela n'aurait aucun sens de renvoyer la ligne entière en tant que chaîne. Utilisez Linq, Dataset.ReadXML ou une classe personnalisée. Peut-être que ce lien aide: http://forums.asp.net/p/1587381/4013756.aspx –