Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

OleDbDataReader nombre d'enregistrements

3 réponses
Avatar
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

3 réponses

Avatar
Gilles TOURREAU
Le Fri, 05 Oct 2007 12:12:57 +0200, raleur a é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

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
raleur
Gilles TOURREAU a écrit :
Le Fri, 05 Oct 2007 12:12:57 +0200, raleur a é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.
Avatar
Christophe Lephay
"raleur" a écrit dans le message de news:
4706dfa2$0$27412$
Gilles TOURREAU a écrit :
Le Fri, 05 Oct 2007 12:12:57 +0200, raleur a
é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é.