public void suggererAmis(int noUtil, String indicePremChaine, String nbAmisSuggChaine) throws NamingException, SQLException {

		// Traitement du paramètre donnant l'indice dans le jeu
		// de résultats du premier ami à retourner (l'indice est en base 0).
		// La valeur par défaut est 0.
		int indicePrem = 0;
		// Est-ce que le paramètre est présent ?
		if (indicePremChaine != null) {
			// Est-ce que c'est un entier ?
			try {
				indicePrem = Integer.parseInt(indicePremChaine);
				if (indicePrem < 0) {
					indicePrem = 0;   // On reprend la valeur par défaut, si négatif.
				}
			} catch (NumberFormatException nfe) {
				// Rien à faire; la valeur par défaut sera utilisée.
			}
		}

		// Traitement du paramètre donnant le nombre
		// d'amis suggérés que le jeu de résultats doit contenir.
		// La valeur par défaut est NB_MAX_AMIS_SUGG.
		this.nbAmisSugg = NB_MAX_AMIS_SUGG;
		// Est-ce que le paramètre est présent ?
		if (nbAmisSuggChaine != null) {
			// Est-ce que c'est un entier ?
			try {
				this.nbAmisSugg = Integer.parseInt(nbAmisSuggChaine);
				if (this.nbAmisSugg <= 0) {
					this.nbAmisSugg = NB_MAX_AMIS_SUGG;   // On reprend la valeur par défaut, si 0 ou négatif.
				}
			} catch (NumberFormatException nfe) {
				// Rien à faire; la valeur par défaut sera utilisée.
			}
		}

		// Source de données (JNDI).
		String nomDataSource = "jdbc/twitface";

		// Création de l'objet pour l'accès à la BD.
		ReqPrepBdUtil utilBd = new ReqPrepBdUtil(nomDataSource);

		// Obtention de la connexion à la BD.
		utilBd.ouvrirConnexion();

		// Requête SQL permettant de suggérer des amis en fonction du nombre d'amis en commun (Ayoye !!!).
		String reqSQLSuggAmis =
				"SELECT m.MemNom, aCom.NoAmiPotentiel, COUNT(aCom.AmiEnCommun) AS NbAmisEnCom"
				+ " FROM"
				+ " ( "
				// Liste des amis qui ont des amis en commun avec le membre actuel (partie 1).
				+ " SELECT aPot.MemNo2 AS NoAmiPotentiel, aMem.MemNo1 AS AmiEnCommun "
				+ " FROM"
				+ " ("
				// Les amis du membre actuel. 
				+ " SELECT MemNo1 FROM amis WHERE MemNo2=?"
				+ " UNION "
				+ " SELECT MemNo2 FROM amis WHERE MemNo1=?"
				+ " ) AS aMem"
				+ " INNER JOIN"
				+ " amis aPot"
				+ " ON"
				+ " aMem.MemNo1 = aPot.MemNo1"
				+ " WHERE"
				// Ne doit pas être le membre lui-même.
				+ " aPot.MemNo2 <> ?"
				// Ne doit pas être déjà ami avec le membre.
				+ " AND"
				+ " aPot.MemNo2 NOT IN"
				+ " ("
				+ " SELECT MemNo1 FROM amis WHERE MemNo2=?"
				+ " UNION"
				+ " SELECT MemNo2 FROM amis WHERE MemNo1=?"
				+ " )"
				+ " UNION"
				// Liste des amis qui ont des amis en commun avec le membre actuel (partie 2).
				+ " SELECT aPot.MemNo1 AS NoAmiPotentiel, aMem.MemNo1 AS AmiEnCommun"
				+ " FROM"
				+ " ("
				// Les amis du membre actuel.
				+ " SELECT MemNo1 FROM amis WHERE MemNo2=?"
				+ " UNION"
				+ " SELECT MemNo2 FROM amis WHERE MemNo1=?"
				+ " ) AS aMem"
				+ " INNER JOIN"
				+ " amis aPot"
				+ " ON"
				+ " aMem.MemNo1 = aPot.MemNo2"
				+ " WHERE"
				// Ne doit pas être le membre lui-même.
				+ " aPot.MemNo1 <> ?"
				// Ne doit pas être déjà ami avec le membre.
				+ " AND"
				+ " aPot.MemNo1 NOT IN"
				+ " ("
				+ " SELECT MemNo1 FROM amis WHERE MemNo2=?"
				+ " UNION"
				+ " SELECT MemNo2 FROM amis WHERE MemNo1=?"
				+ " )"
				+ " ) AS aCom"
				// Récupération du nom de l'ami suggéré.
				+ " INNER JOIN"
				+ " membres m"
				+ " ON"
				+ " m.MemNo = aCom.NoAmiPotentiel"
				// Regroupements.
				+ " GROUP BY aCom.NoAmiPotentiel, m.MemNo"
				// Tri en fonction du nombre d'amis en commun (descendant) et du nom de l'ami suggéré.
				+ " ORDER BY NbAmisEnCom DESC, m.MemNom ASC"
				// Limiter la recherche à certaines suggestions seulement (page de résultats)
				+ " LIMIT ?, ?";
	
		// Préparation de la requête SQL.
		utilBd.preparerRequete(reqSQLSuggAmis, false);
		
		// Exécution de la requête tout en lui passant les paramètres pour l'exécution.
		ResultSet rs = utilBd.executerRequeteSelect(
				noUtil, noUtil, noUtil, noUtil, noUtil,
				noUtil, noUtil, noUtil, noUtil, noUtil,
				indicePrem, nbAmisSugg);

		// Création de liste de suggestions d'amis.
		this.lstSuggAmis = new ArrayList<Ami>();
		// Objet pour conserver une suggestion d'ami.
		Ami ami;
		// Parcours des amis suggérés.
		while (rs.next()) {
			// Création de l'objet "Ami".
			ami = new Ami(rs.getString("MemNom"), rs.getInt("NoAmiPotentiel"), rs.getInt("NbAmisEnCom"));
			// Ajout de l'ami dans la liste.
			this.lstSuggAmis.add(ami);
		}

		// Prochain indice du premier si on désire d'autres suggestions d'amis (les suggestions suivantes).
		this.indicePrem = indicePrem + nbAmisSugg;

		// Fermeture de la connexion à la BD.
		utilBd.fermerConnexion();
		
	}  // Fin de "suggererAmis"