2010-11-10 5 views
0

je l'habitude d'utiliser des jeux de données au lieu de sqldatareaders et je l'habitude d'être en mesure de faire quelque chose comme çaSQLDataReader valeur découverte de chaque ligne

If dataset.tables(0).Rows(0)(1).ToString()) = "N" Then 
    lbl.Text = dataset.tables(0).Rows(0)(2).ToString()) 
Else 
    'Do Nothing 
End If 

Cela ne fonctionne évidemment pas avec sqldatareaders.

J'ai code pour voir si le SQLDataReader a toutes les lignes, mais se demandait s'il y avait un moyen d'obtenir la valeur de chaque ligne

Je devine que cela est possible et j'ai eu un coup d'oeil, mais ne semblent pas trouver quoi que ce soit

Dim conn As SqlConnection = New SqlConnection("server='h'; user id='w'; password='w'; database='w'; pooling='false'") 

conn.Open() 

Dim query As New SqlCommand("DECLARE @investor varchar(10), @sql varchar(1000) Select @investor = 69836 select @sql = 'SELECT * FROM OPENQUERY(db,''SELECT * FROM table WHERE investor = ''''' + @investor + ''''''')' EXEC(@sql)", conn) 

Dim oDR As SqlDataReader = query.ExecuteReader() 

If oDR.HasRows or dataset.tables(0).Rows(0)(1).ToString()) = "N" Then 
    lbl.Text = dataset.tables(0).Rows(0)(2).ToString()) 
Else 
    'Do Nothing 
End If 

qui est le code que j'ai au moment qui ne fonctionne évidemment pas

Toutes les idées?

Merci

+0

Vérifiez ce lien sur: [http://www.startvbdotnet.com/ado/sqlserver.aspx](http://www.startvbdotnet.com/ado/sqlserver.aspx) Ou celui-ci: [http://snipplr.com/view/13059/loop-through-a-datareader/](http://snipplr.com/view/13059/loop-through-a-datareader/) –

Répondre

0

Lorsque vous utilisez le lecteur de données que vous devez parcourir chaque ligne vous-même. Utiliser HasRows est un bon début, car il vous dira si le jeu de résultats renvoyé est vide.

Pour itérer le jeu de résultats, vous devez utiliser la méthode Read(). Cela retournera vrai si vous êtes à une rangée et faux quand vous avez passé la dernière rangée.

Mon Vb est pauvre, donc je vais vous donner un exemple en C# à la place:

if (oDR.HasRows && oDR.Read()) 
{ 
    if (oDR.GetString(0) == "N") 
    { 
    lbl.Text = oDr.GetString(1); 
    } 
} 

Ici, je vérifie d'abord que nous avons un jeu de résultats avec des données et puis essayer de passer à la première rangée. Si cela réussit, je lis la valeur de la première colonne et la compare à "N". Si la valeur est égale à "N", je mets la propriété Text de la variable lbl à la valeur de la chaîne de la deuxième colonne.

Cela devrait être équivalent à votre algorithme avec l'ensemble de données. Je vous recommande de lire le MSDN documentation for the SqlDataReader. C'est assez bon et l'exemple de code est utile.