Précédent   Forum du club des développeurs et IT Pro > Java > Général Java > JDBC
JDBC Forum d'entraide sur l'API JDBC (Java Database Connectivity) et l'accès aux bases de données. Avant de poster -> FAQ JDBC
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 29/11/2012, 19h20   #1
popy67
Membre du Club
 
Homme
Inscription : janvier 2008
Messages : 284
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28

Informations forums :
Inscription : janvier 2008
Messages : 284
Points : 66
Points : 66
Par défaut UPDATE d'un enregistrement

Bonjour,

Dans mon programme je souhaite que dès dans la colonne "pseudo" en enregistrement portant la valeur "xavier" est trouvé ce dernier soit remplacé par "pascal".

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public class PremJDBC 
{
    public static void main(String[] args) throws ClassNotFoundException, SQLException
    {
        Class.forName("com.mysql.jdbc.Driver");
        Connection connec = DriverManager.getConnection("jdbc:mysql://localhost/jerale", "root", "");
 
        try
        {
 
            String requete = "SELECT pseudo FROM membre";
            Statement stmt = connec.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
            ResultSet res = stmt.executeQuery(requete);
            String pseudo;
 
            while(res.next())
            {
                pseudo = res.getString(1);
                System.out.println(pseudo);
                if(pseudo.equals("xavier"))
                {
                    res.updateString(1, "pascal");
                    res.updateRow();
                }
            }
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        finally
        {
            connec.close();
            System.out.println("Connection fermée : " + connec.isClosed());
        }
 
    }
 
 
 
}
Mon code me renvoi l'erreur suivante :
Code :
com.mysql.jdbc.NotUpdatable: Result Set not updatable (references no primary keys).This result set must come from a statement that was created with a result set type of ResultSet.CONCUR_UPDATABLE, the query must select only one table, can not use functions and must select all primary keys from that table. See the JDBC 2.1 API Specification, section 5.6 for more details.

Quelqu'un pourrait m'aider ?
Merci d'avance
__________________
Réalisations : Jeu de gestion d'hypermarché virtuel
popy67 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2012, 23h35   #2
Atomtom
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 6
Points : 29
Points : 29
Bonjour,

Il semble que le message est clair.
Pour faire cette opération, le SELECT doit retourner les champs constituant la clé primaire de la table.

Une meilleure solution est de faire l'update directement en SQL:
Code :
UPDATE membre SET pseudo='pascal' WHERE pseudo='xavier'
Atomtom est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 14h03.


 
 
 
 
Partenaires

Hébergement Web