Laburo España: 250.000 ofertas de empleo

neomode en la web

programación, diseño web y diseño gráfico
Definimos nuestros propios comandos de ataque a la BD.

Cuando usamos un DataSet que maneja sólo una tabla, los comandos para realizar las inserciones, eliminaciones y actualizaciones de la base de datos podemos generarlos directamente con CommandBuilder. Por ejemplo, para una Base de Datos SQL haríamos:

Private comandos As SQLCommandBuilder(miAdaptador)

Siendo miAdaptador un objeto instanciado de la clase SQLAdapter (podemos comprobar la sentencia que genera VB accediendo a la propiedad CommandText de los distintos comandos:

MsgBox(comandos.InsertCommand.CommandText)
MsgBox(comandos.UpdateCommand.CommandText)
MsgBox(comandos.DeleteCommand.CommandText)

Pero si vamos a manejar más de una tabla en el DataSet comprobaremos que al intentar realizar alguna de las operaciones anteriores obtenemos un error. Esto es así porque los comandos generados automáticamente con CommandBuilder sólo afectan a una tabla. En el caso de manejar más de una tabla tenemos que especificar obligatoriamente los comandos correspondientes. Por ejemplo, para una BD Access:

Private cmdINSERT As OleDbCommand
Private cmdUPDATE As OleDbCommand
Private cmdDELETE As OLEDBCommand

cmdINSERT = New OleDbCommand(“INSERT INTO Socios (IdSocio, Nombre, Telefono) _
VALUES (?,?,?)”, miConexion)
cmdUPDATE = New OleDbCommand(“UPDATE Socios SET Socios.Nombre=?, _
Socios.Telefono=? WHERE IdSocio=?”, miConexion)
cmdDELETE = New OleDbCommand(“DELETE * FROM Socios WHERE IdSocio=?”, miConexion)

Donde los caracteres “?” representan los parámetros que se le pasan a los comandos (si la BD es SQL Server deberemos sustituir estos caracteres por el carácter “@”). Cuando demos orden de ejectuar alguno de estos comandos, VB sustituirá estos parámetros con los valores correspondientes que nosotros le suministraremos. Por ejemplo, para el comando de inserción:

cmdINSERT.Parameters.Add(New OleDbParameter(“IdSocio”, txtCodigoSocio))
cmdINSERT.Parameters.Add(New OleDbParameter(“Nombre”, txtNombre))
cmdINSERT.Parameters.Add(New OleDbParameter(“Telefono”, txtTelefono))

Teniendo en cuenta que txtCodigoSocio, txtNombre y txtTelefono son cuadros de texto con los valores correspondientes.

Ahora sólo nos queda ejecutar el comando:

cmdINSERT.ExecuteNonQuery()

El método ExecuteNonQuery() se utiliza para ejecutar un comando SQL sobre una base de datos siempre que dicho comando no devuelva como resultado un conjunto de filas. Es decir, para realizar una acción concreta que no genera información de salida, como es el caso de una inserción, una actualización o una eliminación. Si queremos ejecutar un comando que nos devuelva una o más filas afectadas (por ejemplo una consulta) deberemos utilizar ExecuteReader() , que devuelve un objeto DataReader.


Ejemplo con SQL en un mantenimiento tipo:

Partimos de:

conn.ConnectionString = cadConn
miAdaptador = New OleDbDataAdapter("SELECT * FROM SOCIOS INNER JOIN CARGOS ON _
SOCIOS.IDCARGO=CARGOS.CODCARGO ORDER BY codigo", cadConn)
miAdaptadorCargos = New OleDbDataAdapter("SELECT * FROM CARGOS ORDER BY_
codCargo", cadConn)

Creamos los comandos:

insertCommand = New OleDbCommand("INSERT INTO Socios (codigo, dni, nombre, _
direccion, poblacion, IdCargo) VALUES (@CLAVE, @DNI, @NOM, @DIR, @POB, @CAR)", conn)
deleteCommand = New OleDbCommand("DELETE * FROM Socios WHERE_
codigo = @CLAVE", conn)
updateCommand = New OleDbCommand("UPDATE Socios SET nombre=@NOM, dni=@DNI, _
direccion=@DIR, poblacion=@POB, IdCargo=@CAR WHERE codigo=@CLAVE", conn)

Definimos los parámetros:

deleteCommand.Parameters.Add(New SqlParameter("@CLAVE", OleDbType.BigInt))
With insertCommand.Parameters
.Add(New OleDbParameter("@CLAVE", SqlType.BigInt))
.Add(New OleDbParameter("@DNI", SqlType.Char))
.Add(New OleDbParameter("@NOM", SqlType.Char))
.Add(New OleDbParameter("@DIR", SqlType.Char))
.Add(New OleDbParameter("@POB", SqlType.Char))
.Add(New OleDbParameter("@CAR", SqlType.BigInt))
End With
With updateCommand.Parameters
.Add(New OleDbParameter("@CLAVE", SqlType.BigInt))
.Add(New OleDbParameter("@DNI", SqlType.Char))
.Add(New OleDbParameter("@NOM", SqlType.Char))
.Add(New OleDbParameter("@DIR", SqlType.Char))
.Add(New OleDbParameter("@POB", SqlType.Char))
.Add(New OleDbParameter("@CAR", SqlType.BigInt))
End With


Asignamos valor a los parámetros (en el caso de una inserción):

With insertCommand.Parameters
.Item("@CLAVE").Value = CInt(txtCodigo.Text)
.Item("@DNI").Value = txtDNI.Text
.Item("@NOM").Value = txtNombre.Text
.Item("@DIR").Value = txtDireccion.Text
.Item("@POB").Value = txtPoblacion.Text
.Item("@CAR").Value = cmbCargos.SelectedIndex + 1
End With


Ejecutamos el comando:

insertCommand.ExecuteNonQuery()
Anotación por Mode Martínez Palenzuela a las 12:16:29 | Comentarios (0)
Guardado en la categoría .NET | Referencias (0)

Referencias:

Dirección para referencias

neomode en la web ni su autor se hacen responsables de los comentarios aqui hechos. Cualquier comentario insultante o fuera del tema, será borrado.

Comentarios:


Escribe tu comentario
HTML Permitido. Correo electrónico no se muestra.


Recordar datos

< Regresa a la portada

Copyleft Mode Martínez Palenzuela - Granada - Andalucía - España

Sindica este sitio usando: RSS 1.0, RSS 2.0, Atom. Esta bitácora se mantiene con Bitacorae.
LaInformacion.com lainformacion.com - Medio Oficial de los Premios Bitacoras 2009