IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

un detail sur utilisation des ResultSet


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Par défaut un detail sur utilisation des ResultSet
    Bonjour

    j'ai une petite question on ce qui concerne l'utilisation d'un ResultSet, enfaite je fait une requette "Select" (Select * from Table1) sur une table,donc apres je récupere qu'elle que enregistrement dans mon resultset (rs) on va dire (j'ai deux colonne "Id","Nom") jusqu'au là tous marche bien.
    maintenant je veux faire un update sur un enregistrement du se ResultSet donc je veux savoir est ce que je peut faire directement :

    merci pour vos information

  2. #2
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    rs.updateInt("Id",10);
    rs.updateRow();

  3. #3
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    bonjour,

    en effet, ce que tu indiques fonctionne. Cependant je te le déconseille car d'un point de vue performance c'est relativement moyen.
    Il est préférable de passer par un insert en utilisant les PreparedStatement.
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Par défaut
    merci pout vos réponse donc je vais testé ça

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Par défaut
    la j'ai une autre question et c'est par rapport au passage par réfference mais c toujours par rapport au resultSet :

    enfaite j'ai deux classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public class SGBD{
     
    public int rsGetValue(String sql, ResultSet rs, Connection connection){
    		Statement stmt = null;
     
    		try {
    			stmt = connection.createStatement();
    			rs = stmt.executeQuery(sql);
    		} catch (SQLException e) {
    			e.printStackTrace();
     
    		}
    		return 0;
    	}
    }
    et dans l'autre classe main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    package md_STD_SGBD2;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.Locale;
    import md_STD_SGBD2.*;
     
    public class Main {
    	public static ResultSet rs = null;
    	// cette partie il faut qu'elle soit générale apres  
    	//connexion a la base de donnée
    	static String url = "jdbc:mysql://localhost:3306/magmatic";// URL de connexion
    	static String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
    	static SGBD db = new SGBD(driver);
    	static Connection con = null;
    	//private static ResultSet rs = null;
    	static Locale locale = Locale.getDefault();
     
     
    	//Constructeur pour connexion a la base de données
    	public Main(){
    		con = db.open(url, "root", "admcira");
    	}
     
     
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
     
    		Main M1 = new Main();
     
    		sql = "Select * from table1";
    		db.rsGetValue(sql, rs, con);
     
    		try {
    			rs.last();
    			System.out.println("nombre de ligne : " + rs.getRow());
    			rs.beforeFirst();
    			System.out.println("nombre de ligne : " + rs.getRow());
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
     
    	}
     
    }
    donc voila apartir de la calsse main j'appel la methode rsGetValue dans la clase SGBD et tous marche bien j'arrive a éxécuter bien ma requette, mais le probleme dans la classe main mon ResultSet il change jamais malgré qu'il est déclarer en public (donc c'est un passage par référence !!!!!)

    donc je veux savoir il est ou le probleme ??

    merci pour votre aide

  6. #6
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    Il faut savoir qu'en java tout est passé par valeur. Cela signifie lorsque tu passes un objet en paramètre tu passes le pointeur par valeur.
    Si tu change le pointer, par exemple en faisant un new dans la méthode, ce qui est fait dans ton cas par l'instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rs = stmt.executeQuery(sql);
    alors lorsque tu sors de la méthode la variable pointe toujours vers ca 1ere référence. Dans ton cas cette référence est = à null;

    et lorsque tu fais :
    Tu obtiens un nullPointer
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Par défaut
    merci pour ta réponse, oui je comprend bien se que tu veux dire mais il doit y avoir une astuce comme meme pour changer la meme variable ou de forcé un passage par réference (je suppose)!!!!

Discussions similaires

  1. Requête sur utilisation des tablespaces
    Par soso2paris dans le forum SQL
    Réponses: 3
    Dernier message: 22/05/2015, 12h14
  2. exemple sur utilisation des dongles
    Par karim15 dans le forum WinDev
    Réponses: 3
    Dernier message: 26/04/2013, 11h06
  3. Réponses: 4
    Dernier message: 15/09/2012, 22h46
  4. Réponses: 1
    Dernier message: 10/04/2010, 09h10
  5. Réponses: 2
    Dernier message: 27/06/2007, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo