martes, 15 de septiembre de 2009

Insertar Datos en VB. Net con SQL Server 2005

Para insertar datos vamos a utilizar los objetos "DataAdapter" (SqlDataAdapter y OleDbDataAdapter), los cuales van a desempeñar el papel de puente entre el origen de datos y el "DataSet", permitiéndonos cargar el "DataSet" con la información de la fuente de datos, y posteriormente, actualizar el origen de datos con la información del "DataSet". Un objeto "DataAdapter" puede contener desde una sencilla sentencia SQL, hasta varios objetos "Command". La clase "DataAdapter" dispone de cuatro propiedades, que nos van a permitir asignar a cada una, un objeto "Command" (SqlCommand u OleDbCommand) con las operaciones estándar de manipulación de datos. Estas propiedades son las siguientes.
  • InsertCommand. Objeto de la clase Command, que se va a utilizar para realizar una inserción de datos.
  • SelectCommand. Objeto de la clase Command que se va a utilizar para ejecutar una sentencia Select de SQL.
  • UpdateCommand. Objeto de la clase Command que se va a utilizar para realizar una modificación de los datos.
  • DeleteCommand. Objeto de la clase Command que se va a utilizar para realizar una eliminación de datos.
Un método destacable de las clases SqlDataAdapter/OleDbDataAdapter es el método "Fill( )", que ejecuta el comando de selección que se encuentra asociado a la propiedad "SelectCommand", los datos obtenidos del origen de datos se cargarán en el objeto "DataSet" que pasamos por parámetro. Para ver el uso de los objetos "DataAdapter" vamos a crear un proyecto y lo denominaremos "WAccesoDatos", luego crearemos un formulario y lo llamaremos "frmInsertaDatos", despues agregamos los siguientes controles.


En esta aplicación vamos a utilizar el objeto "DataAdapter", con el que realizaremos una consulta en la tabla "Programa" de la BD "Academico", la cual esta creada dentro del "SQL Server 2005", y donde insertaremos las nuevas filas. Después de agregar los controles que describimos anteriormente, el formulario "frmInsertaDatos" debe de quedar como se muestra a continuación.

Respecto al código del "frmInsertaDatos", en primer lugar, vamos a declarar varios objetos de acceso a datos a nivel de la clase para poder tenerlos disponibles en diversos métodos.


En el siguiente paso escribiremos el procedimiento del evento "Load" del formulario "frmInsertaDatos", el cual mostramos a continuación.


Luego digitamos el método "CargaDatos( )", que se ocupa de cargar el "DataSet", y asignárselo al DataGrid a través de su propiedad "DataSource". Observe que en el método "CargarDatos( )" lo primero que hacemos es vaciar el "DataSet", puesto que este objeto conserva los datos de tablas y registros; en el caso de que no limpiáramos el "DataSet", se acumularían las sucesivas operaciones de llenado de filas sobre la tabla que contiene.

Finalmente, en el botón "Grabar", escribiremos las instrucciones para insertar un nuevo registro en la tabla "Programa", el cual se codificara como se ve a continuación.

Una vez codificado todos los procedimientos ejecutamos la aplicación, la cual vemos en la figura siguiente.


Ahora insertamos un nuevo programa, dentro del formulario ejecutado, el cual vemos a continuación.


PD:

  • Después de crear el proyecto "WAccesoDatos", debemos de agregar las Referencias para poder acceder a los Datos, las cuales son "Microsoft ActiveX Data Objects 2.8 Library" y "Microsoft CDO for Windows 2000 Library".
  • No olvidar que en la línea de código de conexión:
    "Data Source=mario;database=academico; User Id=sa;Password=master"
    En la parte donde se encuentra el nombre del Data Source, debe de ir el nombre de tu servidor de base de datos en este caso, el mío es "mario".
  • Crear una BD llamada "Academico", dentro de la BD crear una tabla "Programa", los campos y tipos de datos de la tabla creada seran los siguientes:
    Programa = char(10)
    Descripción = varchar(50)
    Ambos permiten valores nulos.

