You are on page 1of 14

ADO.

NET Conexin a Bases de datos


Descripcin de los objetos ADO.NET Creacin guiada de una conexin a base de datos Creacin guiada de una consulta a datos con objetos DataReader Creacin guiada de una consulta con objetos DataSet/DataTable Descripcin de los pasos

Descripcin de los objetos ADO.NET


El acceso a Datos en .Net es manejado por la librera System.Data en la cual encontraremos otras libreras que brindan soporte a bases de datos en especial, por ejemplo si deseamos trabajar con bases de datos ORACLE tendramos que usar la librera System.Data.OracleClient, si la base da datos a conectar es SQL Server entonces la librera seria System.data.SqlClient. Nota: en System.Data Existen libreras especficas para 2 base de datos : SQL Server y Oracle a esas libreras se les conoce como libreras de objetos NATIVOS por estar diseadas y trabajar directamente como lo hace la base de datos respectiva. Sin embargo estas no son las 2 nicas bases de datos a las que nos podamos conectar hay otras bases de d atos existentes a las que nos conectaremos usando libreras de objetos GENERICOS, llevan este nombre pues estas libreras exponen objetos para la conexin a distintas bases de datos, estas hacen las conversiones usando sus respectivos drivers o controlador es que son OLEDB y ODBC las libreras para estos objetos son las siguientes: System.Data.OLEDB y System.Data.ODBC respectivamente. Estas libreras Nativas o Genricas exponen el mismo juego de objetos que lgicamente , trabajaran los datos de forma distinta dependiendo de la librera, estos objetos son : (en el caso de la librera System.Data.SQLClient):

SQLConnection Este objeto permite la conexin a la base de datos, necesita de ciertos parmetros para lograr dicha conexin: Data Source: Initial Catalog: User ID: Password: Integrated Security: Servidor Base de Datos Usuario de la Base de datos Contrasea de dicho usuario SSPI si deseamos usar autenticacin Windows

Todos estos parmetros separados por ; forman la cadena de conexin o ConnectionString Ejemplo:
Dim Cn As New SqlConnection (Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI)

SQLCommand Este objeto permite la ejecucin de sen tencias Transac/SQL contra la ba se de datos , dando como resultados consultas, inserciones, ac tualizaciones y/o eliminaciones. Este objeto precisa de al menos 2 parmetros: Connection: Especificar el objeto SQLConnection a usar

CommandText: Especificar la Sentencia T/SQL a ejecutar

Ejemplo Dim Cmd As New SqlCommand(Select * From Customers,Cn)

SQLDataAdapter Este objeto es un controlador de las cosas que le suceden a la base de datos, el SQLDataAdapter posee 4 comandos que configurados correctamente pueden darle el mantenimiento completo a 1 tabla de la base de datos, sus principales propiedades y mtodos son: SelectCommand: InsertCommand: DeleteCommand: UpdateCommand: Fill: Ejemplo: Dim Da As New SqlDataAdapter(Cmd) Da.Fill(Dt) SQLDataReader Este objeto es un lector de datos que se crea a partir de un objeto SQLCommand, este objeto necesita hacer lecturas por cada fila de la consulta. Read: Mtodo que hace la lectura Ejemplo: Dim Dr As SqlDataReader=Cmd.ExecuteReader Dr.Read() recibe un SQLCommand con Sentencia Select recibe un SQLCommand con Sentencia Insert recibe un SQLCommand con Sentencia Delete recibe un SQLCommand con Sentencia Update Llena un DataTable

SQLParameter Este objeto encierra un dato involucrado en una operacin contra la base de datos Value= Direction= Valor a encerrar en el parmetro Direccion del parmetro puede ser ent rada o salida

Ejemplo: Dim Prmt As New SqlParameter(@Codigo,SqlDbType.Char,5) Prmt.Direction=ParameterDirection.Input Prmt.Value=TxtValor.Text SQLTransaction El objeto SQLTransaction es que le vigila o audita la operacin a la base de datos dando como resultado xito o fracaso.

LECTURA OBLIGADA
Descripcin de los objetos de la librera System.Data.SqlClient a ms detalle Visite:

http://msdn.microsoft.com/library/spa/default.asp?url=/library/SPA/cpref/html/frlrfSystemDataSql Client.asp

Creacin guiada de una conexin a base de datos


