none
Problemas al insertar (datos duplicados) RRS feed

  • Pregunta

  • Hola buenas tardes, me encuentro desarrollando una aplicación en Razor MVC 4, al insertar un registro de usuarios tengo problemas con datos duplicados.

    En la bb de SQL utilice una llave primaria compuesta para el Id,NombreUsuario y Correo.

    Deberia saltar un error al tratar de insertar duplicados meramente por ser estas llaves primarias o debo de agregar una especie de validación para datos repetidos.

    Adjunto mi codigo para insertar.

      [HttpPost]
            public ActionResult Registro(Registro DatosUsuario)
            {
                string Nombre = DatosUsuario.valorNombre;
                string Apellido = DatosUsuario.valorApellido;
                string Correo = DatosUsuario.valorCorreo;
                string NombreUsuario = DatosUsuario.valorUsuario;
                string Contrasena = DatosUsuario.valorPassword;
    
                string SqlInsertar = "INSERT INTO Tbl_Usuarios(Nombres,Apellidos,Correo,Nombre_Usuario,Contrasena) VALUES (@RegNombre,@RegApellido,@RegCorreo,@RegUsuario, @RegPassword)";
    
                    using (SqlConnection conexion = new SqlConnection(connstring))
                    {
                        using (SqlCommand cmd = new SqlCommand(SqlInsertar, conexion))
                        {
                            try
                            {
                                
                                cmd.CommandType = CommandType.Text;
                                cmd.Parameters.AddWithValue("@RegNombre", Nombre);
                                cmd.Parameters.AddWithValue("@RegApellido", Apellido);
                                cmd.Parameters.AddWithValue("@RegCorreo", Correo);
                                cmd.Parameters.AddWithValue("@RegUsuario", NombreUsuario);
                                cmd.Parameters.AddWithValue("@RegPassword", Contrasena);
                                conexion.Open();
                                cmd.ExecuteNonQuery();
                                return View("../Home/Inicio");
                            }
                            catch (Exception e)
                            {
                                return View("../Home/Index");
                            }
                            finally
                            {
                                conexion.Close();
                            }
                          
                        }
                    }
            }


    Luis

    jueves, 25 de abril de 2019 22:25

Respuestas

  • hola

    >>En la bb de SQL utilice una llave primaria compuesta para el Id,NombreUsuario y Correo.

    porque una key compuesta? eso esta mal

    la key de la tabla es solo la columna Id

    Si quieres puedes poner un constraint en el campo nombre que sea UNIQUE, pero eso es aparte

    >>debo de agregar una especie de validación para datos repetidos.

    siempre es bueno validar y no programar ante el error

    si sabes que el nombre no se puede repetir validalo contra la db en lugar de esperar un exception

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta LuisFSantiago viernes, 26 de abril de 2019 4:09
    viernes, 26 de abril de 2019 3:48

Todas las respuestas

  • hola

    >>En la bb de SQL utilice una llave primaria compuesta para el Id,NombreUsuario y Correo.

    porque una key compuesta? eso esta mal

    la key de la tabla es solo la columna Id

    Si quieres puedes poner un constraint en el campo nombre que sea UNIQUE, pero eso es aparte

    >>debo de agregar una especie de validación para datos repetidos.

    siempre es bueno validar y no programar ante el error

    si sabes que el nombre no se puede repetir validalo contra la db en lugar de esperar un exception

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta LuisFSantiago viernes, 26 de abril de 2019 4:09
    viernes, 26 de abril de 2019 3:48
  • Saludos, ya he puesto la validacion y funciona sin tener que esperar una excepcion.

    Gracias.


    Luis

    • Marcado como respuesta LuisFSantiago viernes, 26 de abril de 2019 18:01
    • Desmarcado como respuesta LuisFSantiago viernes, 26 de abril de 2019 18:01
    viernes, 26 de abril de 2019 17:18