none
Error en insercion de registros en tabla de sql RRS feed

  • Pregunta

  • Saludos expertos, he generado un método en un form de C# para insertar registros en una tabla de sql, no me presenta ningún error, pero al presionar el botón que llama el método me dice que hay un error en convertir de nvarchar en int el dato que corresponde al campo nombreEstudiante y no hallo la solución al problema por mas que reiso el codigo. a ver si ustedes pueden identificar el error y me echan una mano. aquí va el código que uso en el insert y la constitución de la tabla en sql server. desde ya agradezco sus siempre beneficiosos comentarios.

     public void insertarEstudiante()
            {
                string cadenaConexion = "Data Source=EGUZMAN;Initial Catalog=COLEGIO;Integrated Security=True";
                SqlConnection conexion = new SqlConnection(cadenaConexion);

                conexion.Close();

                string consulta = "INSERT INTO Estudiantes" +
                                  "(nombreEstudiante,apellidoPaternoEst,apellidoMaterno," +
                                  "fechaNacimientoEst,edadEst,direccionEst,telefonoEst," +
                                  "celularEst,tutorEst,nombreTutor,apellidoPaternoTutor," +
                                  "apellidoMaternoTutor,curso,nombreCurso)" +
                                  "VALUES(@nombreEstudiante,@apellidoPaternoEst," +
                                  "@apellidoMaterno,@fechaNacimientoEst,@edadEst,@direccionEst," +
                                  "@telefonoEst,@celularEst,@tutorEst,@nombreTutor,@apellidoPaternoTutor," +
                                  "@apellidoMaternoTutor,@curso,@nombreCurso)";

                SqlCommand cmd = new SqlCommand(consulta, conexion);

                cmd.Parameters.AddWithValue("@nombreEstudiante", txtNombreEstudiante.Text);
                cmd.Parameters.AddWithValue("@apellidoPaternoEst", txtPaternoEst.Text);
                cmd.Parameters.AddWithValue("@apellidoMaterno", txtMaternoEst.Text);
                cmd.Parameters.AddWithValue("@fechaNacimientoEst", dtpFechaNac.Value);
                cmd.Parameters.AddWithValue("@edadEst", nupEdad.Text);
                cmd.Parameters.AddWithValue("@direccionEst", txtDireccionEst.Text);
                cmd.Parameters.AddWithValue("@telefonoEst", txtTelefonoEst.Text);
                cmd.Parameters.AddWithValue("@celularEst", txtCelularEst.Text);
                cmd.Parameters.AddWithValue("@tutorEst", txtTutor.Text);
                cmd.Parameters.AddWithValue("@nombreTutor", txtNombreTutor.Text);
                cmd.Parameters.AddWithValue("@apellidoPaternoTutor", txtNombreEstudiante.Text);
                cmd.Parameters.AddWithValue("@apellidoMaternoTutor", txtNombreEstudiante.Text);
                cmd.Parameters.AddWithValue("@curso", txtNombreEstudiante.Text);
                cmd.Parameters.AddWithValue("@nombreCurso", txtNombreEstudiante.Text);

                conexion.Open();
                cmd.ExecuteNonQuery();
                conexion.Close();

                MessageBox.Show("ESTUDIANTE REGISTRADO");
            }

    Tabla de sql

    CREATE TABLE [dbo].[Estudiantes](
    [estudiante] [int] IDENTITY(1,1) NOT NULL,
    [nombreEstudiante] [varchar](30) NULL,
    [apellidoPaternoEst] [varchar](50) NULL,
    [apellidoMaterno] [varchar](50) NULL,
    [fechaNacimientoEst] [datetime] NULL,
    [edadEst] [numeric](18, 0) NULL,
    [direccionEst] [varchar](100) NULL,
    [telefonoEst] [varchar](12) NULL,
    [celularEst] [varchar](12) NULL,
    [tutorEst] [int] NULL,
    [nombreTutor] [varchar](50) NULL,
    [apellidoPaternoTutor] [varchar](50) NULL,
    [apellidoMaternoTutor] [varchar](50) NULL,
    [curso] [int] NULL,
    [nombreCurso] [varchar](20) NULL,
     CONSTRAINT [PK_Estudiantes] PRIMARY KEY CLUSTERED 
    (
    [estudiante] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]

    viernes, 11 de octubre de 2013 17:33

Respuestas

  • Tienes razon... sin embargo mi problema con el primer campo de la lista, nombreEstudiante, y considerando que es de tipo varchar me crea la duda de porque me dice que debe convertir un varchar a int si lo estoy enviando a un campo varchar.
    • Marcado como respuesta soyeddygh viernes, 11 de octubre de 2013 18:36
    viernes, 11 de octubre de 2013 17:56
  • como puedes asegurar que es ese el campo que causa el error ?

    lo dice el mensaje del exception que ese campo es quien lo genera

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta soyeddygh viernes, 11 de octubre de 2013 18:36
    viernes, 11 de octubre de 2013 18:08

Todas las respuestas

  • hola

    recuerda que convertir al tipo adecuado es importante, por ejemplo aqui

    cmd.Parameters.AddWithValue("@edadEst", Convert.ToInt32(nupEdad.Text));

    y asi el resto de los parametros que sean numericos

    debes asegurar que sea un numero que asignes al parametro que sea de ese tipo

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 11 de octubre de 2013 17:52
  • Tienes razon... sin embargo mi problema con el primer campo de la lista, nombreEstudiante, y considerando que es de tipo varchar me crea la duda de porque me dice que debe convertir un varchar a int si lo estoy enviando a un campo varchar.
    • Marcado como respuesta soyeddygh viernes, 11 de octubre de 2013 18:36
    viernes, 11 de octubre de 2013 17:56
  • como puedes asegurar que es ese el campo que causa el error ?

    lo dice el mensaje del exception que ese campo es quien lo genera

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta soyeddygh viernes, 11 de octubre de 2013 18:36
    viernes, 11 de octubre de 2013 18:08
  • otra vez tienes razon, ahora me doy cuenta de que fui una victima de copiar y pegar. el error estaba en que puse el textbox del nombre del alumno en varios campos mas y por ende presentaba el error en convercion.

    Muchas Gracias Leandro.

     
    viernes, 11 de octubre de 2013 18:36