Faire un UPDATE en SQL

papayou42 Messages postés 5 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 11 décembre 2003 - 9 déc. 2003 à 14:53
papayou42 Messages postés 5 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 11 décembre 2003 - 11 déc. 2003 à 11:33
Bonjour a tous,
Vous trouverez ci-dessous mon code.
Ma question est comment faire un UPDATE la dedans. car quand il rajoute des enregistrements deja existant il me crache ce warning :
[Microsoft][ODBC SQL Server Driver][SQL Server]Violation de la contrainte PRIMARY KEY 'PK_client'. Impossible d'insérer une clé en double dans l'objet 'client'.

public void rempli_table_client(){
try {
Statement Requete = cx_as400.createStatement();
Statement Requete2 = cx_server.createStatement();
recup_as400 = "SELECT clcclt, clnomc, cladr1, cladr2, cladr3, clcpod, clvil, cltelp, clemai, clmodr, cldldr FROM eurofic045.clientpf";

ResultSet Resultat = Requete.executeQuery(recup_as400);
ResultSetMetaData rsmd = Resultat.getMetaData();
int nbcols = rsmd.getColumnCount();
String res;
System.out.println("Debut transfert client : ");
while (Resultat.next())
{
res = "INSERT INTO client VALUES (";
for (i = 1; i <= nbcols; i++)
{
String value = Resultat.getString(i);
String valuebis = value.replace('\'', '#');
System.out.println(valuebis);
res+= "'" + valuebis + "'";
if(i<nbcols){
res+=",";
}
}
res+=")"; /*res = res + ")";*/
Requete2.executeUpdate(res);
}
}
catch(SQLException d) {System.err.println(d.getMessage());}
}

En vous remerciant d'avance.
< STOP PLAYING WITH MY MIND >

4 réponses

cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
9 déc. 2003 à 17:52
:big) Neodante :big)

En regardant juste l'erreur, faudrait peut-être pas vouloir rajouter un enregistrment qui existe déjà avec la même clé primaire !
En regardant ton code, tu mets dans le sujet UPDATE mais c'est un INSERT ici d'où surement l'erreur !
@+
0
cs_coucounet Messages postés 83 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 16 février 2005
10 déc. 2003 à 16:56
Je suis tout à fait d'accord avec neodante!!

tu devrais déjà remplacer ton insert par:
res "UPDATE client SET clcclt ?, clnomc = ?, cladr1 = ?, cladr2 = ?, cladr3 = ?, clcpod = ?, clvil = ?, cltelp = ?, clemai = ?, clmodr = ?, cldldr = ?"


puis tu gère l'update avec :
requete2.setString(i, valuesbis ); ou
requete2.setInt(i, valuesbis );


ensuite le statement ne se décare par comme un INSERT:
PreparedStatement statement = connectEmetteur.connexion.prepareStatement(res);


Au final tu devrai obtenir quelque chose du style :
public void rempli_table_client(){
            try {
                Statement Requete = cx_as400.createStatement();
                recup_as400 = "SELECT clcclt, clnomc, cladr1, cladr2, cladr3, clcpod, clvil, cltelp, clemai, clmodr, cldldr FROM eurofic045.clientpf";
                PreparedStatement statement = connectEmetteur.connexion.prepareStatement(res);
                ResultSet Resultat = Requete.executeQuery(recup_as400);
                ResultSetMetaData rsmd = Resultat.getMetaData();
                int nbcols = rsmd.getColumnCount();
                String res;
                System.out.println("Debut transfert client : ");
                while (Resultat.next()) {                    res "UPDATE client SET clcclt ?, clnomc = ?, cladr1 = ?, cladr2 = ?, cladr3 = ?, clcpod = ?, clvil = ?, cltelp = ?, clemai = ?, clmodr = ?, cldldr = ?";
                    for (i = 1; i <= nbcols; i++) {
                        String value = Resultat.getString(i);
                        String valuebis = value.replace('\'', '#');
                        requete2.setString(i, valuesbis );
                        System.out.println(valuebis);
                    }
                    int i = requete2.executeUpdate();
                    Requete2.executeUpdate(res);
                }
            }
            catch(SQLException d) {System.err.println(d.getMessage());}
        }


:question) 8-) 8-) koukounet 8-) 8-) :question)
0
cs_coucounet Messages postés 83 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 16 février 2005
10 déc. 2003 à 16:58
Désolé pour la pâté, je te laisse le remettre en forme, pour faire apparaitre les boucles..

:question) 8-) 8-) koukounet 8-) 8-) :question)
0
papayou42 Messages postés 5 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 11 décembre 2003
11 déc. 2003 à 11:33
Merci beaucoup mais cela ne fonctionne pas.

< STOP PLAYING WITH MY MIND >
0
Rejoignez-nous