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

C# Discussion :

C# et Microsoft SQL Server


Sujet :

C#

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut C# et Microsoft SQL Server
    Bonjour Experts,

    Je suis présentement en train de développer ma première application C#. Cette application doit communiquer sur plusieurs serveur et database SQL. Mes questions sont des questions de design.

    1. SqlClient, Linq, SQL Server project
    C# offre plusieurs possibilité de communication avec une base de données: System.Data.SqlClient, System.Data.Linq. Lequel devrais-je utiliser selon vous? L'avantage de SqlClient est que les requêtes sont en SQL et, pour une question de maintenance, le groupe informatique connait bien ce langage. Linq quand a lui semble être la "nouveauté" du framework Microsoft... Par contre, j'ai lu sur quelques sites web que Microsoft allait arrêter le développement de Linq to SQL!?! Linq ou SqlClient? J'ai aussi vu un projet SQL Server...???

    2. Classe DBQuery
    De plus, j'aimerais regrouper toutes mes query dans une classe unique afin de ne pas avoir a me promener partout dans mon code si une règle d'affaire (requête SQL) doit être changer dans le futur. Je voyais ca comme une classe DBQuery regroupant toutes les query de mon application. Les classes de mon application hériterait de la classe DBQuery donc de toutes mes query SQL. Est-ce une bonne façon de faire? Un design efficace?

    Merci de me partager vos opinions et expériences!

    Dagana

  2. #2
    Membre habitué Avatar de thelpi
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 217
    Points : 156
    Points
    156
    Par défaut
    Salut,

    je ne suis pas un expert, mais je vais tenter une modeste contribution.

    Pour la première question, je ne peux pas t'aider, j'utilise toujours SqlClient, c'est le plus simple !

    Pour la deuxième, voilà ce que je fais systématiquement:

    Une classe statique, avec une connexion unique, une chaîne de connexion inamovible, et des méthodes statiques suivant les besoins (scalaires, dataset, datareader, query sans retour...)

    En voila une partie :

    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
     
    static class QueryManager
    (
    private static SqlConnection _connection = null;
    private static string _connectionString = "database=xxxxx;...";
    	public static DataSet GetDataResults(string query)
    	{
    		DataSet dts = null;
     
    			try
    			{
    				if (_connection == null) 
    				     _connection = new SqlConnection(_connectionString);
    				if(_connexion.State != Open) 
    				     _connexion.Open();
     
    				SqlCommand cmd = _connexion.CreateCommand();
    				cmd.CommandText = query;
    				cmd.CommandTimeout = 180;
     
    				SqlDataAdapter adpt = new SqlDataAdapter(cmd);
    				DataSet dts = new DataSet();
    				adpt.Fill(dts);
    			}
    			catch 
    			{
    				 // gestion des erreurs
    			}
     
    		return dts;
    	}
     
            public static bool ExecuteQuery(string query)
            {
                    bool success = false;
                    try
    			{
    				if (_connection == null) 
    				     _connection = new SqlConnection(_connectionString);
    				if(_connexion.State != Open) 
    				     _connexion.Open();
     
    				IDbCommand cmd = _connexion.CreateCommand();
    				cmd.CommandText = query;
    				cmd.CommandTimeout = 180;
     
    				success = cmd.ExecuteQuery() > 0;
    			}
    			catch 
    			{
    				 // gestion des erreurs
    			}
                    return success;
            }
    }
    Bon courage

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci Thelpi!

    Je crois que finalement je vais utiliser Data.SqlClient puisque je le comprends bien et que le groupe informatique de l'entreprise est plus a l'aise avec ce langage. Je vais aussi "m'inspirer" fortement de ton code afin de gérer mes query.

    Bonne journée,

    Dagana

  4. #4
    Expert confirmé
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Points : 4 066
    Points
    4 066
    Par défaut
    Bonjour,

    Je n'ai que survolé le code proposé, mais je recommande fortement l'utilisation du mot clé using pour la gestion des ressources (connection, etc..).

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour Nicolas Esprit,

    Je ne suis pas sure de comprendre ce que tu veux dire par :
    Citation Envoyé par Nicolas Esprit Voir le message
    ...du mot clé using pour la gestion des ressources (connection, etc..).
    ?

    Est-ce que tu peux me donner un exemple ou m'expliquer plus en détail?

    Merci,
    Dagana

  6. #6
    Expert confirmé
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Points : 4 066
    Points
    4 066
    Par défaut
    Un petit coup d'oeil sur MSDN répondre à ta question :-)

Discussions similaires

  1. Quel SGBD choisir : Oracle ou Microsoft SQL-Server ?
    Par dellibmdell dans le forum Décisions SGBD
    Réponses: 94
    Dernier message: 06/03/2013, 23h42
  2. [Débat] Choisir InterBase/Firebird ou Microsoft SQL-SERVER ?
    Par asenaici dans le forum Décisions SGBD
    Réponses: 90
    Dernier message: 19/03/2009, 20h51
  3. Microsoft SQL Server Management Studio Express
    Par Bba_M dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 10/07/2006, 11h52
  4. Problème avec Microsoft SQl Server 2000
    Par jyms2006 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 01/03/2006, 10h29
  5. Microsoft SQL Server
    Par ben53 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 26/09/2003, 19h54

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