Application client /server avec c# sous visual studio

Emilyhs Messages postés 8 Date d'inscription mercredi 20 juillet 2011 Statut Membre Dernière intervention 2 mai 2012 - 18 avril 2012 à 14:34
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 - 2 mai 2012 à 14:27
bonjour;
je veut realiser une application client \server avec c# sous visual studio , donc quand j'etablie la connexion avec la base de données qui sous sql server !
pour le connectingstring j'ai fait ceci :
SqlConnection con = new SqlConnection(@"Data Source='" + Server + "';Initial Catalog='" + Database + "';Integrated Security=True;");

server :est la variable qui recoie le nom du server que je saisie
database:c'est celle de la base de données ;
la connexion réussi trés bien !
sauf que quand je rentre dans l'application pour inseret ou bien lire des données la connexion n'existe plus!
je supose que les variables ne garde pas les valeur qui leus sont assigner !
alors comment je doit faire pour rester connecter au server? please help me !!

12 réponses

cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
18 avril 2012 à 15:16
Salut,

les "IConnection" sont des objets comme les autres, leur existence et pérennité dépendent de la portée de l'instance. Par contre une connexion peut être ouverte ou non, c'est peut-être là ton souci ?
0
Emilyhs Messages postés 8 Date d'inscription mercredi 20 juillet 2011 Statut Membre Dernière intervention 2 mai 2012
22 avril 2012 à 11:56
ce que je voudrai justement savoir c'est comment faire pour que la connexion reste ouverte même après avoir quitter la fiche qui me permet de spécifier le nom du serveur!
es-qui a moyen pour que les variable ne perde pas les valeur qu'on leur assigne?
SVP j'ai vraiment besoin d'aide la!
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
23 avril 2012 à 09:23
Re,

pour avoir une instance visible de partout tu peux utiliser le singleton. L'idée c'est une classe qu'on n'instancie pas directement, mais qui fournit une instance unique car déclarée comme static, avec les accesseurs (statics aussi) qui vont bien.

Pour X ou Y raison ta connexion pourrait être fermée, sans demande explicite. Il faut donc simplement vérifier son statut dans ton GetInstance() : si Open je renvoie l'instance, si Closed alors je la réouvre avant de renvoyer l'instance.

bon dev
0
Emilyhs Messages postés 8 Date d'inscription mercredi 20 juillet 2011 Statut Membre Dernière intervention 2 mai 2012
24 avril 2012 à 15:21
Re ;

je doit dire que c'est un peu confus ; mais merci commeme; d’après ce que j'ai compris le singleton serai une classe mais comment es que je pourrai déclarer mes variables! car elle ne sont pas statique; le nom du Server peu changer! a chaque fois que j'utilise mon application je doit spécifier le nom de mon Server qu'il soit au niveau local ou a distance;
je demande un peu trop la mais puis-je avoir un exemple de ce que vous avez expliquer auparavant peu être que je pourrai en tirer quelque chose! Thanks:)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
24 avril 2012 à 15:49
Re,

Si tu dois pouvoir changer de serveur à chaque lancement il suffit de mettre ta chaine de connexion dans ton fichier Web.config. Pour le singleton plusieurs choses à dire :
- une variable statique n'est pas constante, tu peux la modifier comme bon te semble,
- si tu veux changer de serveur au cours du fonctionnement de l'appli, alors tu ne pourra logiquement pas avoir une connexion globale toujours ouverte, pure mécanique,
- je ne vais pas pouvoir bien mieux t'expliquer le procédé que ce qui est dit dans l'article fourni précédemment (qui contient d'ailleurs des morceaux de code que tu pourras réutiliser). Voici quand même un pseudo-code :
// la classe support du singleton
public class MaConnexion {

// mon instance globale unique
private static SqlConnection _cnx = null;

// l'accesseur qui fait tout
public static SqlConnection UniqueInstance {
get {
// 1) on regarde si l'instance est null,
//    si oui on la crée avec la cnxstr dans le Web.config
// 2) on regarde si la connexion est fermée
//    si oui on la réouvre
// 3) enfin, on renvoie notre instance
}
}
}


Tu pourras alors accéder de partout (sous restriction des namespaces) à une connexion valide ouverte avec la ligne suivante :
SqlConnection cnx = MaConnexion.UniqueInstance;


bonne continuation
0
Emilyhs Messages postés 8 Date d'inscription mercredi 20 juillet 2011 Statut Membre Dernière intervention 2 mai 2012
25 avril 2012 à 12:57
Re;

Merci pour tout vraiment gentil ; j'essaye ça et je vous informe si ça marche!
0
Emilyhs Messages postés 8 Date d'inscription mercredi 20 juillet 2011 Statut Membre Dernière intervention 2 mai 2012
29 avril 2012 à 11:19
hi !

J'ai essayer la solution que vous avez proposer et ça a l'air de fonctionner ! mais la j'ai un nouveau problème ; enfaîte c'est la première fois que j'utilise VS , au début tout marcher bien mais au fur et a mesure que mon application prenez du volume le programme déclenche une exception de type: "system.OutOfMemoryException" comme message d'erreur disant que cette exception à été levée ; cela ce produit soit quand j'enregistre ; ou quand j'essaye d’exécuter ! et maintenant tout les modification ne sont pas prise en compte!
c du a quoi ?
enfaite j'utilise visual studio 2010 ultimate;
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
2 mai 2012 à 09:40
Re,

à vue de nez je dirais que t'as une fuite mémoire dans ton code. Cela peut par exemple se produire si tu instancies des objets de type MaConnexion, qui ne doit pas l'être (car utilisation en mode singleton). Sans le code j'ai pas d'autre idée sous la main.
0
Emilyhs Messages postés 8 Date d'inscription mercredi 20 juillet 2011 Statut Membre Dernière intervention 2 mai 2012
2 mai 2012 à 11:45
RE;

dans mon application il est la plus part du temps question de lecture et écriture de données donc je doit tout le temps rouvrir la connexion ;
mais bon merci pour tout!
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
2 mai 2012 à 12:01
Je suis pas sûr qu'on ce se comprenne bien l'un l'autre ^^
Quoi qu'il en soit je suis pas sûr que ta fuite mémoire vienne de ça.

Bon debug
0
Emilyhs Messages postés 8 Date d'inscription mercredi 20 juillet 2011 Statut Membre Dernière intervention 2 mai 2012
2 mai 2012 à 12:34
Peu être, j'en sais rien ; Quoi qu'il en soit ;
c gentil d'avoir essayer de m'aider, en plus j'ai plus trop le temps de pencher dessus je reprendrai plus tard, la je vais terminer mon mémoire et présenter ce que j'ai pu réaliser !
@+
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
2 mai 2012 à 14:27
Oki, et courage pour ton mémoire ;)
0
Rejoignez-nous