Probleme avec prepareStatemet

Résolu
RYL25 Messages postés 2 Date d'inscription dimanche 22 mai 2011 Statut Membre Dernière intervention 23 novembre 2011 - 24 oct. 2011 à 21:32
RYL25 Messages postés 2 Date d'inscription dimanche 22 mai 2011 Statut Membre Dernière intervention 23 novembre 2011 - 23 nov. 2011 à 18:36
Bonjour,

Je fais appel à vous car je sèche vraiment sur une requête qui me simple pas si compliqué que ca mais le problème c'est qu'elle ne fonctionne pas :/

Voici le bout de code :
PreparedStatement ps = connexion.prepareStatement("SELECT * FROM ? ");
ps.setString(1,"client");
ResultSet rs = ps.executeQuery();
while(rs.next()){
     int i = rs.getInt(1);
     String s = rs.getString(2);
     String ville = rs.getString(3);
     System.out.println(i+" "+s+" "+ville);
}

et mon erreur est :
java.sql.SQLException: Syntax error or access violation,  message from server: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''client'' at line 1"


Je vous remercie d'avance,
RYL

8 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
25 oct. 2011 à 08:33
Bonjour,

La méthode setString modifie ta requete en ajoutant le string passé en paramètre et en l'entourant avec des ''. Il est donc normal que tu ais des erreurs.

Je pense que tu utilises mal les preparedStatement. Ce ne sont pas des objets à utilisez systématiquement mais seulement quand le besoin s'en fait sentir et pas sur une requete aussi simple.

Sinon tu n'as besoin dans ton application pour exécuter toutes tes requetes que d'un preparedStatement "SELECT ? FROM ? WHERE ?=? AND ?=?".

Le but de preparedStatement est de t'aider à paramétrer tes requetes, les ? sont plus a utiliser comme ceci : SELECT * FROM table WHERE id = ?

Donc, place directement le nom de ta table dans ta requete.
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
7 nov. 2011 à 15:08
Pas de réaction ??

C'est bien quand on a un retour quand même ...
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
7 nov. 2011 à 17:20
;o) il a due trouver ;o) hihi
arf!! les ingrats ;o)


GodConan ;o)
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
8 nov. 2011 à 07:45
Oui, j'espère pour lui que maintenant son problème est résolut.

Ce n'est pas compliqué de dire un merci, ca marche maintenant et de cliquer sur réponse acceptée (d''ailleurs, je vais le faire pour lui)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
8 nov. 2011 à 08:48
tricheur ;o)

GodConan ;o)
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
8 nov. 2011 à 09:23
hé hé hé

A un époque, je renommais les sujets mal titrés et j'acceptais les réponses qui me semblaient valables pour que les pages cs sortent plus facilement sur google mais ca m'a un peu lassé, je devrais peut être reprendre ca.

Ce qui est étonnant c'est que de nombreux sujets sont résolus mais que soit les titres sont pourris soit l'auteur n'accepte pas la réponse qui l'a aidé.

Et c'est pour ca que sur google, on tombe assez rarement sur les pages cs
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
8 nov. 2011 à 09:36
en meme temps!! les forum qui resorte sur google sont souvent pourris ;o)

GodConan ;o)
0
RYL25 Messages postés 2 Date d'inscription dimanche 22 mai 2011 Statut Membre Dernière intervention 23 novembre 2011
23 nov. 2011 à 18:36
Je suis vraiment désolé pour le temps que j'ai mis à répondre.
J'ai posté le sujet sur plusieurs forum ... Ne m'en voulez pas :)

Je vais quand même expliqué comment j'ai fais:

j'ai simplement construit ma requête pas à pas. Je vais donner un exemple ca sera plus simple :
string sql="Select * from ";
String nom=getNomTable();
Sql=sql+nom;

Et pour l'affichage, j'ai utilisé l'objet ResultSetMetaData qui me permet de récupérer le type
ResultSetMetaData rsmd;

rsmd = results.getMetaData();

int type= rsmd.getColumnType(); // qui retourne un entier

Et en fonction du type, j'utilise différent getter.

Voila,
J’espère que j'ai répondu asser précisément,
Encore désolé pour le temps que j'ai mis à répondre.
A bientot
RYL
0