none
como insertar datos de una datagridview a un tabla de mysql RRS feed

  • Pregunta

  • he visto en turoriales que utilizan este código pero me marca un error en la linea 1

                                                                                                    

     try
                {
                    conexion = new MySqlConnection();
                    conexion.ConnectionString = mysql;
                    conexion.Open();


                    MySqlCommand cmd = new MySqlCommand("insert into reporte values(@nomina,@nombre,@departamento,@fecha,@hora",conexion);

                   foreach(DataGridViewRow row in  dataGridView1.Rows)
                   {

                           cmd.Parameters.Clear();
                           cmd.Parameters.AddWithValue("@nomina", Convert.ToString(row.Cells["nomina"]));
                           cmd.Parameters.AddWithValue("@nombre", Convert.ToString(row.Cells["nombre"]));
                           cmd.Parameters.AddWithValue("@departamento", Convert.ToString(row.Cells["departamento"]));
                           cmd.Parameters.AddWithValue("@fecha", Convert.ToString(row.Cells["fecha"]));
                           cmd.Parameters.AddWithValue("@hora", Convert.ToString(row.Cells["hora"]));

                           cmd.ExecuteNonQuery();




                   }

    conexion.Close(),

    jueves, 5 de febrero de 2015 18:44

Respuestas

  • hola

    pero no has puesto el parentesis al final

    MySqlCommand cmd = new MySqlCommand("insert into reporte(nomina,nombre,departamento,fecha,hora) values(?nomina,?nombre,?departamento,?fecha,?hora)",conexion);

    lo marco en negrita

    eso lo comente en la respuesta anterior pero veo que no la has leido

    digo leiste todo menos ese punto

    ---

    ademas recomiendo definir la query en eun string separado asi no se hace tan lago el codigo

    string query = @"insert into reporte(nomina,nombre,departamento,fecha,hora)
                       values(?nomina,?nombre,?departamento,?fecha,?hora)";
     
    MySqlCommand cmd = new MySqlCommand(query,conexion);



    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 6 de febrero de 2015 3:30

Todas las respuestas

  • Para que te puedan ayudar mejor, sería bueno dos cosas:

    1. Enviar la información del error
    2. Subir el código completo (incluyendo las líneas using en el encabezado de la clase)

    Saludos


    http://www.amsoft.cl

    jueves, 5 de febrero de 2015 18:50
  • ¿Y qué error te da?
    jueves, 5 de febrero de 2015 18:50
  • Hola Gonzalo,

    Por favor, más información. ¿Qué error es el que produce?

    jueves, 5 de febrero de 2015 18:51
  • >>he visto en turoriales que utilizan este código pero me marca un error en la linea 1

    cual es la linea 1 ?  y cual es le mensaje del error

    ---

    alli veo que esta incorrecta esta linea

    MySqlCommand cmd = new MySqlCommand("insert into reporte values(@nomina,@nombre,@departamento,@fecha,@hora",conexion);

    -falta un parentesis al final

    - deberias definir los campos o sea

    "insert into reporte (campo1, campo2, ....) values(@nomina,@nombre,@departamento,@fecha,@hora)"

    - en mysql los parametro se definen con ?, no con @, seria ?nomina

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 5 de febrero de 2015 18:54
  • 

    YOU HAVE AN ERROR YOUR SQL SYNTAX; CHECK MANUAL THAT CORRESPONDS TO YOUR

    MYSQL SERVER VERSION FOR THE RIGHT SYNTAXIS TO USER ATLINE 1

    la linea uno es la consulta 
    • Editado Gonzaload jueves, 5 de febrero de 2015 19:27
    jueves, 5 de febrero de 2015 19:19
  • ahh bien es un error en el INSERT

    como comente valida el parentesis al final que te esta faltando

    define los campos del value no solo los parametros

    reemplaza el @ por ?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 5 de febrero de 2015 19:26
  • ademas otro punto te falta el Value en las lineas

    cmd.Parameters.AddWithValue("@nomina", Convert.ToString(row.Cells["nomina"].Value));

    las celdas del grid se recuperan con el Value aplica esto mismo al resto


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 5 de febrero de 2015 19:27
  • ya cambie lo que me dices pero me sigue marcando el mismo error 

    conexion = new MySqlConnection();
                    conexion.ConnectionString = mysql;
                    conexion.Open();


                    MySqlCommand cmd = new MySqlCommand("insert into reporte(nomina,nombre,departamento,fecha,hora) values(?nomina,?nombre,?departamento,?fecha,?hora",conexion);

                   foreach(DataGridViewRow row in  dataGridView1.Rows)
                   {
                       if (row.Cells["nomina"] != null)
                       {
                           cmd.Parameters.Clear();
                           cmd.Parameters.AddWithValue("?nomina", Convert.ToString(row.Cells["nomina"].Value));
                           cmd.Parameters.AddWithValue("?nombre", Convert.ToString(row.Cells["nombre"].Value));
                           cmd.Parameters.AddWithValue("?departamento", Convert.ToString(row.Cells["departamento"].Value));
                           cmd.Parameters.AddWithValue("?fecha", Convert.ToString(row.Cells["fecha"].Value));
                           cmd.Parameters.AddWithValue("?hora", Convert.ToString(row.Cells["hora"].Value));

                           cmd.ExecuteNonQuery();

                       }              


                   }
                   MessageBox.Show("Datos guardados");
                }
                catch (MySqlException fr)
                {
                    MessageBox.Show(fr.Message);

                }

                                                  
    jueves, 5 de febrero de 2015 21:19
  • Hola,

    Ya te comentaron que falta cerrar el paréntesis.

    MySqlCommand cmd = new MySqlCommand("insert into reporte(nomina,nombre,departamento,fecha,hora) values(?nomina,?nombre,?departamento,?fecha,?hora)",conexion);

    jueves, 5 de febrero de 2015 21:26
  • hola

    pero no has puesto el parentesis al final

    MySqlCommand cmd = new MySqlCommand("insert into reporte(nomina,nombre,departamento,fecha,hora) values(?nomina,?nombre,?departamento,?fecha,?hora)",conexion);

    lo marco en negrita

    eso lo comente en la respuesta anterior pero veo que no la has leido

    digo leiste todo menos ese punto

    ---

    ademas recomiendo definir la query en eun string separado asi no se hace tan lago el codigo

    string query = @"insert into reporte(nomina,nombre,departamento,fecha,hora)
                       values(?nomina,?nombre,?departamento,?fecha,?hora)";
     
    MySqlCommand cmd = new MySqlCommand(query,conexion);



    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 6 de febrero de 2015 3:30