Ahora generaremos paso a paso la conexin a una base de datos SQL Server 2000, para ello cree un proyecto con el nombre ADONET_Consultas Dibuje un botn sobre su formulario, el nombre del botn ser BtnConectar, dibuje tambien un control label y coloquele de nombre LblMensaje, haga doble clic sobre dicho botn y escriba lo siguiente: 'Instanciamos un Objeto del tipo SqlConnection. 'Dicho de otro modo, creamos el obejto conexion. Dim Cn As New SqlConnection LblMensaje.Text &= "Conexion Creada" & vbCrLf 'Configuramos la Cadena de conexion, recuerde que en este paso 'puede usar la auntenticacion SQL pas andole el User Id y el Password 'o usar la autenticacion windows pasandole Integrated security=SSPI Cn.ConnectionString = "Data source=(Local);Initial Catalog=Northwind;Integrated Security=SSPI" LblMensaje.Text &= "Cadena de conexion generada" & vbCrLf 'Se abre la conexion Cn.Open() LblMensaje.Text &= "Conexion Abierta" & vbCrLf 'aca iria el codigo que usaria la conexion abierta 'por ejemplo la ejecucion de un comando ' o la creacion de un objeto SqlDataReader 'Finalmente se cierra la conexion Cn.Close() LblMensaje.Text &= "Conexion Cerrada" & vbCrLf 'Para efectos de escalabilidad y performance 'es recomendable eliminar el objeto si ya no se va a usar Cn.Dispose() LblMensaje.Text &= "Conexion Eliminada" & vbCrLf Este deberia ser el resultado:

Creacin guiada de una consulta a datos con objetos DataReader Agregue un nuevo formulario a su proyecto, el nombre de este ser FrmConsultaDatareader, dibuje un control ListBox y pngale de nombre LstClientes, en el evento Load escriba lo siguiente:

Consultas
Para generar consulta a las bases de datos vamos a emplear ciertos objetos antes explicados.

Nota: las consultas sern mas sencillas o mas complicadas dependiendo de lo extenso de la data que se quiera mostrar, para esto el participante debe conocer las sentencias Transac/SQL para consulta [Select] incluyendo los relacionantes JOINs.

Demo02
Se tiene la siguiente interfaz:

En la cual se pide mostrar la lista de todos los clientes y seguidamente sus pedidos, para lo cual ustedes tendr que colocar el sig uiente cdigo en el evento Load del Form:

Nota: Antes de colocar dicho cdigo en el form debemos asegurarnos con importar el espacio de Nombres a usar de la siguiente manera: Imports System.Data.SQLClient Private Sub FrmDemo02_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' Crear Objetos Dim oCn As New SqlConnection("Data Source=(local);Initial Catalog=CompuVentas;Integrated Security=true") Dim oCmd As New SqlCommand("Select * From Clientes", oCn) Dim oDa As New SqlDataAdapter(oCmd) Dim oDs As New DataSet '- Llenar DataTables en el DataSet oDa.Fill(oDs, "Clientes") oCmd.CommandText = "Select * From Pedidos" oDa.Fill(oDs, "Pedidos") '-- Establecer Relaciones

Dim ColPadre As DataColumn = _ oDs.Tables("Clientes").Columns("CodigoCliente") Dim ColHija As DataColumn = _ oDs.Tables("Pedidos").Columns("CodigoCliente") Dim Relacion As New DataRelation("Pedidos del Cliente", ColPadre, ColHija) oDs.Relations.Add(Relacion) '-- Mostrando Informacion en el dataGrid Me.DrgDatos.DataSource = oDs Me.DrgDatos.DataMember = "Clientes" End Sub

En el cdigo arriba mostrado podemos apreciar que despus de llenar las 2 tablas en el Dataset se crea un objeto Dat aRelation con el fin de enlazar las 2 tablas antes creadas para poder as tener los resultados deseados.

Demo03
Se tiene ahora la siguiente interfaz:

A la que en el evento LOAD aadirs esto: Private Sub FrmDemo03_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '--Crear Objetos Dim oCn As New SqlConnection("Data Source=(local);Initial Catalog=CompuVentas;Integrated Security=true") Dim oCmd As New SqlCommand("Select Distinct(Pais) From Clientes", oCn) '--Abrir la Conexion oCn.Open() 'Crear el DataReader Dim oDr As SqlDataReader = oCmd.ExecuteReader '--Hacer la Lectura While oDr.Read = True Me.CboPaises.Items.Add(oDr.GetString(0)) End While '--Cerrar los Objetos oCn.Close() oDr.Close() End Sub

