Conectar a SQL Server Con Vb Net

5
En esta oportunidad vamos a ver como, de forma muy sensilla y con muy poco código, podemos establecer en visual basic .net una conexión con un servidor de SQL Server, en mi caso SQL Server Express 2005, y luego de recuperar los datos de una de las tablas para llenar con ellos un DataGridView. Lo primero que hay que hacer es importar dos espacios de nombres como muestro a continuación: Imports System.Data Imports System.Data.SqlClient Para este ejemplo utilizaremos un formulario con un Botón (Button1) y un DataGridView (DataGridView1). En el evento click de button1 uno copiamos el siguiente codigo y modificamos algunos parámetros (Nombre o IP del Servidor, El Nombre de la base de datos y Nombre de la tabla en la instrucción SELECT) para que todo funcione bien. Dim cnn As New SqlConnection("Data Source=MyServidor;Initial Catalog=MiBaseDeDatos;Integrated Security=SSPI;") Dim da As New SqlDataAdapter("SELECT * FROM Productos", cnn) Dim ds As New DataSet da.Fill(ds) DataGridView1.DataSource = ds.Tables(0) Bueno, en realidad no hay mucho que explicar… se crea una conexión (cnn), luego un DataAdapter (da) que tiene como parámetro la instrucción para recuperar los datos (SELECT) y la conexión que debe utilizar (cnn). Si quieres seleccionar solo algunos registros deberás agregar una condición WHERE a la instrucción de selección.

description

manual de coneccion de sql con vb net

Transcript of Conectar a SQL Server Con Vb Net

Page 1: Conectar a SQL Server Con Vb Net

En esta oportunidad vamos a ver como, de forma muy sensilla y con muy poco código, podemos

establecer en visual basic .net una conexión con un servidor de SQL Server, en mi caso SQL Server

Express 2005,  y luego de recuperar los datos de una de las tablas para llenar con ellos un

DataGridView.

Lo primero que hay que hacer es importar dos espacios de nombres como muestro a continuación:

Imports System.Data

Imports System.Data.SqlClient

Para este ejemplo utilizaremos un formulario con un Botón (Button1) y un DataGridView

(DataGridView1). En el evento click de button1 uno copiamos el siguiente codigo y modificamos

algunos parámetros (Nombre o IP del Servidor, El Nombre de la base de datos y Nombre de la tabla en

la instrucción SELECT) para que todo funcione bien.

