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

Android Discussion :

[Tutoriel] Communication base de données via script PHP


Sujet :

Android

  1. #1
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut [Tutoriel] Communication base de données via script PHP
    Bonjour à tous et à toutes,

    Je vous propose un nouveau tutoriel sur le sujet:
    Créer une page de login et vérifier l’identification en communiquant avec la base de donnée via un script PHP.

    Vous pouvez poster ici toutes vos questions sur ce tutoriel

    Voir aussi les autres cours et tutoriels pour apprendre la programmation Android.

    Bonne lecture à tous et à toutes!

  2. #2
    Membre confirmé
    Homme Profil pro
    IUT Informatique
    Inscrit en
    Mars 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : IUT Informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 412
    Points : 486
    Points
    486
    Par défaut
    Hum bon tuto, dommage que tu l'ai pas fait bien avant (quand j'en avait besoin lol). Juste peut être qu'il faudrait préciser que c'est une "requête HTTP synchrones" que tu met en place dans le tuto (si je me trompe pas).

    Et du coup, vu que c'est synchrone, la progressDialog évolue bien? (la roulette tourne?) Parce qu'il me semble qu'en requête synchrone l'écran reste figé

  3. #3
    Inscrit

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Points : 892
    Points
    892
    Par défaut
    Un bon travail mais tu devrais le perfectionner avant car meme s'il y'a pas d'erreur, il y'a probleme de performance derriere : Par exemple il faut toujours eviter de lancer une requete de connection dans la main thread et de plus tu as carrement pris la class Exception au lieu de IOException....

  4. #4
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Merci pour ces retours!

    Bien entendu ce tuto vous montre les bases! A vous de programmer comme il le faut par la suite! Arranger le code à votre manière afin qu'il fonctionne comme vous le souhaitez

    Je prendrai en compte vos remarques pour la mis à jour du tuto

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 7
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Merci pour ce tutorial, j'ai bien avancé grâce à ça.

    Dans la classe "LoginContentHandler", les fonctions startDocument, EndElement, EndDocument et caracters fonctionnent bien.

    Cependant ma fonction startElement ne se lance pas Elle est pourtant (je pense) correctement écrite.

    Eclipse me met un warning pour indiquer que la fonction n'est jamais utilisée localement et propose de la supprimer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public void startElement ( String uri, String localName, String qName, Attributes MesAttri) throws SAXException {
      Log.w("TEST", "startElement sur tag = " + localName);
    }
    Si vous avez une idée ?

  6. #6
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Bonjour,

    Ta classe hérite bien de Defaulthandler?
    Si oui ajoute @Override avant tes fonctions, ceci permettra de préciser que c'est une surcharge d'une fonction existante de la classe mère.

    Sinon à quoi ressemble ta fonction? Qu'as tu modifié? Où appelles tu ta classe? et comment?

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Points : 113
    Points
    113
    Par défaut
    merci pour ce tutoriel Android , est ce que ce tutoriel peut marcher avec une application realisé avec J2EE pas le php

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 7
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par David55 Voir le message
    Bonjour,

    Ta classe hérite bien de Defaulthandler?
    Si oui ajoute @Override avant tes fonctions, ceci permettra de préciser que c'est une surcharge d'une fonction existante de la classe mère.

    Sinon à quoi ressemble ta fonction? Qu'as tu modifié? Où appelles tu ta classe? et comment?
    Merci de ta réponse.

    @Override n'a pas résolu mon problème.

    Voici mon code :

    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
    54
    55
    56
    57
    58
    59
    60
     
     
    private class MySaxHandler extends DefaultHandler {
     
     
         public void read (InputStream input){
     
    	SAXParserFactory spf = SAXParserFactory.newInstance();
    	SAXParser sp;
     
    	try {
    		sp = spf.newSAXParser();
    		XMLReader xr = sp.getXMLReader();
     
    		xr.setContentHandler( this );
    		xr.parse(new InputSource(input));
     
    	}
    	catch (ParserConfigurationException e) {
    		Log.e("XML", "PASCAL : ParserConfigurationException");	
    	}
    		catch (SAXException e) {
    		Log.e("XML", "PASCAL : SAXException");
    	}
    	catch (IOException e) {
    		Log.e("XML", "PASCAL : IOException");
    	}
        }
     
     
        @Override
        public void startDocument() throws SAXException {
    		Log.w("XML", "PASCAL : startDocument du XML");
    	}
     
         public void startElement ( 
                String uri, String localName, 
                String qName, Attributes MesAttri ) throws SAXException {
     
    	    Log.w("XML", "PASCAL : startElement du XML : Debut TAG = " + localName);
    	}
     
     
         public void characters( char ch[], int start, int length  )
              {
                   //Log.w("XML", "PASCAL : characters du XML : ch[0]  = " + phrase );
              }
     
         public void endElement ( String uri, String localName, String qName)
         throws SAXException {
              Log.w("XML", "PASCAL : endElement du XML : Fin TAG = " + localName);			
    	   }
     
     
         public void endDocument() throws SAXException {
              Log.w("XML", "PASCAL : endDocument du XML");
    	}
     
     
        }
    Donc toutes mes fonctions fonctionnent, j'ai bien les infos de mon XML sauf startElement qui ne semble pas être reconnu.

    P.S : Désolé pour le temps de réponse mais j’étais sur un autre soucis ce matin hors Android.

  9. #9
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    @pascalp59:

    Bonjour,

    Tout d'abord ta fonction read ne devrait pas être dans cette classe (cf. le tuto).

    Sinon, si tu veux la laisser dedans, comment as tu fais pour l'appeler?

    La fonction startElement est appelée lorsque tu écris new MySaxHandler, cependant, dans ton code je vois ceci nulle part!

    ________________________

    @diengkals
    merci pour ce tutoriel , est ce que ce tutoriel peut marcher avec une application realisé avec J2EE pas le php
    A tester! La réponse m’intéresse

  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 7
    Points : 10
    Points
    10
    Par défaut
    Voici comment j'appelle ma classe et fonction Read :

    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
     
     
    Looper.prepare();
     
    //On se connecte au serveur afin de communiquer avec le php
    DefaultHttpClient client = new DefaultHttpClient();
    HttpConnectionParams.setConnectionTimeout( client.getParams(), 15000);
     
     
    HttpResponse ReponsePHP;
    HttpEntity entity;
     
    try {
    	//On etablit un lien vers le php
    	HttpPost post = new HttpPost( URL_XML );
     
    	//Ajout de parametre en post
    	List<NameValuePair> nvps = new ArrayList<NameValuePair>();
    	nvps.add( new BasicNameValuePair("Parametre1", "savaleur"));
    	nvps.add( new BasicNameValuePair("Parametre2", "savaleur"));
     
            post.setHeader("Content-Type", "application/x-www-form-urlencoded");
    	post.setEntity( new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
     
    	//Execution et Recuperation de la reponse
    	ReponsePHP = client.execute(post);					
    	entity = ReponsePHP.getEntity();
     
    	//Traduction de la reponse XML
    	InputStream MonXML = entity.getContent();
    	MySaxHandler handler = new MySaxHandler();
    	handler.read(MonXML);
    	MonXML.close();
     
    	if (entity != null)
    		entity.consumeContent();
     
    }
    catch (Exception e) {
    	Log.e("PHP P.", "PASCAL : Erreur dans la lecture du PHP " + e.getMessage() + " -- " + e.hashCode() + " -- " + e.getCause());
    }
     
    Looper.loop();
    Pour rappel, toutes mes fonctions dans ma classe MySaxHandler fonctionnent sauf la fonction startElement qui ne semble pas être reconnu comme une fonction à surcharger.

  11. #11
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Bonjour,

    La première remarque que je peux observer est que ce n'est pas tout à fait la même chose que dans le tuto.

    A première vu je te dirais d'essayer de définir la fonction read au même endroit que ton code post au dessus! (tout comme le tuto!)
    Dis moi si tu as la même erreur car ce que tu fais reviens au même mais est écrit différemment donc c'est assez étrange!

    EDIT: J'essaye de prendre la même logique que toi. Ca me donnerai:
    Appelle à ma classe LoginContentHandler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	/*...*/
    	entity = response.getEntity();
     
    	InputStream is = entity.getContent();
     
    	LoginContentHandler uch = new LoginContentHandler();
    	uch.read(in);
     
    	in.close();
    	/*...*/
    Ma classe LoginContentHandler :
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
     
    	private class LoginContentHandler extends DefaultHandler
    	{
    		// Classe traitant le message de retour du script PHP
    		private boolean	in_loginTag		= false;
    		private int			userID;
    		private boolean	error_occured	= false;
     
    		private void read(InputStream in)
    		{
    			SAXParserFactory spf = SAXParserFactory.newInstance();
    			SAXParser sp;
    			try
    			{
    				sp = spf.newSAXParser();
     
    				XMLReader xr = sp.getXMLReader();
     
    				xr.setContentHandler(this);
     
    				xr.parse(new InputSource(in));
    			}
    			catch (ParserConfigurationException e)
    			{
     
    			}
    			catch (SAXException e)
    			{
     
    			}
    			catch (IOException e)
    			{
    			}
    		}
     
    		public void startElement(String n, String l, String q, Attributes a)
     
    		throws SAXException
     
    		{
     
    			if (l == "login")
    				in_loginTag = true;
    			if (l == "error")
    			{
     
    				progressDialog.dismiss();
     
    				switch (Integer.parseInt(a.getValue("value"))
    				{
    					case 1:
    						createDialog("Error", "Couldn't connect to Database");
    						break;
    					case 2:
    						createDialog("Error", "Error in Database: Table missing");
    						break;
    					case 3:
    						createDialog("Error", "Invalid username and/or password");
    						break;
    				}
    				error_occured = true;
     
    			}
     
    			if (l == "user" && in_loginTag && a.getValue("id") != "")
    				// Dans le cas où tout se passe bien on récupère l'ID de l'utilisateur
    				userID = Integer.parseInt(a.getValue("id"));
     
    		}
    		/*...*/
    		}
    Je n'ai pas tester! A comparer avec ton programme. Je répète, ceci me parait bizarre de définir la fonction read dans cette classe

  12. #12
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 7
    Points : 10
    Points
    10
    Par défaut
    En fait je suis parti d'un autre tuto (pas terrible) et j'ai trouvé le tien que j'ai mieux compris (enfin je pensais ) J'ai donc adapté mon code pour utiliser ton tuto.

    Comme toutes les fonctions se lancent sauf celle la je pensais que ma logique était correcte. Après je n'avais encore jamais fait de Java et Android donc un peu de mal sur la logique de programmation du java. Je suis plus habitué au genre php, web, laszlo, etc...

    Je vais reprendre ta logique et essayer ce que tu proposes, si je n'y arrive pas. Je recommencerai le tuto à 0. J'ai forcement du louper quelques chose mais c'est vraiment bizarre que java ne comprennent pas uniquement cette fonction et lance le reste.

    Merci pour ton aide en tout cas.


    RESOLU :

    Vu sur une aide d'un autre site :
    Generates compile-time error if startElement is not correctly overriden. This method generates a compile-error "final method cannot be overridden" if org.xml.sax.Attributes is used instead of javolution.xml.sax.Attributes (common mistake).
    Eclipse par défaut m'a proposé un mauvais import. Je ne savais pas qu'il y avait plusieurs choix. Maintenant je me coucherai moins c**

    Je me disais aussi c'était bien bizarre.

    Merci pour ton aide et surtout pour le tuto.

    Une question : Existe-t-il la possibilité sans parcourir tout le XML de trouver une information ?
    Par exemple, je recherche le noeud qui a l'attribut id="1".

    En XML le path : MonXML:/ROOT/MON_NOEUD[@id='1']

  13. #13
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Points : 113
    Points
    113
    Par défaut
    @David55
    bonjour David tu l as pas sur une application J2EE car je n en besoin mais ça marche pas chez moi. si quelqu' un l a fait sur une application qu il m aide merci d avance

  14. #14
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Une question : Existe-t-il la possibilité sans parcourir tout le XML de trouver une information ?
    Par exemple, je recherche le noeud qui a l'attribut id="1".
    Oui c'est possible via la méthode SAX. SAX construit son Xml au fur à mesure il ne construit pas d'arbre comparé à DOM. Donc lorsque tu rencontre l'élèment que tu souhaitais trouver il ne te reste plus qu'à arrêter ton parser .

    Après tu peux même l'optimiser si tu sais que ton élément se trouve dans les n premiers caractères tu peux ne lui passer qu'une partie de ton fichier ce qui aura le mérite de ne pas l'avoir en mémoire totalement .

    Pour l'arrêter tu peux remonter un exception , je ne me rappelle plus si une procédure/fonction existe pour un tel cas.n Si tu la trouve je suis intéressé .
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 3
    Points : 7
    Points
    7
    Par défaut
    Pourquoi ne pas avoir utiliser la classe AsyncTask à la place de l'utilisation de Thread et d'handler.
    Tu aurais allégé le code et cette classe est justement faite pour le besoin que tu exprimes dans le sujet...

  16. #16
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Citation Envoyé par arnouf Voir le message
    Pourquoi ne pas avoir utiliser la classe AsyncTask à la place de l'utilisation de Thread et d'handler.
    Tu aurais allégé le code et cette classe est justement faite pour le besoin que tu exprimes dans le sujet...
    Pourquoi pas c'est une autre possibilité, vous êtes libre!
    Si tu as un exemple je suis preneur

  17. #17
    Nouveau membre du Club
    Inscrit en
    Juillet 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 17
    Points : 26
    Points
    26
    Par défaut
    Intéressant .
    Par contre je suis un peu étonné que le Handler SAX marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...if (l == "login")...
    Je comprend même pas comment ça peut fonctionner, pour moi il compare les références.

  18. #18
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Citation Envoyé par JejeWIll Voir le message
    Intéressant .
    Par contre je suis un peu étonné que le Handler SAX marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...if (l == "login")...
    Je comprend même pas comment ça peut fonctionner, pour moi il compare les références.


    Source tiré du tutoriel : http://smeric.developpez.com/java/cours/xml/sax/
    startElement

    Démarrage d'un élément XML... Enfin ! Et oui, on peut en effet pour démarrer avec SAX se contenter de comprendre cet événement et son traitement ainsi que son contraire pour analyser un flux xml de manière très puissante et efficace. Nous allons donc nous pencher un peu plus sur cet événement.

    startElement (String namespaceUri, String localName, String rawName, Attributs atts);

    où nameSpaceUri est la chaîne de caractères contenant l'URI complète de l'espace de nommage du tag ou une chaîne vide si le tag n'est pas compris dans un espace de nommage,
    localName est le nom du tag sans le préfixe s'il y en avait un,
    rawName est le nom du tag version xml 1.0 c'est à dire $prefix:$localname,
    Enfin attributs est la liste des attributs du tag que l'on étudiera un peu plus loin.
    Ici, nous attendons donc un tag
    Nous voulons récupérer ce qu'il y a dans les balises <login> de notre XML

  19. #19
    Nouveau membre du Club
    Inscrit en
    Juillet 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 17
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par David55 Voir le message
    Source tiré du tutoriel : http://smeric.developpez.com/java/cours/xml/sax/


    Ici, nous attendons donc un tag
    Nous voulons récupérer ce qu'il y a dans les balises <login> de notre XML
    Pas de soucis ce n'est pas à ce niveau là que ça bloque (j'ai déjà fait beaucoup trop d'handler SAX à mon goût).

    Je parle au niveau langage JAVA, pour comparer 2 objets on utilise la méthode equals, et non == qui compare les références. voir http://stackoverflow.com/questions/7...-equals-versus

    Du coup je comprend pas comment le handler peut fonctionner, y a-t-il une subtilité que je n'ai pas saisie?

    edit : Peut être un élément de réponse
    It's good to notice that in some cases use of "==" operator can lead to the expected result, because the way how JVM handling strings - string literals are interned (see String.intern()) - so when you write for example "hello world" in two classes and compare those strings with "==" you could get result: true, which is expected, but it's only side effect of jvm optimizations; when you compare same strings (linguistically) when the first is string literal (ie. defined through "string") and second is constructed through "new" keyword like new String("string") using of == (equality operator) returns false, because both of them are different instances of String class.

  20. #20
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Personnellement rien ne me choque la dessus!

    Nous comparons 2 chaines de caractère!

    L'opérateur == peut être utilisé si nous voulons vérifier l'égalité strict.

    The == operator checks to see if two objects are exactly the same object.

Discussions similaires

  1. exporter une base de données via script php
    Par DimitriLille dans le forum Langage
    Réponses: 3
    Dernier message: 04/06/2014, 10h31
  2. Backup base de données via script
    Par ptr83 dans le forum DB2
    Réponses: 1
    Dernier message: 26/04/2013, 11h36
  3. communication base de données via Perl
    Par debutantperl dans le forum SGBD
    Réponses: 3
    Dernier message: 27/07/2012, 10h15

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