El núcleo de las clases de ADO.NET están en el namespace System.Data, el cual contiene otros namespaces como System.Data.SqlClient y System.Data.OleDb. En este caso solo usaremos System.Data.SqlClient para conectarnos al SQL Server.
para poder conectarse al SQL Server tenemos que importarlo al proyecto asi:
Imports System.Data.SqlClient 'al inicio de todo Public Class Form1 End ClassA continuacion veremos las clases de ADO.NET del namespace System.Data.SqlClient.
Clase SqlConnection
Provee la conexión con la BD en este caso al SQL Server. Aquí puedes especificar la cadena de Conexión, el cual tiene lo necesario para abrir una conexión a la BD. El SqlConnection tiene los siguientes parámetros básicos para la conexión:
- Server: el nombre del SqlServer al que se quiere accerder. Usualmente el nombre de la computadora donde se esta ejecutando el SQL Server. Si el SQL Server esta en la misma maquina donde trabajas se puede usar solo (local) o localhost.
- Database: el nombre de la BD a la cual se quiere conectar.
- User ID: el nombre de usuario para acceder a la BD
- Password: la contraseña para del usuario(User ID)
también se pude usar la seguridad integrada (se llama así por que el SQL Server esta integrado con el sistema de seguridad de Windows NT, dando la mejor coneccion segura, ya que los parametros User Id y Password no necesitan ser especificados en el codigo), con la cual no será necesario especificar un usuario y un password a la cadena de conexión. Solo se tiene que hacer mención en la cadena usando el parametro Integrated Security, el cual se le da el valor true.
En el proyecto el código iría así
Este caso usaremos Integrated Security. La otra opción sería asi:
Ahora que se tiene una conexión, se puede abrirla o cerrarla de esta forma:En el proyecto el código iría así
'
Dim objConnection As SqlConnection = New SqlConnection("server=(local); database=pruebaBD; Integrated Security=true")
'
Este caso usaremos Integrated Security. La otra opción sería asi:
'
Dim objConnection As SqlConnection = New SqlConnection("server=(local); database=pruebaBD; User ID=sa; Password=tuclave")
'
'Se usan los métodos del objeto SqlConnection: Open para abrir objConnection.Open() 'y Close para cerrar objConnection.Close()Clase SqlCommand
representa un comando SQL que se ejecuta en el alancen de datos. Los comando suelen ser un select, insert, update o delete query , el cual puede ser un SQL String o llamar a un stored procedure. La forma más facil es inicializar un objeto SqlCommand sin parametros y después de inicializado se establecen las propiedades. Se inicializa un objeto SqlCommand de la siguiente manera.
' Dim objCommand As SqlCommand = New SqlCommand() 'ahora se tendrá que configurarse ciertas propiedades en el objeto SqlCommand:
- Connection: aquí se asigna un objeto SqlConnection para establecer la conección con la BD. Para que funcione, la conexión tiene que ser abierta en tiempo de ejecución.
' objCommand.Connection = objConnection '
- CommandText: aquí se espedifica el SQL string o el stored procedure a ser ejecurado entre comillas dobles.
' objCommand.CommandText = "INSERT INTO persona (pe_codigo,pe_nombre,pe_edad) VALUES (1,'MarioBros',50)" 'en este ejemplo, al CommandText le asignamos un SQL query básico, en el cual solo se hace un INSERT para agregar datos a la tabla persona, el cual tienen las columnas pe_codigo, pe_nombre, pe_edad y luego le agregamos los valores (1, "MarioBros", 50) para cada columna respectivamente.
ya que generalmente los valores que se asignan son desconocidos, es mejor usar placeholders, que son variables que llevan un arroba adelante (@). No necesitan llamarse necesariamente como las columnas de la tabla, pero ayuda a tener un código mas claro. En este caso el código sería así:
' objCommand.CommandText = "INSERT INTO persona (pe_codigo,pe_nombre,pe_edad) VALUES (@pe_codigo,@pe_nombre,@pe_edad)" 'luego se tiene que crear los parámetros necesarios para insertar los valores a los placeholders cuando la sentencia SQL sea ejecutada. Se le crea y agrega parametros a la colección parameters del objeto SqlCommand. Los parámetros se refieren a los parámetros que se necesitan para enviar datos al SQL query o al stored procedure. La forma más facil de agregar parametros es la suguiente:
'
objCommand.Parameters.AddWithValue("@pe_codigo", txtCodigo.Text)
objCommand.Parameters.AddWithValue("@pe_nombre", txtNombre.Text)
objCommand.Parameters.AddWithValue("@pe_edad", txtEdad.Text)
'Con el método AddWithValue se indica el nombre de la variable y el valor que se le asignará. En este caso los valores se obtienen de un TextBox. También se puede usar el método Add, aunque ya está obsoleto, pero ayuda a declarar con mejor exactitud los tipos de las variables, ya que con AddWithValue los hace automáticamente y a veces puede que cree algunos errores al tratar de convertir tipos.- El Método ExecuteNonQuery: Con este método se ejecuta el SQL query. Para hacerlo se debe primero abrir la conección a la BD. Este método retorna el número de filas que fueron afectadas por el query. En codigo sería así:
' objCommand.Connection.Open() objCommand.ExecuteNonQuery() objCommand.Connection.Close() '
PRACTICA
Ahora ya tenemos lo suficiente para agregar datos, en este caso usando el SQL Server 2008.
Abrimos el Visual studio 2010, creamos un nuevo proyecto y elegimos crear una aplicación de Windows Forms. Le ponemos de nombre "Prueba_ADO". Usaremos el nombre por defecto del Form que es "Form1.vb". Agregamos los controles que se ven en la imagen:
para los Textboxs le agregaremos los sigtes. nombres correspondientemente: txtCodigo, txtNombre, txtEdad. Para los botones los sigtes. nombres btnAgregar, btnLimpiar, btnSalir
para la parte del SQL Server, creamos una nueva BD llamada "pruebaBD" y luego ejecutamos el siguiente script para crear la tabla persona
USE [pruebaBD] GO CREATE TABLE persona( pe_codigo int Primary Key NOT NULL, pe_nombre nvarchar(10) NULL, pe_edad int NULL, ) GOahora le damos doble click a los 3 botones y los llenamos con los códigos que están aquí
'no te olvides de importar
Imports System.Data.SqlClient
Public Class Form1
'creamos una coneccion a la BD
Dim objConnection As SqlConnection = New SqlConnection("server=(local); database=pruebaBD; Integrated Security=true")
Private Sub btnAgregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAgregar.Click
Try
'creamos un objeto SqlCommand para enviar una consulta SQL a la BD
Dim objCommand As SqlCommand = New SqlCommand()
'le asignamos la coneccion al objeto SqlCommand
objCommand.Connection = objConnection
'le asignamos al obj SqlCommand el Query o el stored procedure / con @ se crea una variable
objCommand.CommandText = "INSERT INTO persona (pe_codigo,pe_nombre,pe_edad) VALUES (@pe_codigo,@pe_nombre,@pe_edad)"
'con la propiedad Parameters del objeto SqlCommand asignamos los valores a los parametros pre establecidos
objCommand.Parameters.AddWithValue("@pe_codigo", txtCodigo.Text)
objCommand.Parameters.AddWithValue("@pe_nombre", txtNombre.Text)
objCommand.Parameters.AddWithValue("@pe_edad", txtEdad.Text)
'antes de ejecutar el Query necesitamos abrir la coneccion
objCommand.Connection.Open()
'ahora que esta abierta la coneccion podemos ejecutar el query
objCommand.ExecuteNonQuery()
'y finalmente cerramos la coneccion
objCommand.Connection.Close()
Catch ex As Exception
MsgBox(ex.Message.ToString, MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Error")
End Try
End Sub
Private Sub btnLimpiar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLimpiar.Click
'para limpiar el contenido del los Textboxs
txtCodigo.Clear()
txtEdad.Clear()
txtNombre.Clear()
End Sub
Private Sub btnSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalir.Click
'cerrar aplicacion
Close()
End Sub
End Class
Dentro del botón agregar se le ha puesto un try-catch para manejar las excepciones. Ahora, después de verificar que no hay ningún error de sintaxis ejecutamos la aplicación y podremos ingresar los 3 datos de código, nombre y edad. Recuerda que no hay validación en los Textbox así que mira donde van solo números y solo texto. Para Comprobar que se ha ingresado los datos puedes ir al SQL Server y verificar si allí están.
Lo maximo super interesante!!! gracias Edu!!!
ResponderEliminar