OVH Cloud OVH Cloud

[JDBC] pb de count pour une table

4 réponses
Avatar
Gart
Bonjour,
j'ai un problème avec une requete SQL en java.
J'essaye d'avoir le nombre d'enregistrement dans ma table
utilisateur.Pour ce faire, j'utilise la requete suivante : "SELECT COUNT
(*) FROM utilisateurs;" qui marche très bien dans phpMyAdmin.

Mais j'ai l'erreur suivante lorsque que je l'éxécute en Java :
java.sql.SQLException: Syntax error or access violation: You have an
error in your SQL syntax near '(*) FROM utilisateurs' at line 1
at com.mysql.jdbc.MysqlIO.sendCommand(Unknown Source)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(Unknown Source)
at com.mysql.jdbc.MysqlIO.sqlQuery(Unknown Source)
at com.mysql.jdbc.Connection.execSQL(Unknown Source)
at com.mysql.jdbc.Connection.execSQL(Unknown Source)
at com.mysql.jdbc.Statement.executeQuery(Unknown Source)
at com.mysql.jdbc.jdbc2.Statement.executeQuery(Unknown Source)
at bdd.Bdd.getUserNb(Bdd.java:2234)
etc..

Voici la création de la requete :

public int getUserNb() {
if(!connected) {
try {
connexion();
} catch (Exception e) {
Trace.println("Error : couldn't connect to base");
}
}
String requete = new String("SELECT COUNT (*) FROM utilisateurs;");
try {
statement = conn.createStatement();
} catch (SQLException e) {
Trace.println("Error during statement creation");
e.printStackTrace();
}
ResultSet result = null;
try {
result = statement.executeQuery(requete);
if(result.next()){
return result.getInt(1);
}

} catch (SQLException e1) {
Trace.println("Error during executeQuery : "+requete);
e1.printStackTrace();
}
return -1;

}

J'avoue être un peu bloqué, et je ne trouve rien. Est-ce un pb de driver
?
D'avance merci,
Gart.

4 réponses

Avatar
Vincent Brabant
Bonjour,
j'ai un problème avec une requete SQL en java.
J'essaye d'avoir le nombre d'enregistrement dans ma table
utilisateur.Pour ce faire, j'utilise la requete suivante : "SELECT COUNT
(*) FROM utilisateurs;" qui marche très bien dans phpMyAdmin.

Mais j'ai l'erreur suivante lorsque que je l'éxécute en Java :
java.sql.SQLException: Syntax error or access violation: You have an
error in your SQL syntax near '(*) FROM utilisateurs' at line 1
at com.mysql.jdbc.MysqlIO.sendCommand(Unknown Source)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(Unknown Source)
at com.mysql.jdbc.MysqlIO.sqlQuery(Unknown Source)
at com.mysql.jdbc.Connection.execSQL(Unknown Source)
at com.mysql.jdbc.Connection.execSQL(Unknown Source)
at com.mysql.jdbc.Statement.executeQuery(Unknown Source)
at com.mysql.jdbc.jdbc2.Statement.executeQuery(Unknown Source)
at bdd.Bdd.getUserNb(Bdd.java:2234)
etc..

Personellement, j'essayerais en supprimant le ; à la fin du select.

Et avec Oracle, on m'a toujours conseillé de faire un select count(1)
fromm ... qui serait plus performant qu'un select count(*).

Mais je ne sais pas si c'est vrai sous mysql

Vincent

Avatar
Libert Sébastien
"Gart" a écrit dans le message de news:
3f9e4f16$0$261$
"SELECT COUNT (*) FROM utilisateurs;" qui marche très bien dans
phpMyAdmin.


Essaye sans l'espace entre COUNT et l'ouverture de parenthèse.
Sous MySQL, les espaces entre les fonctions et les parenthèses sont peu
appréciées.



HTH
Sébastien Libert

Avatar
Nicolas Repiquet
"Vincent Brabant" a écrit dans le message news:
3f9e5a14$0$16248$

Personellement, j'essayerais en supprimant le ; à la fin du select.


Ouais moi aussi je vote pour ça.

En mysql, le ';' n'est pas un terminateur d'expression, mais un séparateur
d'expressions. Donc si il y a plusieurs expressions, il y a plusieurs
résultats ! D'où l'erreur je dirais.

-- Nicolas Repiquet

Avatar
Gart
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Merci, c'est bien ça qui bloqué.

Libert Sébastien wrote:
| "Gart" a écrit dans le message de news:
| 3f9e4f16$0$261$
|
|>"SELECT COUNT (*) FROM utilisateurs;" qui marche très bien dans
|
| phpMyAdmin.
|
| Essaye sans l'espace entre COUNT et l'ouverture de parenthèse.
| Sous MySQL, les espaces entre les fonctions et les parenthèses sont peu
| appréciées.
|
|
|
| HTH
| Sébastien Libert
|
|

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQE/n3l9Rxl9VpkOBpgRAnIYAKC7MJ9WKin9ns7lCNA9W+JkkSqSbgCeOHEg
lkmkfGPeTERj+wKlK1aLPxU =hwcM
-----END PGP SIGNATURE-----