You are on page 1of 11

Instructivo I

Conexin a SQL Server desde .NET


Instituto NSLP Miguel Angel Villelli

INDICE

PAGINA

Como conectarse a una base de datos SQL server. La cadena de conexin

3 3 5

Conectarnos a SQL Server mediante una cadena de conexin con autenticacin de Windows Conectarnos a SQL Server mediante una cadena de conexin con autenticacin de SQL Server Conectarnos a una base de datos que est en un servidor "remoto Conectar usando cdigo de ADO.NET Ejemplo de cmo conectar usando un objeto SqlDataAdapter Ejemplo de cmo conectarse usando un objeto SqlConnection especialmente para utilizar con StoreProcedure

5 5 6 7

Seleccionar un Modo de Autenticacin Glosario NameSpace Ado.NET Acceso a una Base de Datos SQL Server Crear Inicios de Sesin Para crear un Inicio de Sesin Windows Para crear un Inicio de Sesin SQL Server Crear Usuarios de Base de Datos

9 9 9 10 10 10 11 11 11

Versin 1.0

Pgina 2

Como conectarse a una base de datos SQL server.


La cadena de conexin
Para poder comunicarnos desde nuestro software con el DBMS database management system (sistema de gestin de bases de datos) necesitamos generar lo que se conoce como string connection (cadena de conexin). Podemos armar la cadena de conexin mediante 2 (dos) formas distintas, segn como tengamos la configuracin de nuestro SQL Server autenticacin de Windows. o No hay que indicar ni usuario ni contrasea ya que se conecta al servidor con nuestro inicio de sesin. autenticacin de SQL Server. o Es preciso incluir dentro de los parmetros de la cadena usuario y contrasea.

Las bases de datos de SQL Server a las que podemos acceder con esa cadena de conexin pueden ser de cualquier versin usando ADO.NET. En los siguientes ejemplos usaremos ciertos valores que hay que indicar segn tus preferencias, me refiero al nombre del servidor de SQL Server y a la base de datos a la que quieras acceder, adems del nombre del usuario o la contrasea. En el siguiente cuadro estn indicados con letra en negrita los valores a los cuales hay que hacer referencia para conectarnos a una base de datos Sql Server Esos valores son los siguientes:

Versin 1.0

Pgina 3

Estas cadenas de conexin aplican tanto para VB.NET como para C# y para poder conectarse a SQLServer en cualquiera de sus versiones, en ambos casos usando SPACENAME (objetos del espacio de nombres) SqlClient.

Valor
ServidorSQL

Descripcin
El nombre del servidor de SQL Server al que quieras acceder. Los valores que puede tener depender de tu configuracin de SQL Server, pero estos son los valores ms comunes: Valor . (local) NombreEquipo Descripcin Uno de estos valores indicar que quieres acceder a la instancia predeterminada de SQL Server que haya en el equipo en el que se est ejecutando la aplicacin. Es preferible usar (local). El nombre del equipo en el que se est usando la aplicacin. Es preferible usar (local) para que no influya el equipo en el que se ejecute el programa. Un nombre DNS es decir, un nombre que despus "resolver" una direccin IP, por ejemplo, el nombre de un servidor de Internet: nombreDominio.com. Una direccin IP en la que est el servidor de SQL al que queremos acceder, esto vale para servidores que estn en equipos remotos. Por defecto se utilizar el puerto predeterminado: 1433 La direccin IP del servidor de IP al que se acceder por el puerto indicado. Por defecto el puerto de SQL Server es el 1433. Si no queremos usar la instancia predeterminada del servidor de SQL Server indicado (usando cualquiera de los cuatro mtodos anteriores), podemos indicarlo despus del nombre del servidor separado con un \. Por ejemplo, en Visual Studio .NET (2002 y 2003) se crea una instancia llamada NETSDK, para acceder a esa instancia usaremos: (local)\NETSDK. En Visual Studio 2005 se suele instalar el SQL Server 2005 Express y se crea una instancia llamada SQLEXPRESS, para acceder a las bases de datos de esa instancia, usaremos: (local)\SQLEXPRESS.

NombreDNS DireccinIP

DireccinIP, Puerto ServidorSQL/Instancia

BaseDatos Usuario Contrasea

El nombre de la base de datos de SQL Server a la que quieres acceder (no la tabla) El nombre del usuario de la base de datos a la que quieres acceder. El password (o contrasea) del usuario indicado.

Versin 1.0

Pgina 4

