error No se han especificado valores para algunos de los parámet ro

09/01/2009 - 17:59 por julian david | Informe spam
me sale este error "No se han especificado valores para algunos de los
parametros requeridos" ejecuto el comando por una clase .
el comando es el siguiente

fs.actualizar("select * from ficha_tecnica where codigo_eq=" +
txtcodigo.Text + "","update ficha_tecnica set fecha='" + txtfecha.Text +
"',nombre='" + txtnombre.Text + "',carnet='" + txtcarnet.Text + "',usuario='"
+ txtusuario.Text + "',cargo='" + txtcargo.Text + "',nombre_del_equipo='" +
txtnombredelequipo.Text + "',serie_cpu='" + txtseriecpu.Text +
"',marca_cpu='" + txtmarcacpu.Text + "',serie_monitor='" +
txtseriemonitor.Text + "',marca_monitor='" + txtmarcamonitor.Text +
"',tipo_monitor='" + txttipomonitor.Text + "',direccion_ip='" +
txtdireccionip.Text + "',provedor='" + txtprovedor.Text + "',fecha_compra='"
+ txtfechacompra.Text + "',fecha_garantia='" + txtfechagarantia.Text +
"',fecha_actualizacion='" + Convert.ToString(DateTime.Now.ToLongDateString())
+ "' where codigo_eq=" + txtcodigo.Text + "");

estan identicos a la base de datos nose por q me sale este error.

y tambien me gustaria saber si es posiblre guardar datos con un solo comando
en una BD en dos tablas a la vez yo se hacer esto para una consulta en un
datadrid pues mostrar las dos en la misma consulta pero me gusta hacerlo
igual para guardar logicamente estando las tablas relacionadas en este caso
por codigo de equipo
 

Leer las respuestas

#1 Alberto Poblacion
09/01/2009 - 20:07 | Informe spam
"julian david" wrote in message
news:
me sale este error "No se han especificado valores para algunos de los
parametros requeridos" ejecuto el comando por una clase .
el comando es el siguiente

fs.actualizar("select * from ficha_tecnica where codigo_eq=" +
txtcodigo.Text + "","update ficha_tecnica set fecha='" + txtfecha.Text +
"',nombre='" + txtnombre.Text + "',carnet='" + txtcarnet.Text +
"',usuario='"
+ txtusuario.Text + "',cargo='" + txtcargo.Text + "',nombre_del_equipo='"
+
txtnombredelequipo.Text + "',serie_cpu='" + txtseriecpu.Text +
"',marca_cpu='" + txtmarcacpu.Text + "',serie_monitor='" +
txtseriemonitor.Text + "',marca_monitor='" + txtmarcamonitor.Text +
"',tipo_monitor='" + txttipomonitor.Text + "',direccion_ip='" +
txtdireccionip.Text + "',provedor='" + txtprovedor.Text +
"',fecha_compra='"
+ txtfechacompra.Text + "',fecha_garantia='" + txtfechagarantia.Text +
"',fecha_actualizacion='" +
Convert.ToString(DateTime.Now.ToLongDateString())
+ "' where codigo_eq=" + txtcodigo.Text + "");



Bueno, la sentencia es bastente "guarrilla". Para empezar, tiene dos
claúsulas Where, y además creo que hay unas comillas que están mal detrás
del primer txtCodigo.Text. Y en cualquier caso, es una sentencia
peligrosísima porque es susceptible de ataques de inyección de SQL, además
de que dará errores si en alguno de los textboxes se introduce un carácter
reservado (por ejemplo, un texto que contenga una comilla).

Para evitarlo, es preferible parametrizar la sentencia y luego asignar
los valores de los textboxes a los parámetros. De esa forma, además de
evitar los problemas mencionados, la sentencia quedará mucho más "limpia" en
el fuente, porque no hay que concatenarle nada ni introducir ninguna
comilla, con lo que será más fácil detectar de un vistazo los errores que
pueda contener.

y tambien me gustaria saber si es posiblre guardar datos con un solo
comando
en una BD en dos tablas a la vez



Podrías meter en el comando las dos sentencias de modificación separadas
por un punto y coma, o bién llamar desde el comando a un procedimiento
almacenado que internamente realice las modificaciones sobre las dos tablas.

Preguntas similares