Requête update avec Une Base Access et Java [Résolu]

Messages postés
9
Date d'inscription
samedi 12 décembre 2009
Dernière intervention
17 avril 2011
- - Dernière réponse : electra01
Messages postés
15
Date d'inscription
lundi 16 mars 2009
Dernière intervention
26 avril 2012
- 25 avril 2012 à 11:13
Bonjour


J'ai tenté d'utiliser Java avec Access en utilisant ODBC.
La connexion de passe bien, les insertions d'enregistrements et les requêtes select aussi.
Par contre je tente de modifier quelques lignes de la base en faisant une requête Update et cela ne fonctionne pas.
En effet,à l'execution du programme,tout est bien ya pas d'erreur de syntaxe..!!mais en revenant sur la table dans la base de données je vois que la ligne ne se modifie pas.


Voila mon code:

class TexteListener_bout3 implements ActionListener {
public void actionPerformed(ActionEvent Event) {
Client3 fenW=new Client3();
fenW.show();
dispose();



Object valeur1 = box1.getSelectedItem() ;
String a1=(String)valeur1;

Object valeur2 = box2.getSelectedItem() ;
String a2=(String)valeur2;

Object valeur3 = box3.getSelectedItem() ;
String a3=(String)valeur3;
int num1=0;


try{

String url="jdbc:odbc:projet1";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn=DriverManager.getConnection(url);
java.sql.Statement st = conn.createStatement();

String req2="SELECT Max([N° Client]) FROM Client";
ResultSet res=st.executeQuery(req2);


while (res.next())
{
num1 = res.getInt(1);

}

st.executeUpdate("UPDATE Client SET Civilité='"+a1+"',Nom='"+box15.getText()+"', Prenom='"+box14.getText()+"', Lieu_Naissance='"+box17.getText()+"',Profession='"+box18.getText()+"',Tel_Dom='"+box19.getText()+"', Tel_GSM='"+box20.getText()+"', Sexe='"+a2+"',Sit_Famil='"+a3+"', Date_Naissance='"+box16.getText()+"' WHERE 'N° Client'='"+num1+"'");


catch(SQLException s)
{
JOptionPane.showMessageDialog(null,"Error sql :"+s.toString()+" "+s.getErrorCode()+" "+s.getSQLState());

}
catch(Exception e2)
{
JOptionPane.showMessageDialog(null,"Error:"+e2.toString()+e2.getMessage());
}}
}



Si quelqu'un pourrai m'aider j'en serai très reconnaissant ..!
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
9
Date d'inscription
samedi 12 décembre 2009
Dernière intervention
17 avril 2011
3
Merci
Oui tu avais raison,Il a fallut changer le WHERE 'N°Client'='"+num1+"'
par WHERE [N° Client]="+num1+"
Maintenant le update se réalise normalement.

Je te remercie nhervagault ...

Merci cs_kharachou 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 103 internautes ce mois-ci

Commenter la réponse de cs_kharachou
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
0
Merci
salut

where 'N° Client' --> [N° Client] peut être??
Commenter la réponse de nhervagault
Messages postés
9
Date d'inscription
samedi 12 décembre 2009
Dernière intervention
17 avril 2011
0
Merci
Salut

Mais Si on change le 'N° Client' par le [N° Client] ca donne à l'execution erreur de compatibilité des données.
Donc je pense que le probleme ne parvient pas d'ici.
Commenter la réponse de cs_kharachou
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
0
Merci
'N° Client' est un chaine de caractère
ecrire
'N° Client'='"+num1+"'"
revient à ecire
'N° Client'='2'

ce qui est toujours faux
donc rien ne va etre mis à jour

NB

[N° Client]="+num1
si num1 est numerique

d'ou l'utilité d'utiliser des requetes paramétrées et des noms de colonnes sans caractères spéciaux.
Commenter la réponse de nhervagault
Messages postés
4
Date d'inscription
lundi 2 mai 2011
Dernière intervention
11 mai 2011
0
Merci
gestion de base de données access avec java : Comment récupérer des données d'un champs de l'une table de la base (pour calculer un montant par exemple, il faut savoir le prix unitaire d'un produit).
Commenter la réponse de zinebmeriem
Messages postés
4
Date d'inscription
lundi 2 mai 2011
Dernière intervention
11 mai 2011
0
Merci
AVEC NETBEENS
public void SQLUpdate(String sql)throws SQLException{
Statement statement=null;
try {
statement=connection.createStatement();
statement.executeUpdate(sql);
}
catch (SQLException e){System.out.print(e);statement.close();}
}
Pour l'appel de la procédure:
BaseDDView.this.connect();
int w=Integer.parseInt(this.jTextField3.getText());
int x=Integer.parseInt(this.jTextField1.getText());
int y=Integer.parseInt(this.jTextField5.getText());
int z=Integer.parseInt(this.jTextField6.getText());

if (this.jComboBox1.getSelectedItem()=="table"){ y=1;}
try{
BaseDDView.this.SQLUpdate("INSERT INTO commande VALUES("+w+","+x+", "+y+"," +z+")");
System.out.println("Mise à jour terminée");
}
catch (SQLException e){}
BaseDDView.this.disconnect();
Commenter la réponse de zinebmeriem
Messages postés
15
Date d'inscription
lundi 16 mars 2009
Dernière intervention
26 avril 2012
0
Merci
Salut à tous

J'ai fais un update dans ma table Produits et ce dernier marche a merveille, sauf qu'il ya une exeption qui s'affiche je ne sais pas comment remedier a cela.

Le parametre code est une clé primaire, et voila mon code:
     String query2="UPDATE Produits SET  Des='"+Des+"',Psu="+Psu+" ,Taxe_Groupe="+taxeGroupe+" WHERE code ='"+Code+"'"; 
         try { 
        	    
        	 Statement stmt = CConnect.getInstance().createStatement(); 
        	  
        	 int nbMaj = stmt.executeUpdate(query2); 
        	    
        	 System.out.println("mise à jour  " +nbMaj+ "  effectuée"); 
        	} 
         catch (SQLException e) { 
        	   
        	 e.printStackTrace(); 
 }

L'erreur est :

java.sql.SQLException: [Microsoft][Pilote ODBC Microsoft Access] Modifications non effectuées: risque de doublons dans champs index, clé principale ou relation interdisant les doublons. Modifiez les données des champs contenant les doublons, enlevez ou redéfinissez l'index pour permettre les doublons et recommencez.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(Unknown Source)
at Produit.(Produit.java:56)
at MainFact.Initialiser(MainFact.java:24)
at MainFact.main(MainFact.java:7)
Cependant les modifications sont effectuées !!!

j'attends vos propositions
Commenter la réponse de electra01
Messages postés
15
Date d'inscription
lundi 16 mars 2009
Dernière intervention
26 avril 2012
0
Merci
Wila


« Soit A un succès dans la vie. Alors A x + y + z, où x travailler, y = s'amuser, z = se taire. »
de Albert Einstein
Commenter la réponse de electra01

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.