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

cs_kharachou 9 Messages postés samedi 12 décembre 2009Date d'inscription 17 avril 2011 Dernière intervention - 17 août 2010 à 13:59 - Dernière réponse : electra01 15 Messages postés lundi 16 mars 2009Date d'inscription 26 avril 2012 Dernière intervention
- 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
cs_kharachou 9 Messages postés samedi 12 décembre 2009Date d'inscription 17 avril 2011 Dernière intervention - 17 août 2010 à 16:54
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_kharachou
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 17 août 2010 à 14:55
0
Merci
salut

where 'N° Client' --> [N° Client] peut être??
Commenter la réponse de nhervagault
cs_kharachou 9 Messages postés samedi 12 décembre 2009Date d'inscription 17 avril 2011 Dernière intervention - 17 août 2010 à 15:16
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
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 17 août 2010 à 16:30
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
zinebmeriem 4 Messages postés lundi 2 mai 2011Date d'inscription 11 mai 2011 Dernière intervention - 5 mai 2011 à 11:30
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
zinebmeriem 4 Messages postés lundi 2 mai 2011Date d'inscription 11 mai 2011 Dernière intervention - 5 mai 2011 à 11:33
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
electra01 15 Messages postés lundi 16 mars 2009Date d'inscription 26 avril 2012 Dernière intervention - 25 avril 2012 à 11:06
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
electra01 15 Messages postés lundi 16 mars 2009Date d'inscription 26 avril 2012 Dernière intervention - 25 avril 2012 à 11:13
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.