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 DataSource. Tambié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