27 maja 2011

Dynamiczne tworzenie i parsowanie connection stringa do SQL Servera

Jak okiełznać connection string?


Kilkukrotnie zdarzyło mi się zmierzyć z problemem tworzenia dynamicznie w kodzie connection stringa do SQL Servera.  W sytuacji gdy użytkownik wybiera lub wprowadza nazwę bazy czy instacji SQL Servera generowanie connection stringów podczas wykonania aplikacji może być pomocne.   W wersji .NET Framework 2.0 pojawiła się bardzo użyteczna klasa o nazwie SqlConnectionStringBuilder. Umożliwia ona konstruowanie connection stringa poprzez ustawianie właściwości klasy, które są zmapowane na poszczególne parametry connection stringa. Poniżej prosty przykład przygotowania połączenia do bazy master.

using System;
using System.Data.SqlClient;

namespace ConnectionStringBuilder
{
    class Program
    {
        static void Main(string[] args)
        {
            var  builder = new SqlConnectionStringBuilder();
            //use master database
            builder.InitialCatalog = "master";
            //Connect to local SQL Server instance
            builder.DataSource = @".";
            //User Windows Authentication
            builder.IntegratedSecurity = true;
            //set 30 second connection timeout.
            builder.ConnectTimeout = 30; 
            //retrieve connection string
            string connectionString = builder.ConnectionString;

            using(var connection = new SqlConnection(connectionString))
            {
                connection.Open();
            }

            Console.WriteLine(builder.ConnectionString);
        }
    }
}







Parsowanie i modyfikacja istniejącego connection stringa


Inną możliwością SqlConnectionStringBuilder jest zaczytywanie istniejącego connection stringa i ewentualna manipulacja przy jego parameterach (np. ustawieniami rozmiaru ConnectionPool).

using System;
using System.Data.SqlClient;

namespace ConnectionStringBuilder
{
    class Program
    {
        static void Main(string[] args)
        {
            const string connectionStringToParse = @"
              Data Source=.;Initial Catalog=msdb;
              Integrated Security=True;
              Min Pool Size=50;
              Max Pool Size=400";
            var parser = new SqlConnectionStringBuilder(connectionStringToParse);
            parser.MinPoolSize = 0;             parser.MaxPoolSize = 100;
            //Display modified connection string
            Console.WriteLine(parser.ConnectionString);
        }
    }
}


Happy programming ;)
Publikuj posta

Brak komentarzy:

Prześlij komentarz

Uwaga: tylko uczestnik tego bloga może przesyłać komentarze.