17 de abril de 2012

SqlConnectionStringBuilder en VS

Lo más correcto a la hora de leer una cadena de conexión a base de datos es almacenarla en un archivo .config y leerla desde allí, tal como se muestra en   http://pabletoreto.blogspot.com/2012/04/appconfig-en-vs.html

No obstante si no queremos leerla desde el archivo .config existe una forma más comoda de generarla mediante la clase SqlConnectionStringBuilder, SqlConnectionStringBuilder es una clase que nos permite crear conexiones ADO.net sin correr riesgos al introducir los valores, algunas de sus propiedades más importantes son:

DataSource: Establece u obtiene el nombre o la dirección IP de la instancia SQL Server a la que se conecta.
InitalCatalog: Establece u obtiene el nombre de la base de datos asociada con la conexión.
Integrated Security: Establece u obtiene el valor que indica el tipo de conexión. True para la seguridad integrada de windows, y False para indicar usuario y contraseña.
Password: Establece u obtiene la contraseña para la cuenta de SQL Server asociada a la conexión.
UserId: El usuario de SQL Server asociado a la conexión.
ConnectionString: Establece u obtiene el valor completo de la cadena de conexión, asociada al DBConnectionStringBuilder.

y estas son propiedades igual de importantes pero complementarias:

ApplicationName: Establece u obtiene el nombre de la aplicación asociada con el connection String
AsynchronousProcessing: Establece u obtiene el valor que indica si la conexión permite procesamiento asíncrono.
AttachDBFilename: Establece u obtiene el valor del datafile primario (.mdf).
BrowsableConnectionString: Establece u obtiene un valor que indica si la conexión es visible en el diseñador de Visual Studio.
ConnectTimeout: Establece u obtiene el timeout para la conexión.
Encrypt: Establece u obtiene un valor boolean que indica cuando SQL Server utiliza SSL encryption para todos los datos que se envían entre el cliente y el servidor.
MaxPoolSize: Obtiene o Establece el máximo número de conexiones en el connection pool.
MinPoolSize: Obtiene o establece el mínimo número de conexiones para el connection pool.
MultipleActiveResultsets: Obtiene o establece mediante un valor boolean el uso de MARS.
PacketSize: Obtiene o establece el número en bytes del paquete de red de intercambio de datos con SQL Server.
Pooling: Establece u obtiene un valor boolano que indica si se utiilza pooling.



SqlConnectionStringBuilder en VB

El diseño del formulario de la aplicación es solo un DatagridView que se cargara con datos de una base llamada empleados sobre una tabla llamada personal.



Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
    Dim conn As New SqlConnectionStringBuilder

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        With conn
            .DataSource = "USER-PC\PABLETORETO"
            .InitialCatalog = "empleado"
            .IntegratedSecurity = True
        End With

        Try
            Using con As New SqlConnection(conn.ConnectionString)
                con.Open()
                Using sqlad As New SqlDataAdapter("select * from personal", con)
                    Using dt As New DataTable
                        sqlad.Fill(dt)
                        DataGridView1.DataSource = dt
                    End Using
                End Using
            End Using
        Catch
        End Try
    End Sub
End Class

en caso necesitar especificar usuario y password: conn.UserID = pUserId
conn.Password = pPassword 


SqlConnectionStringBuilder en C#
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace WindowsFormsApplication1 { public partial class Form1 : Form{ public Form1(){ InitializeComponent(); } SqlConnectionStringBuilder conn = new SqlConnectionStringBuilder(); SqlConnection cnn; SqlDataAdapter sqlda; DataTable dt; private void Form1_Load(object sender, EventArgs e){ conn.DataSource = "USER-PC\\PABLETORETO"; conn.InitialCatalog = "empleado"; conn.IntegratedSecurity = true; using(cnn = new SqlConnection(conn.ConnectionString)){ cnn.Open(); using(sqlda = new SqlDataAdapter("select * from personal", cnn)) { using(dt = new DataTable()){ sqlda.Fill(dt); dataGridView1.DataSource = dt; }}} }}} en caso necesitar especificar usuario y password:
conn.UserID = pUserId;
conn.Password = pPassword;