none
Error en asp.net c# con SQLserver 2012 RRS feed

  • Pregunta

  • 

    E

    alguien me podria ayudar, tengo en mi tabla sql, mi id como primary y not null, hago un store procedure en sql y posterior pongo en  pagina en asp.net el button asi

     SqlConnection con = new SqlConnection("cadena");
            SqlCommand cmd = new SqlCommand();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "Sp_articulos";
            cmd.Parameters.Add("@descripcion", SqlDbType.VarChar).Value = TextBox1.Text.Trim();
            cmd.Parameters.Add("@articulos", SqlDbType.VarChar).Value = TextBox2.Text.Trim();
           
            cmd.Connection = con;
            try
            {
                con.Open();
                cmd.ExecuteNonQuery();
               Response.Write("Record inserted successfully");
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                con.Close();
                con.Dispose();

     y al ejecutarla me sale eso?

    como se solucionaria? gracias

    jueves, 3 de marzo de 2016 23:43

Respuestas

  • Precisamente el mensaje indica que no puedes insertar un valor nulo en el campo ID que se supone es tu llave primaria. 

    En sql server cuando agregas tu campos en la parte de abajo esta la opcion para poner la llave primara como autonumerica por así decirle. Para que así no tengas que estar mandando el ID manualmente. Al parecer a ti se te ha olvidado activar esta opción. Pero si no lo quieres así tiene que mandarle el parametro id cuando hagas tu insert.

    De todos modos aqui te dejo un ejemplo para que te des idea. Solo tienes que seleccionar tu campo con llave primaria y en la parte de abajo activar la opcion de especificacion de identidad como aparece en la imagen:

    viernes, 4 de marzo de 2016 1:18
  • hola

    Sino defienes la columna id como IDENTITY en la tabla este no generara de forma automatica, recuerda que para obtener el id generado usarias el SCOPE_IDENTITY

    aqui

    [ADO.NET] – Campos Auto numéricos

    explico sobre el tema

    en tu caso el procedure deberia devolver el

    SELECT SCOPE_IDENTITY()

    por lo que podrias usar el

    int id = Convert.ToInt32(cmd.ExecuteNonQuery());
    


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 4 de marzo de 2016 10:55

Todas las respuestas

  • Precisamente el mensaje indica que no puedes insertar un valor nulo en el campo ID que se supone es tu llave primaria. 

    En sql server cuando agregas tu campos en la parte de abajo esta la opcion para poner la llave primara como autonumerica por así decirle. Para que así no tengas que estar mandando el ID manualmente. Al parecer a ti se te ha olvidado activar esta opción. Pero si no lo quieres así tiene que mandarle el parametro id cuando hagas tu insert.

    De todos modos aqui te dejo un ejemplo para que te des idea. Solo tienes que seleccionar tu campo con llave primaria y en la parte de abajo activar la opcion de especificacion de identidad como aparece en la imagen:

    viernes, 4 de marzo de 2016 1:18
  • hola

    Sino defienes la columna id como IDENTITY en la tabla este no generara de forma automatica, recuerda que para obtener el id generado usarias el SCOPE_IDENTITY

    aqui

    [ADO.NET] – Campos Auto numéricos

    explico sobre el tema

    en tu caso el procedure deberia devolver el

    SELECT SCOPE_IDENTITY()

    por lo que podrias usar el

    int id = Convert.ToInt32(cmd.ExecuteNonQuery());
    


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 4 de marzo de 2016 10:55
  • gracias
    jueves, 10 de marzo de 2016 23:17
  • gracias
    • Propuesto como respuesta FranNovato viernes, 11 de marzo de 2016 0:21
    • Votado como útil FranNovato viernes, 11 de marzo de 2016 0:21
    jueves, 10 de marzo de 2016 23:17
  • Si se soluciono tu problema no se te olvide marcar las respuestas o votarlas como útiles. Saludos
    viernes, 11 de marzo de 2016 0:22