salut
ça ce que je vais faire juste que je vois pas ce que je vais mettre à la place de tadate et taproblematique ?????
salut
ça ce que je vais faire juste que je vois pas ce que je vais mettre à la place de tadate et taproblematique ?????
Salut
libuma
voila le code que j'ai fait mais j'ai un presque tous les types (setDate, setString, setDecimal, setInt) soulignés en rouge avec des crois rouge
regarde les photos en pièce jointe
merci
Il te faut mettre les types qu'il faut. Les champs que tu recupere des champs de texte sont des String. Il faut les convertir en int ou en Date avant d'appeler les methodes setXxx.
Pour information, dans les méthodes setXxx(n, date); le n represente la position du parametre (representé par le ?) dans la requete.
sinon avant de t'habituer aux preparedStatement, tu peux essayer la requete
Comme je te l'ai dit, si une requete ne marche pas, tu fais un println dans la console et tu examine la requete pour savoir ce qui cloche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 String sql= "insert into Interventioninter (DATE_ENTREE, DATE_INTERINT, DATE_FACTURATION, DATE_SORTIE, PROBLEMATIQUE, DESCRIPTION, COUT, MODE_PAIEMENT, INTSTATUT, N_CLIENT) values ('"+Denter.getText()+"', '"+Dateinter.getText()+"', '"+Dfacture.getText()+"', '"+Dsortie.getText()+"', '"+Pb.getText()+"', '"+Descrip.getText()+"', "+Ct.getText()+", '"+val1+"', '"+val2+"', "+Rclient.Nmclient+") where N_CLIENT="+Rclient.Nmclient;
Il faut que tu arrives à comprendre le pourquoi des " + variable + " etc..
Tu dois penser à faire correspondre le type de tes champs que ce soit en java ou dans ta table.
En ce qui concerne le
le "1" correspond au premier "?" dans ma requête préparée et non au premier champs de ta table !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 statement.setDate(1,taDate);
Ensuite, tu dois faire correspondre les types.
Si tu veux insérer un élément dans un champs VARCHAR, tu dois faire un setString.
Dans un champs INT,NUMBER => setInt
Dans un champs Date => setDate
...
Dans ce cas ci, t'es "+ champs.getText() + " ne servent à rien, tu l'utilisais pour insérer le contenu d'un champs dans une chaîne de caractère. Tu utilisais donc la concaténation.
Dans notre cas, tu dois juste introduire, s'il s'agit d'un String
Pour une date, c'est plus compliqué, tu dois bien faire correspondre le format que tu utilises sous java au format que ta table (db) attend.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 statement.setString(5,Pb.getText());
salut tout le monde
depuis hier je travaille sur ce que vous m'avez, certes j'ai fait un progres mais pas ce que je veux exactement bon je m'explique. comme je vous disais il me reste pour finaliser mon projet que seule requete d'insertion mais mon objectif c'est d'utiliser cette requete d'insertion dans deux classe, une pour l'ajout des interventions internes et l'autre pour des interventions externes. alors en utilisant le code des interventions internes j'ai fait le code suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 String Denter; String Dateinter; String Dfacture; String Dsortie; Date Cdenter=(Date); Date Cdateinter=(Date); Date Cdfacture=(Date); Date Cdsortie=(Date); PreparedStatement statement = (PreparedStatement) con.prepareStatement("insert into Interventioninter (DATE_ENTREE, DATE_INTERINT, DATE_FACTURATION, DATE_SORTIE, PROBLEMATIQUE, DESCRIPTION, COUT, MODE_PAIEMENT, INTSTATUT, N_CLIENT) values (?,?,?,?,?,?,?,?,?,?)"); statement.setDate(1,Cdenter); statement.setDate(2,Cdateinter); statement.setDate(3,Cdfacture); statement.setDate(4,Cdsortie); statement.setString(5,Pb.getText()); statement.setString(6,Descrip.getText()); statement.setString(7,Ct.getText()); statement.setString(8,val1); statement.setString(9,val2); statement.setString(10,Rclient.Nmclient); int resultat1 = statement.executeUpdate(); if(resultat1>0) JOptionPane.showMessageDialog(null,"Intervention créée avec succes" );
j'ai bien le message comme quoi l'ajout a été bien effectué, alors quand je cherche dans la base je trouve toutes les datas qui j'ai ajouté dans bien là sauf que dans les champs des dates j'ai des valeurs null chose que je comprend pas. bon je veux attirer votre attention qu'ecplise m'ajouter la commande suivante au debut de mon code
alors pour les intervention externe j'ai bien le message que l'lintervention a ete créée mais quand je vérifie dans la base je ne trouve aucune data poutant le code c'est le meme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part protected static final Date Date = null;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 String Dateinter; String Dfacture; Date Cdateinter=(Date); Date Cdfacture=(Date); PreparedStatement statement = (PreparedStatement) con.prepareStatement("insert into Interventioninter (DATE_INTERINT, DATE_FACTURATION, PROBLEMATIQUE, DESCRIPTION, COUT, MODE_PAIEMENT, INTSTATUT, N_CLIENT) values (?,?,?,?,?,?,?,?)"); statement.setDate(1,Cdateinter); statement.setDate(2,Cdfacture); statement.setString(3,Pb.getText()); statement.setString(4,Descrip.getText()); statement.setString(5,Ct.getText()); statement.setString(6,val1); statement.setString(7,val2); statement.setString(8,Rclient.Nmclient); int resultat1 = statement.executeUpdate(); if(resultat1>0) JOptionPane.showMessageDialog(null,"Intervention créée avec succes" );
je vous laisse aussi le code sql de la création de mes tables.
Création de la table Interventioninter
Code : Sélectionner tout - Visualiser dans une fenêtre à part CREATE TABLE Interventioninter (N_INTERINT INT(5) AUTO_INCREMENT PRIMARY KEY, DATE_ENTREE DATE, DATE_INTERINT DATE, DATE_FACTURATION DATE, DATE_SORTIE DATE, PROBLEMATIQUE VARCHAR(40), DESCRIPTION LONGTEXT, COUT DECIMAL(6,2), MODE_PAIEMENT VARCHAR(20), INTSTATUT VARCHAR(20), N_CLIENT INT(5)) ;
Création de la table Interventionexter
Code : Sélectionner tout - Visualiser dans une fenêtre à part CREATE TABLE Interventionexter (N_INTEREXT INT(5) AUTO_INCREMENT PRIMARY KEY, DATE_INTEREXT DATE, DATE_FACTURATION DATE, PROBLEMATIQUE VARCHAR(40), DESCRIPTION LONGTEXT, COUT DECIMAL(6,2), MODE_PAIEMENT VARCHAR(20), EXTSTATUT VARCHAR(20), N_CLIENT INT(5)) ;
merci d'avance
tu les initialise comment tes Objets Date?
Salut
désolé j'ai pas compris ce que tu voulais dire mais si tu veux dire si j'ai initialisé les champs de date beh j'ai fait ça
Code : Sélectionner tout - Visualiser dans une fenêtre à part tu les initialise comment tes Objets Date?
mais n'a pas resolu le problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 String Denter; String Dateinter; String Dfacture; String Dsortie; Date Cdenter=(Date); Date Cdateinter=(Date); Date Cdfacture=(Date); Date Cdsortie=(Date); Cdenter= null; Cdateinter=null; Cdfacture=null; Cdsortie=null;
thanks
heu4Ca compile ça? Si tu ne met rien dans tes Cdateinter etc, forcément, tu ne va rien mettre dans la base de donnée :/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Date Cdenter=(Date); Date Cdateinter=(Date); Date Cdfacture=(Date); Date Cdsortie=(Date);
Salut
oui ça compile, alors qu'est ce que tu veux que je mette la-dans ????
Code : Sélectionner tout - Visualiser dans une fenêtre à part Ca compile ça? Si tu ne met rien dans tes Cdateinter etc, forcément, tu ne va rien mettre dans la base de donnée :/
Oui ça compile
Sinon Date n'est pas initialisé c'est pourquoi tu as null dans la base de données.
Si tes champs de texte sont dans un format du genre jj/mm/aaaa, tu peux utiliser le code suivant pour la date.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Calendar date = Calendar.getInstance(); Date Cdenter= date.getTime(); Date Cdateinter= date.getTime(); Date Cdfacture= date.getTime(); Date Cdsortie= date.getTime();
Sinon juste pour comprendre, quand tu utilise le suivant, tu t'attends à quel résultat?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Calendar date=Calendar.getInstance(); String[] dateStr= txtBox.getText().split("/"); // JTextField txtBox; date.set(Integer.parseInt(dateStr[2]), Integer.parseInt(dateStr[1]), Integer.parseInt(dateStr[0])); Date Cdenter= date.getTime(); Date Cdateinter= date.getTime(); Date Cdfacture= date.getTime(); Date Cdsortie= date.getTime();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3Date Cdenter=Date; Cdenter= null;
Partager