Application client /server avec c# sous visual studio

Signaler
Messages postés
8
Date d'inscription
mercredi 20 juillet 2011
Statut
Membre
Dernière intervention
2 mai 2012
-
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
-
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

Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
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 ?
Messages postés
8
Date d'inscription
mercredi 20 juillet 2011
Statut
Membre
Dernière intervention
2 mai 2012

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!
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
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
Messages postés
8
Date d'inscription
mercredi 20 juillet 2011
Statut
Membre
Dernière intervention
2 mai 2012

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:)
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
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
Messages postés
8
Date d'inscription
mercredi 20 juillet 2011
Statut
Membre
Dernière intervention
2 mai 2012

Re;

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

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;
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
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.
Messages postés
8
Date d'inscription
mercredi 20 juillet 2011
Statut
Membre
Dernière intervention
2 mai 2012

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!
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
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
Messages postés
8
Date d'inscription
mercredi 20 juillet 2011
Statut
Membre
Dernière intervention
2 mai 2012

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 !
@+
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Oki, et courage pour ton mémoire ;)