Haga doble clic al combo pases y agregue lo siguiente: Private Sub CboPaises_SelectedIndexChanged( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CboPaises.SelectedIndexChanged '--Creando Objetos Dim oCn As New SqlConnection( _ "Data Source=(local);Initial Catalog=CompuVentas;Integrated Security=true") Dim oCmd As New SqlCommand( _ "Select CodigoCliente,NombreCliente From Clientes Where Pais=@Pais", oCn) '--Agregando un SQlParameter oCmd.Parameters.Add("@Pais", SqlDbType.VarChar).Value = Me.CboPaises.Text Dim oDa As New SqlDataAdapter(oCmd) Dim oDt As New DataTable

'Llenado la tabla oDa.Fill(oDt) '--Enlazando la informacion al control Me.LstClientes.DataSource = oDt Me.LstClientes.DisplayMember = "NombreCliente" End Sub

Ahora escriba lo siguiente haciendo doble clic en el ListBox: Private Sub LstClientes_SelectedIndexChanged( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles LstClientes.SelectedIndexChanged '--Creando Objetos Dim oCn As New SqlConnection( _ "Data Source=(local);Initial Catalog=CompuVentas;Integrated Security=true") Dim oCmd As New SqlCommand( _ "Select * From Pedidos Where CodigoC liente=@Codigo", oCn) '--Agregando un SQlParameter oCmd.Parameters.Add("@Codigo", SqlDbType.Int).Value = _ Me.LstClientes.SelectedItem("CodigoCliente") Dim oDa As New SqlDataAdapter(oCmd) Dim oDt As New DataTable 'Llenado la tabla oDa.Fill(oDt) '--Enlazando la informacion al control Me.DrgPedidos.DataSource = oDt End Sub

Mantenimientos:
Los mantenimientos a tablas de la base de datos consisten en realizar operaciones de insercin, eliminacin y modificacin de registr os para lo cual no se requiere de la consulta de datos, teniendo eso en cuenta procederemos a mostrar como se usan los objetos de ADO.NET para lograr dichos objetivos.

SQLCommand Este objeto va a permitir gracias a su mtodo ExecuteNonQuery ejecutar contr a la tabla configurada un sentencia que no sea un Select es decir que n ejecutar consulta sino ms bien una Eliminacin, Insercin o actualizacin, por ejemplo: Dim oCn As New SqlConnection( _ "Data Source=(local);Initial Catalog=CompuVentas;User i d=sa") Dim oCmd As New SqlCommand oCmd.Connection = oCn oCmd.CommandText = "Delete From Clientes Where CodigoCliente=@Codigo" oCmd.Parameters.Add("@Codigo", SqlDbType.Int).Value = 10002 oCn.Open() oCmd.ExecuteNonQuery() oCn.Close() Nota: de esta misma manera se puede configurar el comando para que ejecute una sentencia Update o Insert. Los reportes en Visual Studio .Net se manejan usando el Cristal Reports

Reportes:
Los reportes en Visual Studio .Net se manejan usando el Cristal Reports, en esta ocasin veremos coma hacer uso de esta aplicacin.

Disee este formulario:

Ahora agregue al formulario un componente CrystalReports con el nombre RptListadoClientes.Rpt y siga los siguientes pasos: Nota: recuerde que el CrystalRepor ts que viene con el .Net en una versin de Pruebas y no se puede hacer desarrollo propiamente dicho con dicha versin por falta de licencia para ello.

Esta es la ventan de registro, la cual ustedes pasara por alto presionando el botn Despus.

En esta ventana presione aceptar para que aparezca la ventana del asistente de informes en la que por primer paso debemos configurar la conexin a la base de datos, mas especficamente a la tabla de donde sacaremos la data. En la siguiente ventana haga clic al signo + de la ficha OLE DB(ADO)

Se le debe abrir la ventana de acceso a datos

Configure y luego presione Finalizar Una vez enlazado al conjunto de datos agregue la tabla clientes que es de donde sacaremos la informacin, debe quedar asi:

En la ficha campos escoja los campos a mostrar en el reporte, de esta forma:

En la ficha grupos agregue el campo pais, queda asi:

En la ficha Estilo usted proceder a colocarle un titulo al reporte y a escoger un estilo de visualizacin del mismo:

Haga clic en el. Botn finalizar y listo el reporte para que sea llamado desde el formulario.

Escriba el siguiente cdigo en el Botn: ListadoClientes Dim RepCli As New RptListadoClientes Me.CrystalReportViewer1.ReportSource = RepCli

You might also like