|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Erreur avec SELECT, resultset et getInt() [ Système / JDBC ] (gtsoul)
Informations & options pour cette discussion
|
vendredi 15 septembre 2006 à 14:29:19 |
Erreur avec SELECT, resultset et getInt()

gtsoul
|
Bonjour, j'ai un problème que tout noob java rencontre un jour, la connection avec la base de données, plus particulierement avec le formatage des données du resultset. Pour rassurer le lecteur que vous êtes, Je vais tout de suite préciser que je n'ai pas de problèmes dans l'utilisation de requête ne nécessitant de resultset pour le stockage (INSERT, DELETE, UPDATE). Par contre je coince pour effectuer une requete de type SELECT (avec récupération de données).
J'utilise Eclipse et jdk 1.5. Voici la classe que j'utilise pour mes connections : /*-----------------------------------------------------------------------------------------------*/ import java.sql.*; import javax.swing.*;
public class DbManager { private Connection conn; private Statement stmt; private PreparedStatement pStmt; private ResultSet rs; private String pilote = "org.gjt.mm.mysql.Driver"; //"org.gjt.mm.mysql.Driver"; "com.mysql.jdbc.Driver"; private String url = "jdbc:mysql://localhost/";
// Méthode de connection à la base // Arguments : le nom de la base, le log, le pass public void connect(String dbName, String log, String pass) { try { url += dbName; Class.forName(pilote); conn = DriverManager.getConnection(url,log,pass); stmt = conn.createStatement(); } catch ( SQLException E) { JOptionPane.showMessageDialog(null,"Erreur de connexion à la base. Veuillez contacter votre administrateur système","Connexion",JOptionPane.WARNING_MESSAGE); System.out.println("1"); } catch ( ClassNotFoundException E) { E.printStackTrace(); } }
// Méthode qui renvoit un ResultSet pour une requête // @args -> la requete public ResultSet getQuery(String query) { try { rs = stmt.executeQuery(query); } catch (SQLException E) { JOptionPane.showMessageDialog(null,"Erreur de connexion à la base. Veuillez contacter votre administrateur système","Connexion",JOptionPane.WARNING_MESSAGE); System.out.println("2"); System.out.println("SQLException: " + E.getMessage()); System.out.println("SQLState: " + E.getSQLState()); System.out.println("VendorError: " + E.getErrorCode()); } return rs; } } /*-----------------------------------------------------------------------------------------------*/
et voici mon main() : /*------------------------------------------------------------------------------------------------*/ DbManager conn1 = new DbManager(); ResultSet resultat; Integer age; conn1.connect("test","root","pass"); //connection String sql = "SELECT `age` FROM `test`.`plop` WHERE id=1";//on prépare la requete resultat = conn1.getQuery(sql); age = [u]resultat.getInt(1);[/u] System.out.println(age); /*------------------------------------------------------------------------------------------------*/ La connection s'effectue correctement; si je remplace mon SELECT par un UPDATE, les champs sont mis à jour. Donc je pense que la liaison avec la bdd s'effectue correctement. J'ai testé ma requête avec SQLexplorer. MAIS dans le cas présent, Eclipse me souligne [u]resultat.getInt(1);[/u] et me renvoie une erreur explicite: [b]Unhandled exception type SQLException[/b]
Je pense que l'erreur vient du main() ; pourriez-vous m'éclairer ?
Merci
|
|
|
|
vendredi 15 septembre 2006 à 15:14:59 |
Re : Erreur avec SELECT, resultset et getInt()

kirua12
|
Salut,
normal que tu aies une erreur car ta requête renvoie une chaine de caractères, 'age' est compris comme le mot "age" et non la colonne.
Le problème vient des apostrophes, elles sont inutiles, essaie avec :
String sql = "SELECT age FROM test.plop WHERE id=1";//on prépare la requete
ça devrait aller mieux
|
|
|
|
vendredi 15 septembre 2006 à 15:34:18 |
Re : Erreur avec SELECT, resultset et getInt()

gtsoul
|
Ce ne sont pas des apostrophes mais des accents graves, certes elles n'ont aucune utilité dans cet exemple, mais c'est une habitude que j'ai pris. Le problème c'est que même sans il y a toujours le problème.
|
|
|
|
vendredi 15 septembre 2006 à 15:39:59 |
Re : Erreur avec SELECT, resultset et getInt()

DARKSIDIOUS
|
Il faut que tu intercepte l'exception SQLException : Try { age = resultat.getInt(1); } catch (SQLException e) {}
|
|
|
|
vendredi 15 septembre 2006 à 15:50:35 |
Re : Erreur avec SELECT, resultset et getInt()

gtsoul
|
J'ai fait ceci : /*--------------------------------*/ try { age = resultat.getInt(1); } catch (SQLException e) { System.out.println("SQLException: " + e.getMessage()); System.out.println("SQLState: " + e.getSQLState()); System.out.println("VendorError: " + e.getErrorCode()); } /*--------------------------------*/
et cela me retourne : "SQLException: Before start of result set SQLState: S1000 VendorError: 0"
|
|
|
|
vendredi 15 septembre 2006 à 16:25:03 |
Re : Erreur avec SELECT, resultset et getInt()

gtsoul
|
Réponse acceptée !
Je viens de trouver. Il faut positionner le resultset sur un élément (ou sur un autre) pour pouvoir utiliser une méthode getXXX, en utilisant par exemple la méthode first()
ainsi : if(resultat.first()); { age = resultat.getInt(1); System.out.println(age); }
fonctionne.
merci de vos remarques
|
|
|
|
vendredi 15 septembre 2006 à 16:28:58 |
Re : Erreur avec SELECT, resultset et getInt()

DARKSIDIOUS
|
Oui, ce qui est normal puisque si tu ne te positionne pas sur un élément, JDBC n'a aucun moyen de savoir quel enregistrement tu veux récupèrer. A chaque récupération de données dans une base, il faut intercepter l'exception SQLException qui se déclenche par exemple si tu essaie d'accèder à un champ qui n'existe pas.
|
|
|
Cette discussion est classé dans : string, erreur, system, private, resultset
Répondre à ce message
Sujets en rapport avec ce message
insertion de données dans base de donnée à partir de servlet [ par Fridimette ]
Bonjour,J'ai un problème qui est vraiment en trés de me casser la tête : je ne comprend pas pourquoi mes données ne sont pas ajoutées à la base lorsqu
dema,de de petit aide en java [ par ruwaruwa ]
voici ma petite question; je dois ecrire un programme qui permet de:*creer une formation avec 2 diplomes (Licence, Master) ou chaque diplome est formé
Jtable avec JtextField [ par kawim ]
Salut, J'ai un probleme pour afficher le contenu de mon text field dans un Jtable, si quelqu'un peut m'aider, voila mon code, et merci : import jav
erreur no data found [ par fatimazahrazaidi ]
salut, je veux inserer dans un tableau des valeur chargés a partir d"autre tableau mais tjr un erreur qui s affichetry </
Classer fichier .txt dans tableau java [ par Rasta rockeuse ]
Bonjour à tous ! Comme indiqué, je me lance dans un programme sensé prendre les données présentes dans un fichier texte et les classer dans un tablea
Informations sur les bases du serveur Mysql [ par garthos ]
Bonjour,Je souhaite lister les BDD de mon serveur MySql et ensuite lister leur table (par la suite j'afficherai les infos de chaque table), le but fin
java-probleme de saisie [ par steef04 ]
salut j'ai un prob avec le prog qui suit ca ne donne pas la possibilite d'entrer le code,je ne peux continuer une aide please!!!!//ce programme fait l
Adresse Mac via snmp (en local) [ par boumhid ]
Bonjour tt le monde,j'ai pas su comment récupérer mon adresse mac via le protocole SNMP. Ci-dessous, un code que j'ai écrit qui m'a permit de récupére
extraire des donnees d'un fichier xml pour les utiliser [ par ramzi ramzi ]
Salut a tousJ'ai creer un parseur SAX qui extraire les donnee (element et leurs attributs) et les affiches dans la sortie standard(console)j'ai ajoute
une banque en java [ par shadowcat1 ]
bonjour a tousj'ai un probleme d'appel de methode. j'ai tout essayé mais ca ne marche pas.ca concerne la creation d'un compte pour une personne(soit m
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|