Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Présentation

  • : Romagny13 - Du .NET,du pur .NET
  • Romagny13 - Du .NET,du pur .NET
  • : Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
  • Contact

Recherche

Articles Récents

2 février 2014 7 02 /02 /février /2014 01:32

1-La chaine de connexion 

Site connectionString http://www.connectionstrings.com/

Il est préférable de la définir dans le fichier de configuration de l’application(app.config) dans la section <connectionStrings></connectionStrings>

Exemple chaine de connexion pour un fichier *.mdf

<connectionStrings>

    < add name="dbConnectionString"

         connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\dbDemo.mdf;Integrated Security=True"

         providerName="System.Data.SqlClient" />

  </connectionStrings>

 

Exemple avec base de données SQL Server Express 2012

<add name="dbConnectionString"

         connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=dbDemo;Integrated Security=SSPI;"

         providerName="System.Data.SqlClient" />

 

Il est possible de crypter la chaine de connexion  si besoin pour plus de sécurité

Exemple

private  void Encrypt()

        {

            // chemin complet vers l'*.EXE

            Configuration configuration = ConfigurationManager.OpenExeConfiguration(@"C:\Users\romagny\Documents\Visual Studio 2013\Projects\DataTraining\DataTraining\bin\Debug\DataTraining.exe");// (ConfigurationUserLevel.None);

            ConfigurationSection connectionStrings = configuration.GetSection("connectionStrings");

            if (connectionStrings != null)

                if (!connectionStrings.SectionInformation.IsProtected)

                {

                    configuration.ConnectionStrings.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");

                    // connectionStrings.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");

                    configuration.Save(ConfigurationSaveMode.Full, true);

                }

        }

        private string Decrypt()

        {

           // Configuration config = ConfigurationManager.OpenExeConfiguration(@"C:\Users\romagny\Documents\Visual Studio 2013\Projects\DataTraining\DataTraining\bin\Debug\DataTraining.exe");

            // ou

            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

            return config.ConnectionStrings.ConnectionStrings[1].ConnectionString;

        }

 

2-La connexion(SqlConnection)

On utilise un singleton.Le Namespace  System.Data.SqlClient .

Lock http://msdn.microsoft.com/fr-fr/library/c5kehkcz(v=vs.90).aspx

 

public class Sql

    {

        private static Sql _instance;

        private SqlConnection connection;

        private static object locker = new object();

        public ConnectionStringSettings ConnectionStringSettings { get; set; }

 

        private Sql() { }

 

        public static Sql Instance

        {

            get

            {

                lock (locker) // verrouille le bloc de code

                {

                    if (_instance == null)

                        _instance = new Sql();

                }

 

                return _instance;

            }

        }

        public SqlConnection GetConnection()

        {        

            if (connection == null)

            {

                ConnectionStringSettings = ConfigurationManager.ConnectionStrings["dbConnectionString"]; // ou ConfigurationManager.ConnectionStrings[1] l'index commence à 1

                connection = new SqlConnection(ConnectionStringSettings.ConnectionString);

            }               

           

            if (connection.State == ConnectionState.Closed)

                connection.Open();

           

            return connection;

        }     

        public void CloseConnection()

        {

            if (this.connection != null)

            {

                if (this.connection.State != ConnectionState.Closed)

                {

                    this.connection.Close();

                }

            }

        }

    }

 

Partager cet article

Repost 0
Published by Romagny13 - dans ADO.NET
commenter cet article

commentaires