none
MI ID IDENTITY INSERTA REGISTRO DE DOS EN DOS EN APP C# RRS feed

  • Pregunta

  • Buenas tardes a todos!!

    Tengo un pequeño detalle al momento de insertar datos desde un formulario en C# a mi base de datos SQL server. Resulta que al presionar el boton que hara la funcion de insertar la informacion en la base de datos me va a mostrar el ultimo ID que se acaba de asignar, lo cual hace sin ningun problema, el problema es que esta registrando los valores de dos en dos,por ejemplo : Id de su prestamo es el numero 18, pero cuando vuelvo a insertar otro, se brinca del 18 al 20, del 20 al 22, del 22 al 24...asi sucesivamente. Ahora por otro lado, al realizar un select a mi tabla directamente en mi SQL Server Management Studio, veo que aqui si esta respentando el identity para que la secuencia  al momento que se inserten mis registros sea de 1,1.

    Alguna sugerencia?

    Este es el codigo completo de mi boton.

    Gracias.

    private void Btn1_Click_1(object sender, EventArgs e)
            {
                SqlConnection conexion = new SqlConnection("Mi cadena de conexion");
                conexion.Open();

                int idPrestamo = 0;

                string query = "INSERT INTO dbo.Tb1 ( Nombre,Direccion,Telefono,Correo,Interes,Monto,Vence) VALUES (@Nombre,@Direccion,@Telefono,@Correo,@Interes,@Monto,@vence) SELECT SCOPE_IDENTITY()";
                SqlCommand comando = new SqlCommand(query, conexion);
                
                comando.Parameters.AddWithValue("@Nombre", Txtbox2.Text);
                comando.Parameters.AddWithValue("@Direccion", Txtbox3.Text);
                comando.Parameters.AddWithValue("@Telefono", Txtbox4.Text);
                comando.Parameters.AddWithValue("@Correo", Txtbox5.Text);
                comando.Parameters.AddWithValue("@Interes", Txtbox6.Text);
                comando.Parameters.AddWithValue("@Monto", Txtbox7.Text);
                comando.Parameters.AddWithValue("@Vence", DateTimePicker1.Value);

                comando.ExecuteNonQuery();

             
                
                idPrestamo = Convert.ToInt32(comando.ExecuteScalar());
                conexion.Close();
                                            
              
                
                MessageBox.Show($"ID de su prestamo es el numero " + Convert.ToString(idPrestamo));
            }
        }
    }


    • Editado M Zav viernes, 15 de marzo de 2019 18:08
    viernes, 15 de marzo de 2019 18:07

Respuestas

  • Hola, es porque lo estás ejecutando dos veces,

    retira esta línea 

    comando.ExecuteNonQuery();

    lo estás ejecutando con esa y luego lo vuelves a ejecutar con el ExecuteScalar


    Votar y marcar respuestas es agradecer.
    Saludos.
    Lima-Perú

    • Propuesto como respuesta Javi Fernández F viernes, 15 de marzo de 2019 20:04
    • Marcado como respuesta M Zav domingo, 28 de julio de 2019 17:36
    viernes, 15 de marzo de 2019 19:44
  • Muchas gracias de nuevo, creo que eres el mismo que respondio a mi pregunta anterior, mil gracias, hice lo que mencionas y funciono.

    • Marcado como respuesta M Zav domingo, 28 de julio de 2019 17:36
    viernes, 15 de marzo de 2019 20:09

Todas las respuestas

  • Hola, es porque lo estás ejecutando dos veces,

    retira esta línea 

    comando.ExecuteNonQuery();

    lo estás ejecutando con esa y luego lo vuelves a ejecutar con el ExecuteScalar


    Votar y marcar respuestas es agradecer.
    Saludos.
    Lima-Perú

    • Propuesto como respuesta Javi Fernández F viernes, 15 de marzo de 2019 20:04
    • Marcado como respuesta M Zav domingo, 28 de julio de 2019 17:36
    viernes, 15 de marzo de 2019 19:44
  • Muchas gracias de nuevo, creo que eres el mismo que respondio a mi pregunta anterior, mil gracias, hice lo que mencionas y funciono.

    • Marcado como respuesta M Zav domingo, 28 de julio de 2019 17:36
    viernes, 15 de marzo de 2019 20:09