Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Langage Java > JDBC > Lecture du sujet

JDBC

objet de connexion java

Vous devez être inscrit pour pouvoir poster des messages

Page : 1 
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : 1 
Hors ligne tiemtores # Posté le 09/07/2008 à 17:10:25
Groupe : Membres
Bjr à toute la communauté.
Depuis quelques jours je cherche à recuperer l'objet d'une connexion et utiliser cet objet de copnnexion pour d'autres requete.
merci d'avance
Hors ligne Alanis # Posté le 09/07/2008 à 17:41:34
Groupe : Membres
Description trop courte. servlet.
Hors ligne zydra # Posté le 09/07/2008 à 18:22:13
Groupe : Membres
Donne nous un code, et dit nous ce qu'il est censé faire et ce qui ne marche pas.

le monde appartient a ceux qui le detruisent
 
Hors ligne Sulimo # Posté le 09/07/2008 à 18:52:48
Avatar
Groupe : Membres
Citation : tiemtores
Depuis quelques jours je cherche à recuperer l'objet d'une connexion et utiliser cet objet de copnnexion pour d'autres requete.


Pour pouvoir utiliser la même connexion pour effectuer plusieurs requêtes à une BDD (requêtes espacées dans le temps mais également consécutives) je te conseille de créer une classe qui se charge de ce travail.

Cette classe définira une méthode de connexion qui se chargera de stocker celle-ci dans un attribut (objet Statement ) static de la classe. Et à chaque requête SQL, qui sera effectuée par le biais de la classe définie, cet attribut static sera utilisé.

En fait ce que je suis en train de t'expliquer c'est de mettre en place un Singleton. Singleton est en fait un modèle de conception gérant le nombre d'instance d'une classe, ce nombre étant par principe de 1. Et ce modèle s'applique très bien à ton cas.

Je pourrais te donner un code déjà fait mais je préfère te laisser chercher par toi-même comment mettre en place ce modèle de conception. Si t'as des questions n'hésite pas à les poser.

Quelques précisions cependant sur Singleton :
  • les attributs sont privés et static
  • les méthodes sont public et static
  • la connexion à la BDD n'est faite qu'une seule fois, lors de l'envoi de la première requête à la BDD

Image utilisateur

Image utilisateur
 
Hors ligne tiemtores # Posté le 17/07/2008 à 20:39:11
Groupe : Membres
Merci pour cette description la création du singleton serait effectivement adapté à ce que je voudrais faire.j'ai conçu la classe suivante et je me demande si elle répond au concept du singleton.
import java.sql.*;
import java.lang.Class;
import java.lang.String;

public class connect
{
public static Connection con=null;
private static Connection getConnection()
{

String pilote="com.mysql.jdbc.Driver";
try
{
Class.forName(pilote);
con = DriverManager.getConnection("jdbc:mysql://localhost/Messagerie","root","root");
System.out.println("connexion reussie");
}
catch (Exception e)
{
System.out.println("echec pilote : "+e);
}
return con;
}
}
Édité le 17/07/2008 à 20:40:51 par tiemtores
Hors ligne Sulimo # Posté le 17/07/2008 à 20:58:46
Avatar
Groupe : Membres
Dans ton cas tu stockes un objet Connection alors que moi je stocke un objet Statement. Mais je ne pense pas que cela pose problème par la suite. Et il est préférable de définir tous les attributs de ta classe comme privés.

Voilà ton code un peu remanié et corrigé (avec les balises code ;) et quelques commentaires) :
Code : Java
 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
import java.sql.*;
import java.lang.Class;
import java.lang.String;

//Les noms de classe commencent par convention par une majuscule
public class Connect 
{

 private static Connection con = null;

 //Ta méthode devrait "catcher" SQLException 
 //Pour voir exactement d'ou viens l'erreur au cas ou la connexion échoue
 private static Connection getConnection()
 {
   String pilote = "com.mysql.jdbc.Driver";
   try
   {
     //Class.forName(pilote).newInstance(); (c'est que je j'utilise)
     Class.forName(pilote);
     con = DriverManager.getConnection("jdbc:mysql://localhost/Messagerie","root","root");
     System.out.println("connexion reussie");
   }
   catch (Exception e)
   { 
     System.out.println("echec pilote : " + e); 
   } 
   return con;
 } 
}


En tout tu es plutôt bien partit, même si pour le moment tu n'as que la méthode de connexion à la base de données.
Édité le 17/07/2008 à 21:00:18 par Sulimo

Image utilisateur

Image utilisateur
 
Connecté askerat # Posté le 19/07/2008 à 01:59:05
Groupe : Membres
Un Singleton n'est pas sencé être static, c'est bel et bien une instance qui est créée. Au final c'est un objet comme un autre, sauf que son constructeur est privé, ce qui rend l'appel à new impossible. Ainsi, on crée une methode getInstance() qui elle est static et retourne l'objet unique ( l'instancie si ce n'est pas encore fait ). Depuis l'objet retourné par getInstance(), on peut appeller toutes les methodes ( qui ne sont pas static ).
Hors ligne Sulimo # Posté le 19/07/2008 à 12:10:13
Avatar
Groupe : Membres
C'est une autre façon d'implanter ce modèle qui est possible, c'est vrai.

Je lui ai expliqué celle avec des méthodes étant toutes static parce que c'est de cette manière que mes profs m'ont appris à le faire.

De toute façon il y a plusieurs façons d'implanter un modèle de conception, que ce soit Singleton ou un autre.

Image utilisateur

Image utilisateur
 

Retour au forum "Langage Java" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 375 Zéros connectés | Requêtes SQL 9 requêtes | Temps de génération de la page : Total (SQL) 0.0238s (0.0077s)