18 comentarios:

  1. excelete ahora solo falta como actualizasrlo ayuda please a actualizar mi bd con sql server 2005

    ResponderEliminar
  2. En esta mismo blog en la etiqueta Programación de la misma fecha que este ejemplo, se encuentra un ejemplo para Actualizar Datos en VB. Net con SQL Server 2005.

    Sldos,

    ResponderEliminar
  3. Gracias por el aporte, es muy bueno y no sabes cuanto me ayudo, tengo una pregunta y ojala me puedas orientar:
    quiero mostrar un conjunto de registros en un datagridview, modificarlos y guardarlos pero no quiero que se modifique uno por uno sino que modificar varios de los registros y al final guardar los cambios.... como puedo hacer esto?? o con que herramienta puedo hacerlo?

    ResponderEliminar
  4. Para editar los datos obtenidos de una BD dentro de un DataGridView, tienes que trabajar con las propiedades de dicho control, en una futura entrada publicare un ejemplo como el que me comentas.
    Me parece interesante la propuesta.

    ResponderEliminar
  5. Podrias proporcionar la BD "Academico" para no tener alguna complicacion x favor

    ResponderEliminar
  6. La BD "Academico" tiene un tabla que es "Programa" y dentro de esta tabla existen dos campos:
    -----------------------------
    Campo Tipo de Dato
    -----------------------------
    Programa char(1)
    Descripcion varchar(50)
    -----------------------------

    El campo programa es un Primary Key (clave primaria)

    Espero poder haberte ayudado.

    Sldos

    ResponderEliminar
  7. muchas gracias por este aporteyo solo quisiera saber como puedo agregar un registro nuevo ciando existe una llave primaria par que no se repita el mismo valor gracias

    ResponderEliminar
  8. Se te agradece bro la vdd sq stoy iniciando en .net y st tuto m ha servido de mucho grax =)

    ResponderEliminar
  9. No me guarda los datos en la tabla programa, que puedo hacer?
    gamc001@hotmail.com

    ResponderEliminar
  10. Amigo No tendras un pequeño tutorial para conectar con la base de datos que esta en excel

    ResponderEliminar
  11. gracias vato me ayudaste a comprender un poco el lenguaje yo soy pro java pero necesitaba enteder el vb y ahi la llevo esta muy bien ejemplificado

    ResponderEliminar
  12. Excelente ejemplo hasta ahorita el mas facil de realizar ademas funcion muy bien

    ResponderEliminar
  13. me a servido de muchos gracias :)

    ResponderEliminar
  14. NECESITO ADICIONAR REGISTROS A SQL DESDE VISUAL BASIC 2010, UN FAVRO PODRIAN AYUDARME CON UN EJEMPLO

    ResponderEliminar
  15. necesito hacer una consulta esta muy bueno el ejmplo pero lo que quiero saber es por ejemplo yo tengo una base de datos venta y en esa bd tengo una tabla producto y marcas y otras tablas pero lo que quiero saber
    io tengo la relacion echa en sql obio que de marca a productos es de 1 a muchos pero por ejemplo cuando guardo en producto no me guarda en marca el campo ingresado me especifico: en producto tiene nom_marca,cod_marca
    y ademas obio mas campos cod_marcas en primary key en tabla marcata de forania en producto trato de hacer el insert en vb 2008 no me sale
    si tienen algun codigo con esa respuesta porfavor respondame de ante mano muchas gracias

    ResponderEliminar
  16. Hola, buen día

    Te sugiero que sigas este procedimiento, so estoy trabajando Visual Basic 2010 Express edition y SQL Server 2005

    Saludos

    ResponderEliminar
  17. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    'Crear Conexion.
    oconexion = New SqlConnection
    oconexion.ConnectionString = "Data Source=SIS01;database=academico; User Id=sa;Password=1609"
    'Crear Adaptador.
    odataadapter = New SqlDataAdapter
    'Crear Comando de Insercion.
    'Consulta con sus parametros y asi asiganalos en el adaptador.
    Dim ocmdinsercion As New SqlCommand("INSER INTO programa" & "(programa, Descripcion) VALUES (@programa, @descripcion)", oconexion)
    odataadapter.InsertCommand = ocmdinsercion
    odataadapter.InsertCommand = parameters.add <<< no me permite pasar de aqui. por que?

    ResponderEliminar
  18. Magnifico!!! que gran aporte amigo, espero que sigas aportando mas sobre estas cosas, me sirvió muchísimo este blog, me has librado de muchas jejejeje esta excelente!

    ResponderEliminar