Conectarnos a SQL Server mediante una cadena de conexin con autenticacin de Windows
Para conectar a una base de datos de SQL Server con autenticacin de Windows, la cadena de conexin ser: Data Source = ServidorSQL; Initial Catalog = BaseDatos; Integrated Security = True

Conectarnos a SQL Server mediante una cadena de conexin con autenticacin de SQL Server
Para conectar a una base de datos de SQL Server usando autenticacin del propio SQL Server, la cadena de conexin ser: data source = ServidorSQL; initial catalog = BaseDatos; user id = Usuario; password = Contrasea

Conectarnos a una base de datos que est en un servidor "remoto"


Para acceder a una base de datos que est en un servidor remoto, es decir en otro equipo, debemos usar cualquiera de las dos cadenas de conexin que hemos visto antes, aunque lo normal ser que se use la segunda en la que se indica el nombre del usuario y la contrasea. Esto se suele usar cuando estamos en una pgina Web o bien si queremos acceder desde una aplicacin de escritorio (Windows.Forms), pero la base de datos no est en nuestro equipo. El cdigo podra ser el siguiente, y puedes usar una direccin IP o el nombre de un dominio (DNS) para indicar el nombre del servidor de SQL Server: data source = ServidorSQL; initial catalog = BaseDatos; user id = Usuario; password = Contrasea

Conectar usando cdigo de ADO.NET


Lo habitual es que usemos dos tipos de "conexiones", una usando un objeto DataAdapter y la otra usando un objeto Connection. Esta ltima es la que debemos usar si el acceso lo haremos por medio de un objeto Command en lugar del DataAdapter, por ejemplo para acceder a un procedimiento almacenado. Pero para mantener el ejemplo simple, usaremos cmo conectar usando el SqlDataAdapter en el que usaremos un objeto DataTable para traer los datos, y esos datos los mostraremos en un DataGrid o un GridView como es el caso del cdigo mostrado. Este mismo cdigo ser vlido tanto para una aplicacin de Windows o una pgina Web.

Versin 1.0

Pgina 5

Ejemplo de cmo conectar usando un objeto SqlDataAdapter


Cuando usamos un DataAdapter no necesitamos usar un objeto del tipo SqlCommand, ya que el adaptador se encarga de todo.

Utilizando VB .NET
'Las dos lneas que siguen invocan mediante SpaceName a las funciones includas en VisualStudio, algo parecido a cuando utilizabamos las libreras de C++. Lo que nos permite acceder a las funciones de manipulacin de datos en este caso particular Imports System.Data Imports System.Data.SqlClient 'Todo lo que hagamos en visual basic .net debe estar includo dentro de una clase Public Class frm_Conexion_Base_Datos Declaramos una variable de tipo cadena la cual va a contener a nuestro string connection Dim sCnn As String = "data source = ServidorSQL; initial catalog = BaseDatos; user id = Usuario; password = Contrasea" Declaramos una variable de tipo cadena la cual va a contener en este caso una instruccin sql para seleccionar todos los registros de una tabla Dim sSel As String = "SELECT * FROM NombreTabla" Declaramos una variable de tipo SqlDataAdapter que se utiliza como un puente entre DataSet y SQL Server para recuperar y guardar datos Dim da As SqlDataAdapter Declaramos una variable de tipo DataTable que representa una tabla de datos en memoria Dim dt As New DataTable Luego establecemos las acciones que debe realizar nuestro programa mediante la estructura (TRY CATCH FINALLY), esta instruccin proporciona una manera de controlar algunos o todos los errores posibles que pueden ocurrir en un bloque de cdigo determinado mientras se ejecuta el cdigo. Try Instanciamos el dataAdapter (da) pasandole como parmetros la instruccin SQL y la cadena de conexin daEjConexion = New SqlDataAdapter(sSel, sCnn) Y procedemos a llenar el dataTable (dt) o sea generamos una table con los datos en memoria da.Fill(dt) Por ltimo solo queda establecer el origen de datos de un control DataGridView (grilla) para poder mostrarle al usuario por pantalla los registros recuperado de esa instruccin SQL Me.GrillaDatos.DataSource = dt

Versin 1.0

Pgina 6

el objeto DataBind Enlaza un origen de datos al control de servidor invocado y a todos sus controles secundarios. Me.GrillaDatos.DataBind() Y para informarle al usuario por ejemplo cuantos registro hay en la consulta solicitada le asignamos a la propiedad text de un control label la cuenta de registros que tiene el datatable (dt) LabelInfo.Text = String.Format("Total datos en la tabla: {0}", dt.Rows.Count) Catch ex As Exception En caso de producirse un error lo informamos en la mismo control label LabelInfo.Text = "Error: " & ex.Message Finnaly Si todo sali bien procedemos a cerrar la conexin a la base de datos mediante el comando dispose sCnn.Dispose() End Try End class

