Insertion d'une zone de texte sur un champ d'une de données

[Résolu]
Signaler
Messages postés
153
Date d'inscription
mardi 1 novembre 2005
Statut
Membre
Dernière intervention
20 août 2006
-
Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
-
bonjour,j'ai un petit pobleme avec mon application java conncté à une base de donnes acces ,le probleme c'est quand je remplis ma zone de texte et j'enregistre tout ca se passe bien ,j'ai mis mon code dans le boutton enregistrer le voilà :

// la creation de la connexion
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection dbcon=DriverManager.getConnection("jdbc:odbc:mabase1");
String nom,prenom;
nom=txtnom.getText();
prenom=txtprenom.getText();
Statement s=dbcon.createStatement();
s.executeUpdate("insert into client values("+nom+","+prenom+")");
dbcon.close();

il me donne l'erreur suivante " java.sql.SQLException: [Microsoft][Pilote ODBC Microsoft Access] Trop peu de paramètres. 2 attendu."
vous pouvez m'aider svp je suis debutant merci a vous

8 réponses

Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
111
Salut,



En sql quand tu traite une chaine de caractères tu doit la mettre entre des ' ' exemple :


INSTERT INTO MA_TABLE VALUES('dupond', 'charles');



donc pour ton cas :

s.executeUpdate("INSERT INTO client VALUES('"+nom+"','"+prenom+"')");



WORA
Messages postés
153
Date d'inscription
mardi 1 novembre 2005
Statut
Membre
Dernière intervention
20 août 2006
3
bonjour, merci beaucoup monsieur j'ai modifier mon code avec ce que tu m'as donné et ca marche très bien , merci encore
Messages postés
153
Date d'inscription
mardi 1 novembre 2005
Statut
Membre
Dernière intervention
20 août 2006
3
bonjour, ca va avec mon premier pobleme j'ai roncontré un autre , c'est l'invers mnt , je veux afficher un champ de la base de donnés sur une zone de texte(c'est une recherche par nom) et j'ai tapé le code suivant :

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection dbcon=DriverManager.getConnection("jdbc:odbc:mabase1");
String nom;
nom=txtnom.getText();
Statement s=dbcon.createStatement();
ResultSet rs=s.executeQuery("select nomclt,prenomclt,telephone from client where nomclt="+nom+"");
txtprenom.setText("prenomclt");
dbcon.close();

il me donne l'ereur suivante : java.sql.SQLException: [Microsoft][Pilote ODBC Microsoft Access] Trop peu de paramètres. 1 attendu.
merci à vous
Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
111
Re,



meme problème

en sql pour TOUTES manipulations quand tu traite une chaine de caractères il faut des ' '



exemple :





INSTERT INTO MA_TABLE VALUES('dupond', 'charles');

SELECTE nomctl,prenomctl,telephone FROM client where nomctl='toto'

UPDATE client SET nomctl='tutu' where nomctl='toto'

.....



et si tu veux faire ca proprement met des ` ` exemple



INSTERT INTO `client` VALUES('dupond', 'charles');


SELECTE `nomctl`,`prenomctl`,`telephone` FROM `client` WHERE `nomctl`='toto';


UPDATE `client` SET `nomctl`='tutu' WHERE `nomctl`='toto'






WORA
Messages postés
153
Date d'inscription
mardi 1 novembre 2005
Statut
Membre
Dernière intervention
20 août 2006
3
bonjour monsieur twinuts ,j'ai essayé avec le code que tu m'as donné mais ca marche pas en faite mon pobleme c'est que je veux faire une recherche je taple le nom sur la zone du travail du nom et quand je vais kliquer sur le boutton recherche il va m'afficher le prenom et le numero de telephone dans les 2 autre zone de texte moi je veux savoir comme afficher ces 2 champs sur les 2 zone de texte
merci monsieur
Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
111
Re,



avant de commencer c'est bien les "monsieur" mais tu peut dire simplement twinuts ca me va très bien





imaginons la table client suivante :



------------------------------------------------------------------------------------

| ID | NOM
| PRENOM |
TELEPHONE |

-------------------------------------------------------------------------------------

| 0 | DUPOND |
Paul |
0000000000 |
-------------------------------------------------------------------------------------

| 1 |
DOE |
Jhon |
6666666666 |

-------------------------------------------------------------------------------------



la clée unique de la table est la colonne ID(il est préférable de mettre une clée unique)



pour récupérer les données de DUPOND tu utilise la requete suivante



SELECT `NOM`,`PRENOM`,`TELEPHONE` FROM `client` WHERE `ID`=0;

ou encore

SELECT * FROM `client` WHERE `ID`=0;

ou encore

SELECT * FROM `client` WHERE `NOM`='DUPOND` AND `PRENOM`='Paul';

ou encore

SELECT `NOM`,`PRENOM`,`TELEPHONE` FROM `client` WHERE `NOM`='DUPOND' AND `PRENOM`='Paul';

ou encore

SELECT * FROM `client` WHERE `NOM`='DUPOND';

.......







maintenant avec du java :



.................................

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Connection dbCon = DriverManager.getConnection("jdbc:odbc:mabase1");

.................................

nom=txtNom.getText();

if(nom.trim().compareTo("") != 0){ //pour ne pas faire de requete dans le vide

Statement s = dbCon.createStatement();

ResultSet rs = s.executeQuery("SELECT * FROM `client` WHERE `NOM`='" + nom + "';");

txtPrenom.setText(rs.getString("PRENOM"));

txtTelephone.setText(rs.getString("TELEPHONE"));

}else

JOptionPane.showMessage(



null, //ou un objet de type JFrame,JDialog,JPanel et
j'en passe


"Impossible de
chercher sans un nom",//le message


"Erreur
Saisie",//le titre



JOptionPane.ERROR_MESSAGE

);

..................................

dbCon.close();


enfin un truc du gout


WORA
Messages postés
153
Date d'inscription
mardi 1 novembre 2005
Statut
Membre
Dernière intervention
20 août 2006
3
salut twinuts , merci pour ton aide , j'ai compris tout ce que tu veux me dire ,en fait pour les requete sql moi j'utilise ( select * from client where id =....) sans faire des ' ' pour les champs et ca marche bien mais bon c'est pas ca le probleme ,j'ai copier ton code et il se compli sans pobleme mais quand je click sur le boutton chercher il me donne l'erreur suivant
java.sql.SQLException: [Microsoft][Gestionnaire de pilotes ODBC] Etat de curseur non valide

merci à toi
Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
111
Salut,



Oki alors tu va changer le dbCon.createStatement();

par dbCon.createStatement(

ResultSet.TYPE_SCROLL_SENSITIVE,

ResultSet.CONCUR_READ_ONLY);



et pour essayer de comprendre à quoi cela correspond va ici :

http://java.developpez.com/faq/jdbc/?page=resultset#typesRS




WORA