OleDbDataReader nombre d'enregistrements

Le
raleur
Bonjour j'utilise le code suivant

string sqlQuery="SELECT * FROM Users";

oConn.Open();
OleDbCommand oCmd = new OleDbCommand(sqlQuery, oConn);
OleDbDataReader result = oCmd.ExecuteReader();

et je voudrai savoir le nombre d'enregistrement retournée par cette requete avant de la traiter.
Comment pourrais faire.

Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilles TOURREAU
Le #12170341
Le Fri, 05 Oct 2007 12:12:57 +0200, raleur
Bonjour j'utilise le code suivant

string sqlQuery="SELECT * FROM Users";

oConn.Open();
OleDbCommand oCmd = new OleDbCommand(sqlQuery, oConn);
OleDbDataReader result = oCmd.ExecuteReader();

et je voudrai savoir le nombre d'enregistrement retournée par cette
requete avant de la traiter. Comment pourrais faire.

Merci



On ne peut pas connaitre à l'avance le nombre d'enregistrement d'un
DbDataReader.

Il faut executer une requête "SELECT COUNT(*)" comme ceci :

int nbEnreg;

using (OleDbCommand cmd = new OleDbCommand("SELECT COUNT(*) FROM Users",
oConn))
{
nbEnreg = (int)cmd.ExecuteScalar();
}

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
raleur
Le #12170331
Gilles TOURREAU a écrit :
Le Fri, 05 Oct 2007 12:12:57 +0200, raleur
Bonjour j'utilise le code suivant

string sqlQuery="SELECT * FROM Users";

oConn.Open();
OleDbCommand oCmd = new OleDbCommand(sqlQuery, oConn);
OleDbDataReader result = oCmd.ExecuteReader();

et je voudrai savoir le nombre d'enregistrement retournée par cette
requete avant de la traiter. Comment pourrais faire.

Merci



On ne peut pas connaitre à l'avance le nombre d'enregistrement d'un
DbDataReader.

Il faut executer une requête "SELECT COUNT(*)" comme ceci :

int nbEnreg;

using (OleDbCommand cmd = new OleDbCommand("SELECT COUNT(*) FROM Users",
oConn))
{
nbEnreg = (int)cmd.ExecuteScalar();
}

Cordialement



N'est-il pas possible tout simplement alors de savoir si la requete renvoi plusieurs enregistrement
ou alors aucun enregistrement, sans obligatoirement en connaitre le nombre.
Christophe Lephay
Le #12170321
"raleur" 4706dfa2$0$27412$
Gilles TOURREAU a écrit :
Le Fri, 05 Oct 2007 12:12:57 +0200, raleur écrit:

Bonjour j'utilise le code suivant

string sqlQuery="SELECT * FROM Users";

oConn.Open();
OleDbCommand oCmd = new OleDbCommand(sqlQuery, oConn);
OleDbDataReader result = oCmd.ExecuteReader();

et je voudrai savoir le nombre d'enregistrement retournée par cette
requete avant de la traiter. Comment pourrais faire.

Merci



On ne peut pas connaitre à l'avance le nombre d'enregistrement d'un
DbDataReader.

Il faut executer une requête "SELECT COUNT(*)" comme ceci :

int nbEnreg;

using (OleDbCommand cmd = new OleDbCommand("SELECT COUNT(*) FROM Users",
oConn))
{
nbEnreg = (int)cmd.ExecuteScalar();
}

Cordialement



N'est-il pas possible tout simplement alors de savoir si la requete renvoi
plusieurs enregistrement ou alors aucun enregistrement, sans
obligatoirement en connaitre le nombre.



DbDataReader est un flux. Par définition, un flux est une file (ou queue) et
par conséquent, toujours par définition, le seul élément que tu peux y lire
est celui qui se trouve en tête de file.

En revanche, tu as une propriété HasRows (booléen) qui te permet de savoir
si le flux contient quelque chose ou non.

L'intéret d'utiliser un flux comme abstraction permet notamment au système
de décomposer un gros ensemble de données en plusieurs plus petits, afin
d'optimiser les ressources (dont la bande passante ou la mémoire) de manière
complètement transparente. Si ta requete sql te renvoie 100000
enregistrements, il serait tout à fait possible, par exemple, qu'ils ne te
soient envoyés que par 1000, de manière progressive et incrémentielle, te
permettant ainsi de lire le flux et commencer à en traiter les données au
fur et à mesure que le système les y envoie, sans devoir attendre que les
données n'aient été effectivement transmises dans leur intégralité.
Publicité
Poster une réponse
Anonyme