JAVA --Requtes ACCESS

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



Et 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)
Et pourtant la modification s'effectue normalement dans ma table!!!

j'attends vos propositions

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

11 réponses

electra01 Messages postés 15 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 26 avril 2012
25 avril 2012 à 15:42
RE
J'ai aussi une autre question pour vous les amis voila: dans ma table Produit j'ai pu faire un UPDATE, SELECT, INSERT sans probleme a partir de mon programme java sauf pour le DELETE il ne marche pas je ne sais pas pour quoi pourtant j'ai tout essaye pour que ça marche voila mon code:

  String query2"DELETE FROM Produits WHERE code'"+Code+"'"; 
      try { 
     	    
    	  PreparedStatement stmt = CConnect.getInstance().prepareStatement(query2); 
     	  
     	 int nbMaj =  stmt.executeUpdate(); 
     	 
     	 System.out.println("mise à jour  " +nbMaj+ "  effectuée"); 
     	} 
      catch (SQLException e) { 
     	   
     	 e.printStackTrace(); 
}
.

NB : il n y a aucune erreur ou exeption generer a l'execution !!!!!!!!!

Si quelqu'un y voit plus claire que moi, je suis lllllllllaaaaa
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
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
25 avril 2012 à 21:59
Salut,

Tu as passé un commit après le DELETE ? Ou tu as un autocommit sur ta base ?
0
electra01 Messages postés 15 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 26 avril 2012
26 avril 2012 à 10:09
salut tout le monde

Julien39 je fais comment pour le commit??? je n'ai pas compris

thanks

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
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
26 avril 2012 à 10:50
executeUpdate("COMMIT");

Ça te permet de valider les modifications que tu effectues sur les données de la base. Selon la façon dont tu as paramétré ta connexion, le commit est effectué automatiquement ou non.
0

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

Posez votre question
electra01 Messages postés 15 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 26 avril 2012
26 avril 2012 à 10:58
Mais pourtant j'ai fais un update, un insert sans utiliser COMMIT et ca a marché pourquuoi le delete necessiterait un COMMIT?

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
electra01 Messages postés 15 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 26 avril 2012
26 avril 2012 à 12:00
J'ai ajouter un commit dans mon Singleton
import java.sql.*;

public class CConnect {

//private static CConnect single =   new CConnect();

private static Connection con;

private CConnect(){

try { 
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver" ); 
  } 

catch (ClassNotFoundException e1) { 
   e1.printStackTrace(); 
  } 
   
  String url = "jdbc:odbc:lala;DBQ=c:\\BD1.accdb"; 
 
  
  
  try { 
   con = DriverManager.getConnection(url); 
   con.commit();// c'est ici que l'on valide la transaction
   con.setAutoCommit(true);

  } 
  
  catch (SQLException e1) { 
   e1.printStackTrace(); 
  } 
  
System.out.println("la connection a votre base de donnees est etablie");

}
public static Connection getInstance(){
if(con ==  null){
new CConnect();
}
return con;	
}	

}



Et rien n'a change
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
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
26 avril 2012 à 14:22
L'erreur peut provenir du contenu de la variable Code, sinon, essayes d'ajouter un ; :

String query2="DELETE FROM Produits WHERE code ='"+Code+"';";
0
electra01 Messages postés 15 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 26 avril 2012
26 avril 2012 à 14:34
Non le probleme n'est pas dans le contenu de la variable Code, etant donné que ça a marche avec les autre requetes normalement!

et le programme java marche pour delete aussi, il m'affiche dans la console que les elements sont supprimés mais quand je verifie dans ma base de données access BD1.accdb je les trouve encore la malgres que j'effectue biensur un refresh

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
electra01 Messages postés 15 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 26 avril 2012
26 avril 2012 à 14:43
Et meme avec le ;
ça ne marche pas , je ne trouve vraiment pas de solution et ça
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
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
26 avril 2012 à 15:00
Pour ta première erreur, c'est que tu essayes de modifier les données associée à la clé primaire qui doit être unique. Normal que ca ne marche pas.

Pour la deuxième erreur : je ne vois pas...
0
electra01 Messages postés 15 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 26 avril 2012
26 avril 2012 à 15:10
oui je sais pour la 1ere erreur, c la 2eme qui je ss perdu!
c'est pas la base de donnee access qui pause probleme par rapport au delete, il ya peut etre une configuration en + a faire non????

Je te remercie Julien39 pour ton aide

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