Requête update avec Une Base Access et Java

Résolu
cs_kharachou
Messages postés
9
Date d'inscription
samedi 12 décembre 2009
Statut
Membre
Dernière intervention
17 avril 2011
- 17 août 2010 à 13:59
electra01
Messages postés
15
Date d'inscription
lundi 16 mars 2009
Statut
Membre
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 ..!

8 réponses

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

17 août 2010 à 16:54
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 ...
3
nhervagault
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
35
17 août 2010 à 14:55
salut

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

17 août 2010 à 15:16
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.
0
nhervagault
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
35
17 août 2010 à 16:30
'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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zinebmeriem
Messages postés
4
Date d'inscription
lundi 2 mai 2011
Statut
Membre
Dernière intervention
11 mai 2011

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

5 mai 2011 à 11:33
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();
0
electra01
Messages postés
15
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
26 avril 2012

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

25 avril 2012 à 11:13
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
0