J'essaye désespérèment d'obtenir le nombre de résultat obtenu par ma requete
SQL. Le bout de code estle suivant :
try{
Statement s = conn.createStatement();
String maRequete = "SELECT [Nom] FROM Employés WHERE
Fonction='Représentant(e)'";
s.executeQuery (maRequete);
ResultSet rs = s.getResultSet();
rs.last();
System.out.println("" + rs.getRow());
L'idée c'est que je vais à la fin des enrigistrements et je lui dis de me
donner le numéro de ligne correspondant (qui est égal aux nbr
d'enregistrement à 1 près).
Le problème c'est que l'instruction rs.last() semble poser problème et il me
met toujours : Problème Survenu.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michaelm
Ce serait interessant d'avoir le message d'erreurs, mais le code appel déjà quelques commentaires : Dans ta requete SQL, "SELECT [Nom] FROM Employés WHERE Fonction='Représentant(e)'", [NOM] est surement à remplacer par * (pour avoir toutes les colonnes) ou par la liste des colonnes à récupérer.
D'autre part, si les accents et les parenthèses pouvaient être évitées dans les noms de colonne, ca augmenterait les chances pour que la requete aboutisse ...
Sinon, rs.last() et rs.getRow() devraient marcher à mon sens une fois que tu auras réglé les détails ci-dessus, mais en revanche, ce n'est pas la peine de chercher la suite (rs.next()) puisque tu t'es positionné sur la dernière ligne.
Si tu as juste besoin du nombre d'occurrences, le mieux est peut être une requête du type SELECT COUNT(*) FROM Employés WHERE Fonction='Représentant(e)'" ... if(rs.next()){System.out.println(rs.getInt(1));}
Si tu veux voir tous les résultats, tu peux faire une boucle et les compter au passage : SELECT * FROM Employés WHERE Fonction='Représentant(e)'" ... int count = 0; while(rs.next()){ System.out.println(rs.getString("Nom")); count++; } System.out.println("Nombre de lignes trouvées : " + count);
Voilà, en espérant ne pas avoir écrit trop de betise.
Michaël
Ce serait interessant d'avoir le message d'erreurs, mais le code appel
déjà quelques commentaires :
Dans ta requete SQL, "SELECT [Nom] FROM Employés WHERE
Fonction='Représentant(e)'", [NOM] est surement à remplacer par *
(pour avoir toutes les colonnes) ou par la liste des colonnes à
récupérer.
D'autre part, si les accents et les parenthèses pouvaient être
évitées dans les noms de colonne, ca augmenterait les chances pour
que la requete aboutisse ...
Sinon, rs.last() et rs.getRow() devraient marcher à mon sens une fois
que tu auras réglé les détails ci-dessus, mais en revanche, ce n'est
pas la peine de chercher la suite (rs.next()) puisque tu t'es
positionné sur la dernière ligne.
Si tu as juste besoin du nombre d'occurrences, le mieux est peut être
une requête du type
SELECT COUNT(*) FROM Employés WHERE Fonction='Représentant(e)'"
...
if(rs.next()){System.out.println(rs.getInt(1));}
Si tu veux voir tous les résultats, tu peux faire une boucle et les
compter au passage :
SELECT * FROM Employés WHERE Fonction='Représentant(e)'"
...
int count = 0;
while(rs.next()){
System.out.println(rs.getString("Nom"));
count++;
}
System.out.println("Nombre de lignes trouvées : " + count);
Voilà, en espérant ne pas avoir écrit trop de betise.
Ce serait interessant d'avoir le message d'erreurs, mais le code appel déjà quelques commentaires : Dans ta requete SQL, "SELECT [Nom] FROM Employés WHERE Fonction='Représentant(e)'", [NOM] est surement à remplacer par * (pour avoir toutes les colonnes) ou par la liste des colonnes à récupérer.
D'autre part, si les accents et les parenthèses pouvaient être évitées dans les noms de colonne, ca augmenterait les chances pour que la requete aboutisse ...
Sinon, rs.last() et rs.getRow() devraient marcher à mon sens une fois que tu auras réglé les détails ci-dessus, mais en revanche, ce n'est pas la peine de chercher la suite (rs.next()) puisque tu t'es positionné sur la dernière ligne.
Si tu as juste besoin du nombre d'occurrences, le mieux est peut être une requête du type SELECT COUNT(*) FROM Employés WHERE Fonction='Représentant(e)'" ... if(rs.next()){System.out.println(rs.getInt(1));}
Si tu veux voir tous les résultats, tu peux faire une boucle et les compter au passage : SELECT * FROM Employés WHERE Fonction='Représentant(e)'" ... int count = 0; while(rs.next()){ System.out.println(rs.getString("Nom")); count++; } System.out.println("Nombre de lignes trouvées : " + count);
Voilà, en espérant ne pas avoir écrit trop de betise.
Michaël
Christophe Tela
michaelm wrote:
Ce serait interessant d'avoir le message d'erreurs, mais le code appel
michaelm wrote:
Ce serait interessant d'avoir le message d'erreurs, mais le code appel
Ce serait interessant d'avoir le message d'erreurs, mais le code appel
Simon OUALID
La méthode last() n'est pas toujours implémentée par les vendeurs de SGBD. D'autres fois, c'est juste une histoire de configuration pour que tes curseurs ne soient pas en TYPE_FORWARD_ONLY (ce qui est par défaut la plupart du temps le cas).
Mais bon, ces solutions ne sont pas vraiment portable d'un SGBD à un autre, on a toujours des surprises sur ce genre de détail. C'est pourquoi je te conseillerais plutôt de te servir des fonctions d'aggrégation de ton SGBD pour arriver au même résultat...
SQL > SELECT count(nom) FROM EMPLOYES WHERE FONCTION_ID = 2;
Ca te fait une requête de plus, mais d'un point de vue lisibilité et portabilité, y a pas photo, c'est mieux et plus joli ! ;)
Symon
Clément wrote:
Bonjour,
J'essaye désespérèment d'obtenir le nombre de résultat obtenu par ma requete SQL. Le bout de code estle suivant : try{ Statement s = conn.createStatement(); String maRequete = "SELECT [Nom] FROM Employés WHERE Fonction='Représentant(e)'"; s.executeQuery (maRequete); ResultSet rs = s.getResultSet(); rs.last(); System.out.println("" + rs.getRow());
L'idée c'est que je vais à la fin des enrigistrements et je lui dis de me donner le numéro de ligne correspondant (qui est égal aux nbr d'enregistrement à 1 près). Le problème c'est que l'instruction rs.last() semble poser problème et il me met toujours : Problème Survenu.
Que faire ?
Merci beaucoup
La méthode last() n'est pas toujours implémentée par les vendeurs de
SGBD. D'autres fois, c'est juste une histoire de configuration pour que
tes curseurs ne soient pas en TYPE_FORWARD_ONLY (ce qui est par défaut
la plupart du temps le cas).
Mais bon, ces solutions ne sont pas vraiment portable d'un SGBD à un
autre, on a toujours des surprises sur ce genre de détail. C'est
pourquoi je te conseillerais plutôt de te servir des fonctions
d'aggrégation de ton SGBD pour arriver au même résultat...
SQL > SELECT count(nom) FROM EMPLOYES WHERE FONCTION_ID = 2;
Ca te fait une requête de plus, mais d'un point de vue lisibilité et
portabilité, y a pas photo, c'est mieux et plus joli ! ;)
Symon
Clément wrote:
Bonjour,
J'essaye désespérèment d'obtenir le nombre de résultat obtenu par ma requete
SQL. Le bout de code estle suivant :
try{
Statement s = conn.createStatement();
String maRequete = "SELECT [Nom] FROM Employés WHERE
Fonction='Représentant(e)'";
s.executeQuery (maRequete);
ResultSet rs = s.getResultSet();
rs.last();
System.out.println("" + rs.getRow());
L'idée c'est que je vais à la fin des enrigistrements et je lui dis de me
donner le numéro de ligne correspondant (qui est égal aux nbr
d'enregistrement à 1 près).
Le problème c'est que l'instruction rs.last() semble poser problème et il me
met toujours : Problème Survenu.
La méthode last() n'est pas toujours implémentée par les vendeurs de SGBD. D'autres fois, c'est juste une histoire de configuration pour que tes curseurs ne soient pas en TYPE_FORWARD_ONLY (ce qui est par défaut la plupart du temps le cas).
Mais bon, ces solutions ne sont pas vraiment portable d'un SGBD à un autre, on a toujours des surprises sur ce genre de détail. C'est pourquoi je te conseillerais plutôt de te servir des fonctions d'aggrégation de ton SGBD pour arriver au même résultat...
SQL > SELECT count(nom) FROM EMPLOYES WHERE FONCTION_ID = 2;
Ca te fait une requête de plus, mais d'un point de vue lisibilité et portabilité, y a pas photo, c'est mieux et plus joli ! ;)
Symon
Clément wrote:
Bonjour,
J'essaye désespérèment d'obtenir le nombre de résultat obtenu par ma requete SQL. Le bout de code estle suivant : try{ Statement s = conn.createStatement(); String maRequete = "SELECT [Nom] FROM Employés WHERE Fonction='Représentant(e)'"; s.executeQuery (maRequete); ResultSet rs = s.getResultSet(); rs.last(); System.out.println("" + rs.getRow());
L'idée c'est que je vais à la fin des enrigistrements et je lui dis de me donner le numéro de ligne correspondant (qui est égal aux nbr d'enregistrement à 1 près). Le problème c'est que l'instruction rs.last() semble poser problème et il me met toujours : Problème Survenu.
Que faire ?
Merci beaucoup
Simon OUALID
La méthode last() n'est pas toujours implémentée par les vendeurs de SGBD. D'autres fois, c'est juste une histoire de configuration pour que tes curseurs ne soient pas en TYPE_FORWARD_ONLY (ce qui est par défaut la plupart du temps le cas).
Mais bon, ces solutions ne sont pas vraiment portable d'un SGBD à un autre, on a toujours des surprises sur ce genre de détail. C'est pourquoi je te conseillerais plutôt de te servir des fonctions d'aggrégation de ton SGBD pour arriver au même résultat...
SQL > SELECT count(nom) FROM EMPLOYES WHERE FONCTION_ID = 2;
Ca te fait une requête de plus, mais d'un point de vue lisibilité et portabilité, y a pas photo, c'est mieux et plus joli ! ;)
Symon
Clément wrote:
Bonjour,
J'essaye désespérèment d'obtenir le nombre de résultat obtenu par ma requete SQL. Le bout de code estle suivant : try{ Statement s = conn.createStatement(); String maRequete = "SELECT [Nom] FROM Employés WHERE Fonction='Représentant(e)'"; s.executeQuery (maRequete); ResultSet rs = s.getResultSet(); rs.last(); System.out.println("" + rs.getRow());
L'idée c'est que je vais à la fin des enrigistrements et je lui dis de me donner le numéro de ligne correspondant (qui est égal aux nbr d'enregistrement à 1 près). Le problème c'est que l'instruction rs.last() semble poser problème et il me met toujours : Problème Survenu.
Que faire ?
Merci beaucoup
La méthode last() n'est pas toujours implémentée par les vendeurs de
SGBD. D'autres fois, c'est juste une histoire de configuration pour que
tes curseurs ne soient pas en TYPE_FORWARD_ONLY (ce qui est par défaut
la plupart du temps le cas).
Mais bon, ces solutions ne sont pas vraiment portable d'un SGBD à un
autre, on a toujours des surprises sur ce genre de détail. C'est
pourquoi je te conseillerais plutôt de te servir des fonctions
d'aggrégation de ton SGBD pour arriver au même résultat...
SQL > SELECT count(nom) FROM EMPLOYES WHERE FONCTION_ID = 2;
Ca te fait une requête de plus, mais d'un point de vue lisibilité et
portabilité, y a pas photo, c'est mieux et plus joli ! ;)
Symon
Clément wrote:
Bonjour,
J'essaye désespérèment d'obtenir le nombre de résultat obtenu par ma requete
SQL. Le bout de code estle suivant :
try{
Statement s = conn.createStatement();
String maRequete = "SELECT [Nom] FROM Employés WHERE
Fonction='Représentant(e)'";
s.executeQuery (maRequete);
ResultSet rs = s.getResultSet();
rs.last();
System.out.println("" + rs.getRow());
L'idée c'est que je vais à la fin des enrigistrements et je lui dis de me
donner le numéro de ligne correspondant (qui est égal aux nbr
d'enregistrement à 1 près).
Le problème c'est que l'instruction rs.last() semble poser problème et il me
met toujours : Problème Survenu.
La méthode last() n'est pas toujours implémentée par les vendeurs de SGBD. D'autres fois, c'est juste une histoire de configuration pour que tes curseurs ne soient pas en TYPE_FORWARD_ONLY (ce qui est par défaut la plupart du temps le cas).
Mais bon, ces solutions ne sont pas vraiment portable d'un SGBD à un autre, on a toujours des surprises sur ce genre de détail. C'est pourquoi je te conseillerais plutôt de te servir des fonctions d'aggrégation de ton SGBD pour arriver au même résultat...
SQL > SELECT count(nom) FROM EMPLOYES WHERE FONCTION_ID = 2;
Ca te fait une requête de plus, mais d'un point de vue lisibilité et portabilité, y a pas photo, c'est mieux et plus joli ! ;)
Symon
Clément wrote:
Bonjour,
J'essaye désespérèment d'obtenir le nombre de résultat obtenu par ma requete SQL. Le bout de code estle suivant : try{ Statement s = conn.createStatement(); String maRequete = "SELECT [Nom] FROM Employés WHERE Fonction='Représentant(e)'"; s.executeQuery (maRequete); ResultSet rs = s.getResultSet(); rs.last(); System.out.println("" + rs.getRow());
L'idée c'est que je vais à la fin des enrigistrements et je lui dis de me donner le numéro de ligne correspondant (qui est égal aux nbr d'enregistrement à 1 près). Le problème c'est que l'instruction rs.last() semble poser problème et il me met toujours : Problème Survenu.
Que faire ?
Merci beaucoup
Simon OUALID
La méthode last() n'est pas toujours implémentée par les vendeurs de SGBD. D'autres fois, c'est juste une histoire de configuration pour que tes curseurs ne soient pas en TYPE_FORWARD_ONLY (ce qui est par défaut la plupart du temps le cas).
Mais bon, ces solutions ne sont pas vraiment portable d'un SGBD à un autre, on a toujours des surprises sur ce genre de détail. C'est pourquoi je te conseillerais plutôt de te servir des fonctions d'aggrégation de ton SGBD pour arriver au même résultat...
SQL > SELECT count(nom) FROM EMPLOYES WHERE FONCTION_ID = 2;
Ca te fait une requête de plus, mais d'un point de vue lisibilité et portabilité, y a pas photo, c'est mieux et plus joli ! ;)
Symon
Clément wrote:
Bonjour,
J'essaye désespérèment d'obtenir le nombre de résultat obtenu par ma requete SQL. Le bout de code estle suivant : try{ Statement s = conn.createStatement(); String maRequete = "SELECT [Nom] FROM Employés WHERE Fonction='Représentant(e)'"; s.executeQuery (maRequete); ResultSet rs = s.getResultSet(); rs.last(); System.out.println("" + rs.getRow());
L'idée c'est que je vais à la fin des enrigistrements et je lui dis de me donner le numéro de ligne correspondant (qui est égal aux nbr d'enregistrement à 1 près). Le problème c'est que l'instruction rs.last() semble poser problème et il me met toujours : Problème Survenu.
Que faire ?
Merci beaucoup
La méthode last() n'est pas toujours implémentée par les vendeurs de
SGBD. D'autres fois, c'est juste une histoire de configuration pour que
tes curseurs ne soient pas en TYPE_FORWARD_ONLY (ce qui est par défaut
la plupart du temps le cas).
Mais bon, ces solutions ne sont pas vraiment portable d'un SGBD à un
autre, on a toujours des surprises sur ce genre de détail. C'est
pourquoi je te conseillerais plutôt de te servir des fonctions
d'aggrégation de ton SGBD pour arriver au même résultat...
SQL > SELECT count(nom) FROM EMPLOYES WHERE FONCTION_ID = 2;
Ca te fait une requête de plus, mais d'un point de vue lisibilité et
portabilité, y a pas photo, c'est mieux et plus joli ! ;)
Symon
Clément wrote:
Bonjour,
J'essaye désespérèment d'obtenir le nombre de résultat obtenu par ma requete
SQL. Le bout de code estle suivant :
try{
Statement s = conn.createStatement();
String maRequete = "SELECT [Nom] FROM Employés WHERE
Fonction='Représentant(e)'";
s.executeQuery (maRequete);
ResultSet rs = s.getResultSet();
rs.last();
System.out.println("" + rs.getRow());
L'idée c'est que je vais à la fin des enrigistrements et je lui dis de me
donner le numéro de ligne correspondant (qui est égal aux nbr
d'enregistrement à 1 près).
Le problème c'est que l'instruction rs.last() semble poser problème et il me
met toujours : Problème Survenu.
La méthode last() n'est pas toujours implémentée par les vendeurs de SGBD. D'autres fois, c'est juste une histoire de configuration pour que tes curseurs ne soient pas en TYPE_FORWARD_ONLY (ce qui est par défaut la plupart du temps le cas).
Mais bon, ces solutions ne sont pas vraiment portable d'un SGBD à un autre, on a toujours des surprises sur ce genre de détail. C'est pourquoi je te conseillerais plutôt de te servir des fonctions d'aggrégation de ton SGBD pour arriver au même résultat...
SQL > SELECT count(nom) FROM EMPLOYES WHERE FONCTION_ID = 2;
Ca te fait une requête de plus, mais d'un point de vue lisibilité et portabilité, y a pas photo, c'est mieux et plus joli ! ;)
Symon
Clément wrote:
Bonjour,
J'essaye désespérèment d'obtenir le nombre de résultat obtenu par ma requete SQL. Le bout de code estle suivant : try{ Statement s = conn.createStatement(); String maRequete = "SELECT [Nom] FROM Employés WHERE Fonction='Représentant(e)'"; s.executeQuery (maRequete); ResultSet rs = s.getResultSet(); rs.last(); System.out.println("" + rs.getRow());
L'idée c'est que je vais à la fin des enrigistrements et je lui dis de me donner le numéro de ligne correspondant (qui est égal aux nbr d'enregistrement à 1 près). Le problème c'est que l'instruction rs.last() semble poser problème et il me met toujours : Problème Survenu.
Que faire ?
Merci beaucoup
wolverin
Bonjour,
J'essaye désespérèment d'obtenir le nombre de résultat obtenu par ma requete SQL. Le bout de code estle suivant : try{ Statement s = conn.createStatement(); String maRequete = "SELECT [Nom] FROM Employés WHERE Fonction='Représentant(e)'"; s.executeQuery (maRequete); ResultSet rs = s.getResultSet(); rs.last(); System.out.println("" + rs.getRow());
L'idée c'est que je vais à la fin des enrigistrements et je lui dis de me donner le numéro de ligne correspondant (qui est égal aux nbr d'enregistrement à 1 près). Le problème c'est que l'instruction rs.last() semble poser problème et il me met toujours : Problème Survenu.
Que faire ?
Merci beaucoup
Soit tu veux juste le nb de tuples correspondant à ce que tu veux et tu
utilises une requête COUNT, soit tu as besoin d'infos en base et en plus tu veux le nb, dans ce cas je te conseille l'utilisation d'une List (ArrayList par exemple). Une List est un tableau dynamique, une fois que tu as récupéré toutes tes infos, tu n'as plus qu'à faire un size sur la liste et tu as le nb de tuples.
Bonjour,
J'essaye désespérèment d'obtenir le nombre de résultat obtenu par ma requete
SQL. Le bout de code estle suivant :
try{
Statement s = conn.createStatement();
String maRequete = "SELECT [Nom] FROM Employés WHERE
Fonction='Représentant(e)'";
s.executeQuery (maRequete);
ResultSet rs = s.getResultSet();
rs.last();
System.out.println("" + rs.getRow());
L'idée c'est que je vais à la fin des enrigistrements et je lui dis de me
donner le numéro de ligne correspondant (qui est égal aux nbr
d'enregistrement à 1 près).
Le problème c'est que l'instruction rs.last() semble poser problème et il me
met toujours : Problème Survenu.
Que faire ?
Merci beaucoup
Soit tu veux juste le nb de tuples correspondant à ce que tu veux et tu
utilises une requête COUNT, soit tu as besoin d'infos en base et en plus
tu veux le nb, dans ce cas je te conseille l'utilisation d'une List
(ArrayList par exemple).
Une List est un tableau dynamique, une fois que tu as récupéré toutes
tes infos, tu n'as plus qu'à faire un size sur la liste et tu as le nb
de tuples.
J'essaye désespérèment d'obtenir le nombre de résultat obtenu par ma requete SQL. Le bout de code estle suivant : try{ Statement s = conn.createStatement(); String maRequete = "SELECT [Nom] FROM Employés WHERE Fonction='Représentant(e)'"; s.executeQuery (maRequete); ResultSet rs = s.getResultSet(); rs.last(); System.out.println("" + rs.getRow());
L'idée c'est que je vais à la fin des enrigistrements et je lui dis de me donner le numéro de ligne correspondant (qui est égal aux nbr d'enregistrement à 1 près). Le problème c'est que l'instruction rs.last() semble poser problème et il me met toujours : Problème Survenu.
Que faire ?
Merci beaucoup
Soit tu veux juste le nb de tuples correspondant à ce que tu veux et tu
utilises une requête COUNT, soit tu as besoin d'infos en base et en plus tu veux le nb, dans ce cas je te conseille l'utilisation d'une List (ArrayList par exemple). Une List est un tableau dynamique, une fois que tu as récupéré toutes tes infos, tu n'as plus qu'à faire un size sur la liste et tu as le nb de tuples.