martes, 16 de noviembre de 2010

Conexión a Base de Datos SQL Server con ADO.Net

Antes de explicar todos estos asuntos se supone que el participante o la persona que hizo esta consulta en el blog debera estar familiarizado con los siguientes temas:
- Terminologia de Base de Datos
- SQL

PROGRAMACIÓN ADO.NET
LIBRERIAS DE DATOS

LIBRERIAS EMPRESARIALES DE DATOS
Esta tecnologia pertenece a la jerarquia de net framework en base a su nivel de coneccion a fuentes de informacion.
Contienen diferentes tipos de clases destinados a la conectividad y a la administracion de fuentes de informacion tanto internas como externas. La tecnologia ADO.NET es una base escencial para cualquier tipo de proyecto que requiera datos en una tecnologia de informacion.
Existe una librería jerarquica que es nativa de SQL SERVER para proveer la informacion de un conjunto de clases para la administracion de datos, ademas existen otras librerias no solamente para un motor de base de datos especifico sino tambien para otros motores de base de datos de distintas empresas.
La librería jerarquica a utilizar para la administracion de SQL SERVER es:
‘System.Data.SQLClient’: es una representacion nativa y proveedor de SQL SERVER.

MODOS DE ACCESO A TRAVES DE CONECCIONES
Para accesar a la fuente de informacion se establece dos modos de conecciones las cuales son:
coneccion abierta y coneccion cerrada; quiere decir que existen librerias que permiten utilizar el proveedor de datos para obtener o establecer informacion a una fuente o motor de base de datos sin necesidad de mantener abierto una coneccion. Existe otra librería que necesita de una coneccion abierta paraadministrar una fuente de informacion.

Primero tendriamos que crear un formulario con las siguientes caracteristicas como apreciamos en el pantallaso a continuacion:
Este primer ejemplo sera en "MODO DE CONEXION ABIERTA"

Aqui es donde visualizaremos los datos con los cuales amos accesar en el momento de la conexion con la Base de Datos SQL Server..........Usaremos la Base de Datos Neptuno la cual a venido siendo de nuestro uso en el transcurso de la enseñanza del BLOG.

Bueno para comenzar tubieramos que saber que un proveedor de datos de .NET Framework sirve para conectarse a una base de datos, ejecutar comandos y recuperar resultados. Estos datosa mencionados se procesan directamente o se colocan en un "DataSet" de ADO.Net con el fin de exponerlos al usuario para un proposito especifico, combinarlos con datos de varios origenes o utilizarlos de forma remota entre niveles.
Por ejemplo uno de estos proveedores para SQL Server seria el 'System.Data.SqlClient', el cual proporciona acceso de datos para Microsoft SQL Server 7.0 o posterior a esta version, que mas que todo vendria a ser como el NameSpaces o Espacio de nombres.
SqlConnection: es una clase que permite realizar una conexion manteniendo una direccion de: Nombre de Servidor, Base de Datos, Seguridad Integrada(Autentificación de Windows) y otros tipos de parametros de conexion. A continuacion les mostrare el uso de esta clase dentro de la programacion de ADO.Net, el cual se mostrara en pantallasos los cuales yo desarrolle en clases....



Aqui ya estamos en el SQL Server con la siguiente sentencia la cual nos muestra la tabla Productos la cual mostraremos solo los suspendidos o con el valor a 1




Aqui vemos el codigo implementado para nosotros poder hacer tal conexion, con la respectia sentencia del que ejecutamos en el SQL Server, dicho sea de paso explicado en comentario cada linea de codigo y su respectivo uso.




Aqui como podemos ver ya hicimos tal acceso a la Data mostrandome lo que pedi.

Ahora les enseñare el codigo que use para tal conexion y cada linea de codigo con su respectiva explicacion:


Imports System.Data.SqlClient