Ejemplo de cmo conectarse usando un objeto SqlConnection especialmente para utilizar con StoreProcedure
Utilizando VB .NET
'Las dos lneas que siguen invocan mediante SpaceName a las funciones includas en VisualStudio, algo parecido a cuando utilizabamos las libreras de C++. Lo que nos permite acceder a las funciones de manipulacin de datos en este caso particular imports System.Data; imports System.Data.SqlClient; Public Class Frm_Conectando_a_SqlServer Dim sCnn as String = As String = "Data Source = LocalHost \ ServidorSQL;Initial Catalog=BaseDatos;User Id=Usuario ;Password= Contrasea;" 'Cn es una nueva instancia de la conexin a la base Dim cn As SqlClient.SqlConnection = New SqlClient.SqlConnection y le asignamos al Objeto ConnectionString nustra cadena de conexin cn.ConnectionString = sCnn 'Creamos un objeto comando (cmd) por ejemplo para ejecutar un StoreProcedure (Procedimiento almacenado) de la base de datos Dim cmd As New SqlCommand("NombreDelStore", cn)

Versin 1.0

Pgina 7

Luego establecemos las acciones que debe realizar nuestro programa mediante la estructura (TRY CATCH FINALLY), esta instruccin proporciona una manera de controlar algunos o todos los errores posibles que pueden ocurrir en un bloque de cdigo determinado mientras se ejecuta el cdigo. Try cmd.CommandType = CommandType.StoredProcedure 'Le pasamos el parmetro o los parmetros requeridos al Store cmd.Parameters.AddWithValue("@Parametro",Valor de control o valor de variable) 'Abrimos la conexin cn.Open() 'Creamos un DataReader llamado lector en este caso para leer el resultado de la consulta en memoria y lo ejecutamos Dim lector As SqlDataReader = Cmd.ExecuteReader( CommandBehavior.CloseConnection ) En el caso que el dataReader contenga datos (registros) que provienen del StoreProcedure If lector.hasrows = true then 'Generamos un bucle que recorre este lector de arriba hacia abajo y establecemos las instrucciones para hacer lo que querramos con los datos While lector.read Declaramos una matriz o array (row0) que va a capturar registro por registro mediante el bucle Dim row0 as string() ={lector(valorCampo1} , lector(valorCampo2) , lector (valorCampo)} Y as vamos agregando a un control dataGridView por ejemplo registro pro registro para mostrarle al usuario por pantalla Me.grillaDeDatos.Rows.Add(row0) End While Cerramos el lector Lector.Close() Catch ex As Exception Throw ex Finally 'Por ltimo cerramos la conexin abierta y liberamos el objeto command cn.Dispose() cmd.Dispose() End Try End Class

Versin 1.0

Pgina 8

Seleccionar un Modo de Autenticacin


SQL Server soporta dos modos de autenticacin, Autenticacin Windows Autenticacin Mixta. Cuando trabajamos en modo Autenticacin Windows, que es el predeterminado y aconsejado, solo los usuarios autorizados de sistema operativo podrn conectarse al servidor SQL Server. En el modo de Autenticacin Windows, podemos proporcionar acceso tanto a usuarios, como a grupos de sistema operativo. Para cambiar el Modo de Autenticacin, una vez instalada la instancia de SQL Server Express, lo ms sencillo es utilizar la herramienta SQL Server Management Studio. Para ello debes de seguir los siguientes pasos: 1. Inicia SQL Server Management Studio desde el Men Inicio. 2. Desde el Object Explorer, haz clic con el botn de la derecha en la instancia y selecciona Propiedades. 3. Desde la pestaa de Security podrs modificar el Modo de Autenticacin Nota: Para que este cambio surta efecto debers de reiniciar el servicio de SQL Server. Para decidir que Modo de Autenticacin es el ms conveniente, debers de tener en cuenta: El Modo de Autenticacin Windows es el ms seguro y el recomendado. En este modo de Autenticacin, SQL Server confa en la autenticacin realizada por el Sistema Operativo. En el Modo de Autenticacin Windows no viajan contraseas por la red, ni ser necesario especificarlas en una cadena de conexin. El Modo de Autenticacin Mixto deberemos de utilizarlo nicamente en aquellos casos en los que, por la estructura de nuestra red, no podamos utilizar autenticacin Windows.

