Introducción:
Aquí tienes el código completo para Visual Basic 2005 o superior y usando una
base de datos de SQL Server.
Para insertar los datos, te lo muestro de dos formas: usando un objeto
SqlCommand y un SqlDataAdapter.
Recuerda que los datos están en una base de datos de SQL
Server que está en la instancia SQLEXPRESS del equipo local.
Para más info sobre la base de datos de ejemplo, ver:
Estructura de la tabla de
ejemplo.
Para usar esta clase, puedes usar el siguiente código:
Module Module1
Sub Main()
ejemploSQL()
Console.ReadLine()
End Sub
Sub ejemploSQL()
Dim sql As New AccesoDatosSQL
Dim t As Integer = sql.TotalRegistros()
Console.WriteLine("El total de registros es: {0}", t)
Console.WriteLine()
Dim id As Integer
' Usando un command
id = sql.Insertar("Guillermo", "Som", _
"[email protected]", DateTime.Now, _
"Prueba de insertar datos " & t + 1)
Console.WriteLine("El nuevo ID es: {0}", id)
' Usando un dataAdapter
'id = sql.InsertarAdapter("Guillermo", "Som", _
' "[email protected]", DateTime.Now, _
' "Prueba de insertar datos " & t + 1)
'Console.WriteLine("El nuevo ID es: {0}", id)
' Actualizar el ID 2
id = 2
sql.Actualizar(id, "Guillermo nº" & id, "Som", _
"[email protected]", DateTime.Now)
End Sub
End Module
'------------------------------------------------------------------------------
' Instrucciones SQL desde ADO.NET con Visual Basic y SQL Server (25/May/08)
'
' ©Guillermo 'guille' Som, 2008
'------------------------------------------------------------------------------
Option Strict On
Imports Microsoft.VisualBasic
Imports System
Imports System.Data
Imports System.Data.SqlClient
Public Class AccesoDatosSQL
Public NombreTabla As String = "Tabla1"
Public Function CadenaConexion() As String
Dim csb As New SqlConnectionStringBuilder
csb.DataSource = "(local)\SQLEXPRESS"
csb.InitialCatalog = "prueba_SQL"
csb.IntegratedSecurity = True
Return csb.ConnectionString
End Function
Public Function Insertar(ByVal nombre As String, _
ByVal apellidos As String, _
ByVal email As String, _
ByVal fecha As DateTime, _
ByVal descripcion As String) As Integer
Dim sCon As String = CadenaConexion()
Dim sel As String
sel = "INSERT INTO " & NombreTabla & _
"(Nombre, Apellidos, Email, Fecha, Descripcion) " & _
"VALUES " & _
"(@Nombre, @Apellidos, @Email, @Fecha, @Descripcion) " & _
"SELECT @@Identity"
Using con As New SqlConnection(sCon)
Dim cmd As New SqlCommand(sel, con)
cmd.Parameters.AddWithValue("@Nombre", nombre)
cmd.Parameters.AddWithValue("@Apellidos", apellidos)
cmd.Parameters.AddWithValue("@Email", email)
cmd.Parameters.AddWithValue("@Fecha", fecha)
cmd.Parameters.AddWithValue("@Descripcion", descripcion)
con.Open()
Dim t As Integer = CInt(cmd.ExecuteScalar())
con.Close()
Return t
End Using
End Function
Public Function InsertarAdapter(ByVal nombre As String, _
ByVal apellidos As String, _
ByVal email As String, _
ByVal fecha As DateTime, _
ByVal descripcion As String) As Integer
Dim sCon As String = CadenaConexion()
Dim sel As String
' Usando un DataAdapter
sel = "SELECT * FROM " & NombreTabla
Dim da As New SqlDataAdapter(sel, sCon)
da.MissingSchemaAction = MissingSchemaAction.AddWithKey
Dim cb As New SqlCommandBuilder(da)
Dim dt As New DataTable
da.Fill(dt)
Dim dr As DataRow = dt.NewRow
dr("Nombre") = nombre
dr("Apellidos") = apellidos
dr("Email") = email
dr("Fecha") = fecha.ToString("dd/MM/yyyy")
dr("Descripcion") = descripcion
dt.Rows.Add(dr)
da.Update(dt)
Return CInt(dr("ID"))
End Function
Public Sub Eliminar(ByVal id As Integer)
Dim sCon As String = CadenaConexion()
Dim sel As String = "DELETE FROM " & NombreTabla & " WHERE ID = @ID"
Using con As New SqlConnection(sCon)
Dim cmd As New SqlCommand(sel, con)
cmd.Parameters.AddWithValue("@ID", id)
con.Open()
cmd.ExecuteNonQuery()
con.Close()
End Using
End Sub
Public Sub Actualizar(ByVal id As Integer, _
ByVal nombre As String, _
ByVal apellidos As String, _
ByVal email As String, _
ByVal fecha As DateTime)
Dim sCon As String = CadenaConexion()
Dim sel As String
sel = "UPDATE " & NombreTabla & _
" SET Nombre = @Nombre, Apellidos = @Apellidos, Email = @Email, Fecha = @Fecha" & _
" WHERE ID = @ID"
Using con As New SqlConnection(sCon)
Dim cmd As New SqlCommand(sel, con)
cmd.Parameters.AddWithValue("@ID", id)
cmd.Parameters.AddWithValue("@Nombre", nombre)
cmd.Parameters.AddWithValue("@Apellidos", apellidos)
cmd.Parameters.AddWithValue("@Email", email)
cmd.Parameters.AddWithValue("@Fecha", fecha)
con.Open()
Dim t As Integer = cmd.ExecuteNonQuery()
con.Close()
Console.WriteLine("Filas actualizadas: {0}", t)
End Using
End Sub
Public Function TotalRegistros() As Integer
Dim sCon As String = CadenaConexion()
Dim sel As String = "SELECT COUNT(*) FROM " & NombreTabla
Using con As New SqlConnection(sCon)
Dim cmd As New SqlCommand(sel, con)
con.Open()
Dim t As Integer = CInt(cmd.ExecuteScalar())
con.Close()
Return t
End Using
End Function
End Class
Espero que te sea de utilidad y si quieres ver otros ejemplos del resto de
comandos, puedes hacerlo desde:
Instrucciones SQL desde ADO.NET.
Nos vemos.
Guillermo
Espacios de nombres usados en el código de este artículo:
System.Data.SqlClient