[JAVA] mySQL ajout d'une entrée
Résolu/Fermé
alec.po
Messages postés
118
Date d'inscription
mardi 10 juillet 2007
Statut
Membre
Dernière intervention
11 février 2012
-
25 janv. 2009 à 00:03
alec.po Messages postés 118 Date d'inscription mardi 10 juillet 2007 Statut Membre Dernière intervention 11 février 2012 - 27 janv. 2009 à 18:35
alec.po Messages postés 118 Date d'inscription mardi 10 juillet 2007 Statut Membre Dernière intervention 11 février 2012 - 27 janv. 2009 à 18:35
A voir également:
- [JAVA] mySQL ajout d'une entrée
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java décompiler - Télécharger - Langages
13 réponses
Utilisateur anonyme
25 janv. 2009 à 01:22
25 janv. 2009 à 01:22
Bonjour,
Je ne connais pas SQL, mais pourquoi (null, 'jean', 'Dupont', '22') et non (null, "jean", "Dupont", "22") ?
Cordialement,
Dan
Je ne connais pas SQL, mais pourquoi (null, 'jean', 'Dupont', '22') et non (null, "jean", "Dupont", "22") ?
Cordialement,
Dan
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
25 janv. 2009 à 01:41
25 janv. 2009 à 01:41
Bonsoir,
Modifie ceci :
catch (Exception sql_erreur) { //Si erreur
System.err.println("Erreur !");
}
Par ceci :
catch (Exception sql_erreur) { //Si erreur
System.err.println(sql_erreur.getStackTrace());
}
Et dis nous exactement de quoi il en retourne.
Cordialement,
Modifie ceci :
catch (Exception sql_erreur) { //Si erreur
System.err.println("Erreur !");
}
Par ceci :
catch (Exception sql_erreur) { //Si erreur
System.err.println(sql_erreur.getStackTrace());
}
Et dis nous exactement de quoi il en retourne.
Cordialement,
Utilisateur anonyme
25 janv. 2009 à 02:04
25 janv. 2009 à 02:04
Salut,
Bon je viens de "tomber" sur une réponse de kriesgraf ici:
http://www.commentcamarche.net/forum/affich 6780340 java sql pb insert into
(à consulter peut-etre) et j'ai constaté que la syntaxe 'jean', 'Dupont', '22' est correcte.
Désolé,
Dan
Bon je viens de "tomber" sur une réponse de kriesgraf ici:
http://www.commentcamarche.net/forum/affich 6780340 java sql pb insert into
(à consulter peut-etre) et j'ai constaté que la syntaxe 'jean', 'Dupont', '22' est correcte.
Désolé,
Dan
Utilisateur anonyme
25 janv. 2009 à 02:13
25 janv. 2009 à 02:13
Je ne sais pas pourquoi les tirets manquent après affich et entre les mots qui suivent !!!
http://www.commentcamarche.net/forum/affich 6780340 java sql pb insert into
http://www.commentcamarche.net/forum/affich 6780340 java sql pb insert into
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
alec.po
Messages postés
118
Date d'inscription
mardi 10 juillet 2007
Statut
Membre
Dernière intervention
11 février 2012
13
25 janv. 2009 à 11:14
25 janv. 2009 à 11:14
Merci pour vos réponce.
Marco, quand je fait ce que tu ma dit, sa met : "[Ljava.lang.StackTraceElement;@1100d7a"
Danimo, je n'ai pas compris :(
merci encore
Marco, quand je fait ce que tu ma dit, sa met : "[Ljava.lang.StackTraceElement;@1100d7a"
Danimo, je n'ai pas compris :(
merci encore
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
25 janv. 2009 à 21:06
25 janv. 2009 à 21:06
Bonsoir,
Désolé, je me suis planté :(
Remplaces maintenant ceci :
catch (Exception sql_erreur) { //Si erreur
System.err.println(sql_erreur.getStackTrace());
}
Par ceci stp :
catch (Exception sql_erreur) { //Si erreur
sql_erreur.printStackTrace();
}
Merci
Désolé, je me suis planté :(
Remplaces maintenant ceci :
catch (Exception sql_erreur) { //Si erreur
System.err.println(sql_erreur.getStackTrace());
}
Par ceci stp :
catch (Exception sql_erreur) { //Si erreur
sql_erreur.printStackTrace();
}
Merci
Utilisateur anonyme
25 janv. 2009 à 21:59
25 janv. 2009 à 21:59
Bonjour,
>>> alec.po:
Désolé, ne connaisant pas sql, j'aurais mieux fait de m'abstenir de répondre.
En fait je trouvais "anormal" cette syntaxe:
("INSERT INTO utilisateur values (null, 'jean', 'Dupont', '22')") ; (les ' )
Mais en consultant d'autres messages, je me suis rendu compte que cette forme d'écriture était était aussi présente et j'en ai conclu que c'était la bonne.
Je t'ai donc indiqué le lien et pas de chance c'est mal sorti. Je l'ai donc réenvoyé.
Cordialement,
Dan
>>> alec.po:
Désolé, ne connaisant pas sql, j'aurais mieux fait de m'abstenir de répondre.
En fait je trouvais "anormal" cette syntaxe:
("INSERT INTO utilisateur values (null, 'jean', 'Dupont', '22')") ; (les ' )
Mais en consultant d'autres messages, je me suis rendu compte que cette forme d'écriture était était aussi présente et j'en ai conclu que c'était la bonne.
Je t'ai donc indiqué le lien et pas de chance c'est mal sorti. Je l'ai donc réenvoyé.
Cordialement,
Dan
alec.po
Messages postés
118
Date d'inscription
mardi 10 juillet 2007
Statut
Membre
Dernière intervention
11 février 2012
13
26 janv. 2009 à 18:09
26 janv. 2009 à 18:09
Merci quand même Danimo.
Marco, maintenant sa donne ça :
java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.Statement.checkForDml(Statement.java:417)
at com.mysql.jdbc.Statement.executeQuery(Statement.java:1140)
at Main.main(Main.java:17)
Marco, maintenant sa donne ça :
java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.Statement.checkForDml(Statement.java:417)
at com.mysql.jdbc.Statement.executeQuery(Statement.java:1140)
at Main.main(Main.java:17)
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
26 janv. 2009 à 20:55
26 janv. 2009 à 20:55
Bonsoir,
Essaie donc de remplacer ceci :
ResultSet retour1= instruction.executeQuery("INSERT INTO utilisateur values (null, 'jean', 'Dupont', '22')") ;
par ceci :
int retour2= instruction.executeUpdate("INSERT INTO utilisateur values (null, 'jean', 'Dupont', '22')") ;
Ensuite, comme le signale william7007, une chose je ne sais pas si la derniere valeur que tu veux introduire dans la table est un nombre ou un texte (22) si c'est un nombre alors tu doit l'écrire sans cote(').
Cordialement,
Essaie donc de remplacer ceci :
ResultSet retour1= instruction.executeQuery("INSERT INTO utilisateur values (null, 'jean', 'Dupont', '22')") ;
par ceci :
int retour2= instruction.executeUpdate("INSERT INTO utilisateur values (null, 'jean', 'Dupont', '22')") ;
Ensuite, comme le signale william7007, une chose je ne sais pas si la derniere valeur que tu veux introduire dans la table est un nombre ou un texte (22) si c'est un nombre alors tu doit l'écrire sans cote(').
Cordialement,
william7007
Messages postés
335
Date d'inscription
dimanche 28 décembre 2008
Statut
Membre
Dernière intervention
23 mars 2010
46
26 janv. 2009 à 19:49
26 janv. 2009 à 19:49
bonjour ou bonsoir
je ne alors les gars ça fonctionne maintenant ou pas ?
je ne sais pas si je sort du jeu mais pour moi je ne voterais pas 1 euro pour le code après le SELECT pourquoi? simplement que tu ouvre la table en mode lecture ce qui est tres bien, le SGBDR accepte ta requete et sans toute fois decherger le premier Statement question de liberer les ressoy=urce de la table afin que celle ci puis repondre à d'autres requete tu la fait subir du coup une deuxieme requete il y'a de quoi elle refuseras voir mm se metra en colère (je rigole). je dit simplement qu'il faut juste apres la premiere connection tu liberes les resources de la table et apres tu te reconectes à nouveau à la table ben essaie ce ci voir et met moi au courant
hhohohooh
une chose je ne sais pas si la derniere valeur que tu veux introduire dans la table est un nombre ou un texte (22) si c'est un nombre alors tu doit l'écrire sans cote(') donc tu ecris simplement
et il n'y a pas d'space entre values et la parenthèse ouvrant.
cdlt
je ne alors les gars ça fonctionne maintenant ou pas ?
je ne sais pas si je sort du jeu mais pour moi je ne voterais pas 1 euro pour le code après le SELECT pourquoi? simplement que tu ouvre la table en mode lecture ce qui est tres bien, le SGBDR accepte ta requete et sans toute fois decherger le premier Statement question de liberer les ressoy=urce de la table afin que celle ci puis repondre à d'autres requete tu la fait subir du coup une deuxieme requete il y'a de quoi elle refuseras voir mm se metra en colère (je rigole). je dit simplement qu'il faut juste apres la premiere connection tu liberes les resources de la table et apres tu te reconectes à nouveau à la table ben essaie ce ci voir et met moi au courant
try { Class.forName(pilote); Connection connexion = DriverManager.getConnection("jdbc:mysql://localhost/donne", "root", ""); java.sql.Statement instruction =null; instruction = connexion.createStatement() ; System.out.println("connexion réussi"); // ici tu introduit d'abord les données dans la table ResultSet retour1= instruction.executeQuery("INSERT INTO utilisateur values(null, 'jean', 'Dupont', '22')") ; instruction.close(); // Ici tu lis les données de la table instruction = connexion.createStatement(); ResultSet retour0= instruction.executeQuery("SELECT * FROM utilisateur"); instruction.close(); /* S'il y'a beaucoup de données dans la table le mieux est de faire une boucle pour les afficher tous affin de ne pas avoir de surprise //*/ System.out.println("Liste des Utilisateurs"); while(retour0.next()){ System.out.println(retour0.getString(0)+" "+retour0.getString(1)+" "+retour0.getString(2)+" "+retour0.getString(3)); } }catch (SQLException sql_erreur) { //Si erreur System.err.println("Erreur !"); }
hhohohooh
une chose je ne sais pas si la derniere valeur que tu veux introduire dans la table est un nombre ou un texte (22) si c'est un nombre alors tu doit l'écrire sans cote(') donc tu ecris simplement
ResultSet retour1= instruction.executeQuery("INSERT INTO utilisateur values(null, 'jean', 'Dupont', 22)") ;
et il n'y a pas d'space entre values et la parenthèse ouvrant.
cdlt
alec.po
Messages postés
118
Date d'inscription
mardi 10 juillet 2007
Statut
Membre
Dernière intervention
11 février 2012
13
26 janv. 2009 à 21:34
26 janv. 2009 à 21:34
Merci de vos réponce :
Marco j'ai tester çà :
Erreur...
William, j'ai tester ton code il me fait une erreur aussi :( alors j'ai enlever la partie "liste des Utilisateurs", même erreur...
Et c'est bien un int la dernière valeur, alors j'ai enlever les (').
Je comprend pas la lecture marche bien pourtant...
Merci pour votre aide c'est sympa.
Marco j'ai tester çà :
import java.sql.* ; public class Main { public static void main(String[] args){ String pilote = "com.mysql.jdbc.Driver"; try { Class.forName(pilote); Connection connexion = DriverManager.getConnection("jdbc:mysql://localhost/donne", "root", ""); java.sql.Statement instruction=connexion.createStatement() ; System.out.println("connexion réussi"); int retour2= instruction.executeUpdate("INSERT INTO utilisateur values (null, 'jean', 'Dupont', 22)") ; }catch (Exception sql_erreur) { //Si erreur System.err.println("Erreur !"); } } }
Erreur...
William, j'ai tester ton code il me fait une erreur aussi :( alors j'ai enlever la partie "liste des Utilisateurs", même erreur...
Et c'est bien un int la dernière valeur, alors j'ai enlever les (').
Je comprend pas la lecture marche bien pourtant...
Merci pour votre aide c'est sympa.
william7007
Messages postés
335
Date d'inscription
dimanche 28 décembre 2008
Statut
Membre
Dernière intervention
23 mars 2010
46
26 janv. 2009 à 21:40
26 janv. 2009 à 21:40
as tu enlevé l'espace entre "VALUES" et "{" ?
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
26 janv. 2009 à 21:58
26 janv. 2009 à 21:58
Je viens de regarder au niveau de la documentation, l'espace n'est pas gênant en fait, le problème vient d'ailleurs.
Cordialement,
Cordialement,
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
26 janv. 2009 à 21:45
26 janv. 2009 à 21:45
Et vire ton : System.err.println("Erreur !"); dans ton catch, ça ne nous donne aucune indication.
Laisse donc le sql_erreur.printStackTrace(); stp.
Cordialement,
Laisse donc le sql_erreur.printStackTrace(); stp.
Cordialement,
alec.po
Messages postés
118
Date d'inscription
mardi 10 juillet 2007
Statut
Membre
Dernière intervention
11 février 2012
13
26 janv. 2009 à 21:47
26 janv. 2009 à 21:47
:)
java.sql.SQLException: Column count doesn't match value count at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3277)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1402)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1317)
at Main.main(Main.java:19)
java.sql.SQLException: Column count doesn't match value count at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3277)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1402)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1317)
at Main.main(Main.java:19)
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
26 janv. 2009 à 21:57
26 janv. 2009 à 21:57
L'erreur te dit que tu donne trop ou pas assez d'indications dans ton insert.
La première des choses à faire, c'est de virer le "null" pour l'identifiant (ce n'est pas à toi de le spécifier en général, sauf si tu utilises les GeneratorType et autres trucs de la JPA, mais je ne pense pas que ce soit à toi de le faire).
Le mieux, c'est d'adapter ta requête en spécifiant les colonnes que tu souhaites renseigner. Modifie donc ton :
int retour2= instruction.executeUpdate("INSERT INTO utilisateur values (null, 'jean', 'Dupont', 22)") ;
En : int retour2= instruction.executeUpdate("INSERT INTO utilisateur ('prenom', 'nom', 'age') values ('jean', 'Dupont', 22)") ;
Cordialement,
La première des choses à faire, c'est de virer le "null" pour l'identifiant (ce n'est pas à toi de le spécifier en général, sauf si tu utilises les GeneratorType et autres trucs de la JPA, mais je ne pense pas que ce soit à toi de le faire).
Le mieux, c'est d'adapter ta requête en spécifiant les colonnes que tu souhaites renseigner. Modifie donc ton :
int retour2= instruction.executeUpdate("INSERT INTO utilisateur values (null, 'jean', 'Dupont', 22)") ;
En : int retour2= instruction.executeUpdate("INSERT INTO utilisateur ('prenom', 'nom', 'age') values ('jean', 'Dupont', 22)") ;
Cordialement,
alec.po
Messages postés
118
Date d'inscription
mardi 10 juillet 2007
Statut
Membre
Dernière intervention
11 février 2012
13
27 janv. 2009 à 18:35
27 janv. 2009 à 18:35
Merci infiniment, c'était le "null" qui provoquait l'erreur...
Sa marche nickel maintenant. :)
Merci encore Marco.
Sa marche nickel maintenant. :)
Merci encore Marco.