Acceso a una Base de Datos SQL Server


SQL Server utiliza una autenticacin en dos pasos: En primer lugar, la cadena de conexin especifica una autenticacin a nivel de Instancia de SQL Server. Una vez se ha autenticado el inicio de sesin, se comprueba si ese inicio de sesin tiene acceso a la base de datos a la que se pretende acceder. Para ello, SQL Server mantiene una asociacin entre Inicio de Sesin a nivel de Instancia y Usuario a nivel de Base de Datos.

Crear Inicios de Sesin


El primer paso, para proporcionar acceso a una Base de Datos es crear un inicio de sesin para el usuario que necesita el acceso. Podemos crear dos tipos de inicio de sesin: Inicio de Sesin Windows (usuarios o grupos) e Inicios de Sesin SQL Server (que solo podrn crearse en Autenticacin Mixta).

Versin 1.0

Pgina 9

Para crear un Inicio de Sesin Windows:


CREATE LOGIN [EXPRESS\Usuario] FROM WINDOWS En este ejemplo hace referencia al nombre de Dominio o Equipo en el que est instalado SQL Server Express y Usuario hace referencia a un usuario de Sistema Operativo. Nota: Para que el anterior ejemplo funcione correctamente es necesario que el usuario exista a nivel de Sistema Operativo.

Para crear un Inicio de Sesin SQL Server:


CREATE LOGIN SQLUser WITH PASSWORD='Pa$$w0rd' Tambin podemos utilizar SQL Server Management Studio. En Object Explorer, despliega la Instancia, despliega la carpeta de Security y haz clic en Logins. Si haces clic con botn de la derecha, New Login

Crear Usuarios de Base de Datos


Una vez hemos creado el Inicio de Sesin para poder acceder a la instancia, debemos de proporcionar acceso a ese Inicio de Sesin a la base de datos deseada. Para ello deberemos de crear un usuario en la base de datos y asociarlo al inicio de sesin. El siguiente cdigo es un ejemplo de este proceso, en el que estamos proporcionando acceso al Inicio de Sesin [EXPRESS\Usuario] a la base de datos DemoMSDN: USE DemoMSDN GO CREATE USER Usuario FOR LOGIN [EXPRESS\Usuario]

Desde SQL Management Studio podemos realizar esta operacin de 2 dos) formas. Desde las Propiedades del Inicio de Sesin o en la base de datos, creando un usuario. LA forma ms sencilla es realizarlo desde las propiedades del Inicio de Sesin. Para ello en las propiedades de un Inicio de Sesin vete a la opcin de User Mapping y selecciona las bases de datos a las que quieres proporcionar acceso.

Versin 1.0

Pgina 10

Glosario
NameSpace Un Namespace es una forma de agrupar clases, funciones, tipos de datos, etc. que estn relacionadas entre s. Por ejemplo, entre los Namespaces que podemos encontrar en el .NET Framework encontramos uno con funciones relacionadas con Visual Basic: Ejemplo: Microsoft.VisualBasic. Si te fijas, Microsoft y VisualBasic estn separados por un punto, esto significa que Microsoft a su vez es un Namespace que contiene otros espacios de nombres, tales como el mencionado VisualBasic, CSharp y Win32 con el cual podemos acceder a eventos o manipular el registro del sistema Para saber que es lo que contiene un Namespace, simplemente escribe el nombre con un punto y te mostrar una lista desplegable con los miembros que pertenecen a dicho espacio de nombres. Haz la prueba y en el cdigo escribe la palabra Microsoft. (Con el punto al final), vers que se despliega los posibles Namespaces disponibles y si seguimos y escribimos, o seleccionamos VisualBasic con un punto al final, veremos otra vez los Namespaces de esta otra clase llamada VisualBasic. Ado.net El ADO.NET es un conjunto de componentes del software que pueden ser usados por los programadores para acceder a datos y a servicios de datos. Es una parte de la biblioteca de clases base que estn incluidas en el Microsoft .NET Framework. Es comnmente usado por los programadores para acceder y para modificar los datos almacenados en un Sistema Gestor de Bases de Datos Relacionales, aunque tambin puede ser usado para acceder a datos en fuentes no relacionales. ADO.NET es a veces considerado como una evolucin de la tecnologa ActiveX Data Objects (ADO), pero fue cambiado tan extensivamente que puede ser concebido como un producto enteramente nuevo.

Versin 1.0

Pgina 11