Mostrando entradas con la etiqueta BindingSource. Mostrar todas las entradas
Mostrando entradas con la etiqueta BindingSource. Mostrar todas las entradas

martes, 30 de julio de 2013

Conectar una aplicación .NET a una base de datos SQL Server

Vamos a conectar una aplicación de Visual Basic.NET a una Base de Datos SQL SERVER 2005 a través del Wizard que proporciona Visual Studio 2005 para conectarla con un DataSourceTambién daré nociones de otra forma de hacerlo que no desarrollaré. Finalmente haremos la misma operación pero por código

A través de DataSource

Continuando con nuestro  programa de ejemplo, sobre nuestro proyecto de Visual Studio 2005 (Visual Basic), añadimos un combo al formulario y procedemos del siguiente modo para enlazarlo a una tabla de nuestra base de Datos:

1.Añadimos los controles del componente Microsoft  remoteData Control 6.0



2. En la barra de herramientas aparece:


Elegimos BindingSource y colocamos sobre el formulario.


3. Para conectarla a la base de datos
Elegimos dataSource en el cuadro de propiedades del BindingSource y seguimos el Wizard.




Elegimos los parámetros de conexión que se corresponden con nuestra Base de Datos.




Ahora en la barra de herramientas aparecerán nuevas herramientas de Base de datos


4. En las propiedades del Combo añado la herramienta deseada (asociada a la tabla de la que deseamos leer los datos)





5. En ValueMember elegimos el campo a mostrar.


6. Para poder acceder al campo código de la tabla desde el código de Visual Basic podemos definir el campo deseado en las propiedades del combo.



7. Y después leerlo en el código de VB en el evento _SelectedIndexChanged

Private Sub CboHospitales_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
CboHospitales.SelectedIndexChanged


 Dim CodigoHosp As String
 CodigoHosp = CboHospitales.SelectedItem.Row.ItemArray(1)

También podemos ver su valor en tiempo de ejecución en la ventana watch



8. Finalmente ejecutamos la aplicación para ver que ha enlazado el campo de la tabla correctamente.


Podemos proceder del mismo modo con una caja de texto corriente.


Elegimos el objeto para la tabla y el campo deseados


Ahora al ejecutar el proyecto, cada vez que elegimos un hospital, aparece en la caja su dirección.


Para establecer el teléfono,  Colocamos sobre el formulario un objeto tbHospTelBindingSource y lo definimos


Colocamos una caja de lista y ponemos esto en sus propiedades:

Otra forma de conectarse: con SQL Datasbase

En proyecto, Add New Item



Se elige SQL Database


Conectar una aplicación Visual Basic.Net a una Base de Datos SQL Server 2005 mediante código

Para hacer lo mismo que se acaba de realizar pero por código, se procede del siguiente modo:
Creamos un módulo de conexión llamado conexion.vb e incluimos las siguientes líneas:

Módulo genérico de conexión

Imports System.Data.SqlClient
Imports System.Data
Module Conexion

    Public cnDB As SqlClient.SqlConnection
    Dim cmDB As SqlClient.SqlCommand
    Dim dsDB As DataSet
   
    Public Sub conectar(ByVal CadConectarSql As String)
        cnDB = New SqlClient.SqlConnection
        cnDB.ConnectionString = CadConectarSql
        Try
            cnDB.Open()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

    Public Sub desconectar()
        cnDB.Close()
    End Sub

    Public Function conSelect(ByVal cadConsul As String) As DataTable
        Dim dtTabla As New DataTable
        Try
            cmDB = New SqlClient.SqlCommand(cadConsul, cnDB)
            dtTabla = New DataTable()

        Catch
            ' // MessageBox.Show(ex.Message);
        End Try
        Return dtTabla
    End Function

    Public Function conInsert(ByVal cadInsert As String) As DataTable
        Dim dtTabla As New DataTable
        Try
            cmDB = New SqlClient.SqlCommand(cadInsert, cnDB)
            cmDB.ExecuteNonQuery()
        Catch
            ' // MessageBox.Show(ex.Message);
        End Try
        Return dtTabla
    End Function
End Module

Para hacer uso de la conexión, en la clase form1 en el form1_load, hacemos uso del método conInsert para hacer un insert sobre la base de datos.

Para hacer un insert o un delete

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

Dim CadConexion As String
       
      CadConexion = "User ID=sa;Initial Catalog=model;Data Source=SRV-      SERVIDOR\INSTANCIASQL2005;Password=xxxxxxx"
      Conexion.conectar(CadConexion)
      Conexion.conInsert("INSERT INTO dbo.tbHospital VALUES      ('HOS99','Prueba','Borrar 34')")

End Sub

O para una select

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

Dim CadConexion As String     
Dim dt As New DataTable
Dim Valor As String

      CadConexion = "User ID=sa;Initial Catalog=model;DataSource=SRV-SERVIDOR\INSTANCIASQL2005;Password=xxxxxxx"

      Conexion.conectar(CadConexion)

Dim daDB As New SqlClient.SqlDataAdapter("SELECT * FROM dbo.tbHospital", Conexion.cnDB)

        daDB.Fill(dt)
        Valor = dt.Rows(2).Item(2)
        MessageBox.Show(Valor)
        Conexion.desconectar()
End Sub

O bien para conectar un Data grid a los resultados

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

Dim CadConexion As String
Dim ds As New DataSet()

      CadConexion = "User ID=sa;Initial Catalog=model;Data       Source= SRV-SERVIDOR\INSTANCIASQL2005;Password= xxxxxxx"
      Conexion.conectar(CadConexion)

Dim daDB As New SqlClient.SqlDataAdapter("Select * From dbo.tbHospital", Conexion.cnDB)

      daDB.MissingSchemaAction = MissingSchemaAction.AddWithKey
      daDB.FillSchema(ds, SchemaType.Source, "Cust")
      daDB.Fill(ds, "Cust")

      DataGridView1.DataSource = ds
      DataGridView1.DataMember = "Cust"
       
End Sub

Explicación de la cadena de Conexión:

User ID=sa;  Usuario sa del SQL SERVER 2005
Initial Catalog=model;  Nombre de la Base de Datos
Data Source= SRV-SERVIDOR\INSTANCIASQL2005;  nombre de la instancia de SQL SERVER 2005
Password=xxxxxxx;  Password del sa del SQL SERVER 2005

En este enlace está la clase completa para conexión a base de datos.