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

Signaler
Messages postés
9
Date d'inscription
samedi 12 décembre 2009
Statut
Membre
Dernière intervention
17 avril 2011
-
Messages postés
15
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
26 avril 2012
-
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 ..!
A voir également:

8 réponses

Messages postés
9
Date d'inscription
samedi 12 décembre 2009
Statut
Membre
Dernière intervention
17 avril 2011

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 ...
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
32
salut

where 'N° Client' --> [N° Client] peut être??
Messages postés
9
Date d'inscription
samedi 12 décembre 2009
Statut
Membre
Dernière intervention
17 avril 2011

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.
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
32
'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.
Messages postés
4
Date d'inscription
lundi 2 mai 2011
Statut
Membre
Dernière intervention
11 mai 2011

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).
Messages postés
4
Date d'inscription
lundi 2 mai 2011
Statut
Membre
Dernière intervention
11 mai 2011

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();
Messages postés
15
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
26 avril 2012

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
Messages postés
15
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
26 avril 2012

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