Dim cnn As New SqlConnection("Data Source=MyServidor;Initial

Catalog=MiBaseDeDatos;Integrated Security=SSPI;")

Dim da As New SqlDataAdapter("SELECT * FROM Productos", cnn)

Dim ds As New DataSet

da.Fill(ds)

DataGridView1.DataSource = ds.Tables(0)

Bueno, en realidad no hay mucho que explicar… se crea una conexión (cnn), luego un DataAdapter

(da) que tiene como parámetro la instrucción para recuperar los datos (SELECT) y la conexión que

debe utilizar (cnn). Si quieres seleccionar solo algunos registros deberás agregar una

condición WHERE a la instrucción de selección.

Page 2: Conectar a SQL Server Con Vb Net

En las lineas que siguen les dejo algunas breves definiciones por si a alguno le hicieran falta y para

saber más de las distintas opciones para crear una conexión SQL Server 2005 les dejo también el

siguiente link:http://www.connectionstrings.com/sql-server-2005.

DataAdapter

Representa un conjunto de comandos SQL y una conexión de base de datos que se utilizan para

rellenar el objeto DataSet y actualizar el origen de datos.

DataAdapter actúa como puente entre DataSet y un origen de datos para la recuperación y el

almacenamiento de datos. Para poder actuar como un puente, DataAdapter asigna el método Fill, que

modifica los datos de DataSet de forma que coincidan con los del origen de datos, y asigna el método

Update, que modifica los datos del origen de datos para hacerlos coincidir con los de DataSet.

DataSet

Representa una caché de memoria interna de datos. Es un componente fundamental de la

arquitectura de ADO.NET. DataSet está compuesto por una colección de objetos DataTable.

DataTable

Representa una tabla de datos en memoria.

DataTable es un objeto central de la biblioteca ADO.NET. Entre los objetos que utilizan DataTable se

incluyen DataSet y DataView.

Al obtener acceso a los objetos DataTable, hay que tener en cuenta que éstos distinguen entre

mayúsculas y minúsculas condicionalmente. Por ejemplo, si un objeto DataTable se denomina

“mydatatable” y otro “Mydatatable”, la cadena que se utilice para buscar una de las tablas se

considerará que distingue entre mayúsculas y minúsculas. Sin embargo, si existe “mydatatable” pero

no existe “Mydatatable”, se considerará que la cadena de búsqueda no distingue entre mayúsculas y

minúsculas. Un objeto DataSet puede contener dos objetos DataTable que tengan el mismo valor para

la propiedad TableName y distintos valores para la propiedad Namespace.<

99999999999999999999999999999999999999999999999999999999

Oe men si quieres conectar Sql Server con Visual Net usa una cadena de conexion para asipoder modificar el contenido o registros de las tablas. Codigo de conexion:

--Cabeceraimport system.dataimport system.data.sqlclient

------

public con as new sqlconnection("Server=.;DataBase=NombreBD;Integrated Security=true");

Page 3: Conectar a SQL Server Con Vb Net

'el . en la cadena de conexion corresponde a tu servidor con el q entras a SQL'metodos para abrir conexion

sub abririf con.state=0 thencon.open()end sub

sub cerrarif con.state=1 thencon.close()end dub

--ya esta  ahora esos metodos de abrir y cerrar se usan cuando quieres modificar --las tablas de tu BD ya sea registrando , eliminado,Modificando , etc

AKI UN EJEMPLO UTILIZANDO UNA BD : ejercicio

CódigoGOUSE masterGOIF(DB_ID('ejercicio')IS NOT NULL)DROP DATABASE ejercicioGOCREATE DATABASE ejercicioGOUSE ejercicioGOCREATE TABLE producto (idp CHAR(3)PRIMARY KEY,nombre VARCHAR(30)NOT NULL,procedencia VARCHAR(20)NOT NULL CHECK (procedencia IN('Nacional','Importado')),precio money,presentacion VARCHAR(15)NOT NULL CHECK(presentacion IN('Caja','Lata','Bolsa')),stock INT NOT NULL CHECK(stock >0),fvencimiento DATE)GOCREATE proc registrar(@idp CHAR(3),@nombre VARCHAR(30),@proc VARCHAR(20),@precio money,@presen VARCHAR(15),@stock INT,@fv DATE,@msj VARCHAR(60)output)AS BEGINIF(EXISTS(SELECT * FROM producto WHERE idp =@idp )) SET @msj ='el id '+','+@idp +'Producto ya existe'   ELSE BEGIN   INSERT producto VALUES(@idp ,@nombre ,@proc ,@precio ,@presen ,@stock ,@fv )     SET @msj ='DATOS REGISTRADOS'   ENDEND 

Page 4: Conectar a SQL Server Con Vb Net

  

--ahora el code en visual 

Código Imports System.DataImports System.Data.SqlClientPublic Class Form1    Public con As New SqlConnection("Server=.;DataBase=ejercicio;Integrated Security=true")     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load        cbxpresentacion.Items.Add("Seleccione") : cbxpresentacion.Items.Add("Caja")        cbxpresentacion.Items.Add("Lata") : cbxpresentacion.Items.Add("Bolsa")        rbtnacional.Checked = True        cbxpresentacion.SelectedIndex = 0        'para validar meses        vermes()     End Sub    Sub abrir()        If con.State = 0 Then con.Open()    End Sub    Sub cerrar()        If con.State = 1 Then con.Close()    End Sub    Private Sub btnregistrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnregistrar.Click        If txtcodigo.Text <> "" And txtnombre.Text <> "" And txtprecio.Text <> "" And txtstock.Text <> "" Then            If cbxpresentacion.SelectedIndex <> 0 Then                Try                    Dim cmd As New SqlCommand                    Dim msje As String = ""                    abrir()                    cmd = New SqlCommand("registrar", con)                    cmd.CommandType = 4                    With cmd.Parameters                        .AddWithValue("@idp", txtcodigo.Text)                        .AddWithValue("@nombre", txtnombre.Text)                        If rbtnacional.Checked = True Then                            .AddWithValue("@proc", "Nacional")                        Else                            .AddWithValue("@proc", "Importado")                        End If                        .AddWithValue("@precio", txtprecio.Text)                        .AddWithValue("@presen", cbxpresentacion.Text)                        .AddWithValue("@stock", txtstock.Text)                        .AddWithValue("@fv", datefv.Value)                        .Add("@msj", SqlDbType.VarChar, 60).Direction = 2                        cmd.ExecuteNonQuery()                        msje = cmd.Parameters("@msj").Value                        MessageBox.Show(msje)

Page 5: Conectar a SQL Server Con Vb Net

                       limpiar()                    End With                Catch ex As Exception                End Try                cerrar()            Else                MessageBox.Show("Seleccione Un Indice del Combo")            End If        Else            MessageBox.Show("Llene Cajas")        End If    End Sub    Sub limpiar()        txtcodigo.Clear() : txtnombre.Clear() : txtprecio.Clear()        txtstock.Clear()        rbtnacional.Checked = True        cbxpresentacion.SelectedIndex = 0    End Sub    Sub vermes()        ',con esto al momento de escoger el valor del datetimepicker        'el mes se suma 2        Dim mes As Integer = Now.Month        datefv.MinDate = New DateTime(Now.Year, mes + 2, Now.Day)    End Sub    Private Sub datefv_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles datefv.ValueChanged          vermes()    End SubEnd Class