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 ..!
A voir également:

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 Membre Dernière intervention 15 juillet 2011 37
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 Membre Dernière intervention 15 juillet 2011 37
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
Rejoignez-nous