Public Class Form1



    'SqlConnection .- Es una clase que permite realizar una conexion manteniendo
    'una dirección de : nombre de servidor, Base de Datos, Seguridad Integrada
    '(autenticación windows )  y otros tipos de parametros de conexión.

    Private objConexion As New SqlConnection _
    ("SERVER = (local); DATABASE=neptuno; INTEGRATED SECURITY = sspi")


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'SqlCommand  .-  Es una clase de ésta libreria nativa que permite la ejecucion
        'de sentencias Transact SQL con una conexion establecida en un objecto o se puede
        'establecer de manera directa: new SqlConnection("............")
        'Es sus parámetros  de su constructor requiere varios tipos de datos que estan a base de
        'sobrecargas.
        Dim objCommand As New SqlCommand _
        ("select * from Productos where Suspendido <> 1", objConexion)
        'objCommand.Connection = objConexion
        'objCommand.CommandText = "select * from......"
        '

        objCommand.CommandType = CommandType.Text 'Especificando sólo de Texto en el tipo
        'de Comando.

        objConexion.Open() 'Se habre la conexión

        'SqlDataReader .-  Es otra clase que permite leer resultados obtenidos por
        'la ejecución de comandos de ObjCommand
        'ExecuteReader() .- Es un método de la clase SqlCommand que ejecuta las sentencias
        'transact(Sql)
        Dim lectorDatos As SqlDataReader = objCommand.ExecuteReader()
        'Read() .- Es un método de la clase SqlDataReader que lee los datos obtenidos en el resultado.
        'Éste método devuelve un valor booleano (true) miestras esta leyendo datos, de lo contrario
        'deja de leer.
        EstructurarColumnasListView()

        'lectorDatos.Read() 'Lee la primera fila
        'MessageBox.Show(lectorDatos.Item(0)) 'Mostrando la columna 0 de la primera fila que se obtiene.


        'lectorDatos.Read() 'Lee la siguiente fila
        'MessageBox.Show(lectorDatos.Item(0))

        Dim ElementoSub As ListViewItem
        Dim x As Integer = 0
        While (lectorDatos.Read()) 'Mientras esta leyendo.

            x += 1
            ElementoSub = ListaProducto.Items.Add(lectorDatos.Item(0))
            ElementoSub.SubItems.Add(lectorDatos.Item(1))
            ElementoSub.SubItems.Add(lectorDatos.Item(2))
            ElementoSub.SubItems.Add(lectorDatos.Item(3))
            ElementoSub.SubItems.Add(lectorDatos.Item(4))
            ElementoSub.SubItems.Add(lectorDatos.Item(5))
            ElementoSub.SubItems.Add(lectorDatos.Item(6))

        End While

        lblCantidad.Text = x

    End Sub


    Private Sub EstructurarColumnasListView()

        ListaProducto.View = View.Details 'Va ser un control de grilla
        ListaProducto.Columns.Add("Código", 50, HorizontalAlignment.Left)
        ListaProducto.Columns.Add("Nombre", 150, HorizontalAlignment.Left)
        ListaProducto.Columns.Add("Cod Proveedor", 100, HorizontalAlignment.Left)
        ListaProducto.Columns.Add("Cant. Unidad", 150, HorizontalAlignment.Left)
        ListaProducto.Columns.Add("Precio", 100, HorizontalAlignment.Left)
        ListaProducto.Columns.Add("Unid. Existencia", 100, HorizontalAlignment.Left)
        ListaProducto.GridLines = True ' Para tener las lineas tipo excel.

    End Sub


End Class



Aqui en este segundo ejemplo mostraremos ahora con una conexion de MODO CERRADA:


creamos el siguiente formulario




A continuacion les pegare el codigo usado en dicho formulario dicho sea de paso indicarles que cada linea de codigo esta explicado para un mayor entendimiento de su parte.....


Imports System.Data.SqlClient

Public Class Form2

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'SqlDataAdapter: Permite el uso de la fuente de informacion sin utilizar la
        'conexion abierta. Va directamente como proveedor a servidor de SQL
        'para obtener o establecer datos.
        Dim objDataAdapter As New SqlDataAdapter _
        ("select * from Pedidos where RegionDestinatario is not null", Form1.objConexion)
        'Data Table: es una clase que mantiene una coleccion de datos(filas y columnas)
        'de manera temporal en la memoria del computador.
        Dim ObjTablaPedidos As New DataTable("Pedidos") '("Pedidos") es una Alias a la tabla temporal.

        'Fill(DataTable, Dataset): es una metodo que almacena datos a un objeto tabla temporal.

        objDataAdapter.Fill(ObjTablaPedidos)
        'DataSource: es una propiedad del control DataGridView que permite establecer u obtener
        'recursos de datos de una tabla temporal.

        ListaPedidos.DataSource = ObjTablaPedidos
        'Nota: Solo algunos controles tienen esta propiedad.
    End Sub
End Class

Aqui nos muestra los datos en MODO DE CONEXION CERRADA.

2 comentarios:

  1. Buenos dias disculpen por la demora en resoler sus inquietudes aqui esta lo que me solicitaste amigo Guido, espero y sea de tu utilidad y mayor entendimiento ya que ese fue el fin, y tambien pueden entenderlo el resto de compañeros, muchas gracias por sus consultan que ayudan a que uno tambien refuerce lo ya aprendido.

    ResponderEliminar

Presentacion