none
Necesito ayuda para no ingresar valores nulos ami base de dato RRS feed

  • Pregunta

  • hola solo quiero hacer una consulta  no quiero que entrren valores nulos a mi base de datos y tampoco que no se caiga como lo puedo hacer este es mi codigo porfavor agradeceria la ayuda

     

     SqlConnection con = new SqlConnection("Data Source=RICARDO-VAIO\\;Initial Catalog=Chidhuapi;Integrated Security=True");
                SqlCommand insertar = new SqlCommand("insert into plato values ('" + txtnombre.Text+ "', '" + txtprecio.Text + "') ", con);
                con.Open();
                insertar.ExecuteNonQuery();
                lblmensaje.Visible = true;
                lblmensaje.Text = "Datos Ingresados Correctamente";
                txtnombre.Text = "";
                txtprecio.Text = "";
                           con.Close();

     

    Gracias de antemano

    jueves, 11 de noviembre de 2010 4:59

Todas las respuestas

  • Con ese código nunca insertarás valores nulos en la base de datos, ya que para ello habría que ejecutar un "Insert into plato values (NULL, ...)" (nótese que la palabra clave NULL va sin comillas), y el código que has escrito nunca puede generar esa sentencia.

    Si a lo que te refieres es a que no quieres grabar cadenas vacías, lo más sencillo sería comprobar desde tu código cliente que los textboxes no estén vacíos antes de llamar a ese código que has escrito para hacer la grabación. Recuerda que en base de datos un valor nulo es distinto de una cadena vacía.

    Dicho lo anterior, ten presente que esa forma de insertar datos es peligrosa desde el punto de vista de la seguridad, ya que permite realizar inyecciones de SQL. Imagínate que el usuario teclea un fragmento de SQL en el textbox. Se concatenaría con tu sentencia y se enviaría al servidor, con lo que el usuario conseguiría lanzar sentencias arbitrarias al servidor. Por ejemplo, suponte que en el txtNombre teclean lo siguiente: "x','y');DROP TABLE plato--", y piensa en lo que ocurriría cuando pulsen el botón Grabar. Incluso aunque el usuario no inyecte maliciosamente código SQL, se pueden producir errores por causa del texto tecleado. Por ejemplo, piensa que pasaría si se introdujera en el txtNombre el nombre O'Donell.

    Todo lo anterior se evita parametrizando la sentencia, en lugar de concatenar en ella los datos tecleados por el usuario. No te pongo el ejemplo porque hay abundantísima literatura al respecto, pero si no encuentras cómo hacerlo, pregunta aquí y seguro que alguien proporciona un enlace.

    jueves, 11 de noviembre de 2010 9:18
  • se duplico la pregunta, tambien se dio otra respuesta en el foro de c#

     

    http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/e7041671-6fc9-4040-ac89-4bcd2f4587fa


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 11 de noviembre de 2010 12:21