none
Usando el commandbuilder mysql RRS feed

  • Pregunta

  • Hola, el problemas es el siguiente, tengo un problema q creo es por definir mal las variables.  La idea es leer una base de datos, trabajar con los datos y al hacer click en un boton grabar la informacion a la BBDD. me sale un error "Update requires a valid InsertCommand when passed DataRow collection with new rows"

    Probe leyendo soluciones del foro pero no puedo solucionarlo ni me doy cuenta q estoy haciendo mal.

    Gracias,

        public partial class Empresa : Form
        {
            DataTable dte = new DataTable();

            
            MySqlConnection coz = new MySqlConnection();
            MySqlDataAdapter adte = new MySqlDataAdapter();

            MySqlCommandBuilder cbuilder = new MySqlCommandBuilder();
           

            public Empresa()
            {

                string consulta = "SELECT * from prueba";
                string conecc = "server = localhost; USER = root; PASSWORD = pepito; DATABASE = archivos";

                
                coz.ConnectionString = conecc;

                
                MySqlDataAdapter adte = new MySqlDataAdapter(consulta, coz);
                MySqlCommandBuilder cbuilder = new MySqlCommandBuilder(adte);
              


                coz.Open();

                //*********************************************

                adte.Fill(dte);


                coz.Close();

                //Todo bien hasta aca

        private void button2_Click(object sender, EventArgs e)
            {
               

                DataRow fila = dte.NewRow();



                fila["ide"] = 2;
                fila["prueba1"] = textBox2.Text.Trim();
                fila["prueba2"] = textBox4.Text.Trim();
               
                dte.Rows.Add(fila);





                 adte.Update(dte);


    Phil

    lunes, 16 de abril de 2012 14:17

Respuestas

  • la variable adte dodne la declaras ?

    porque veo que la usas en dos metodos de eventos, pero haces

    MySqlDataAdapter adte = new MySqlDataAdapter(consulta, coz);

    local en el constructor de Empresa, como puede ser que si es local tambien los uses en  button2_Click

    no sera que lo defines global al form y debas usar

    adte = new MySqlDataAdapter(consulta, coz);

    dentro de Empresa() para que asigne a la instancia global

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta philbahia lunes, 16 de abril de 2012 14:41
    lunes, 16 de abril de 2012 14:22
  • Hola,

    La verdad que no se de donde has obtenido el ejemplo, si de un libro o bien de algún sitio de internet. Si es de un Libro te recomiendo que dejes de leerlo y si es de internet pues no visites más el sitio.

    Te recomiendo este vídeo y que pierdas una 1 hora o lo que tarde y después te plantees como acceder a datos desde .Net.

    http://social.msdn.microsoft.com/Forums/es-ES/netfxes/thread/760f9f20-18c4-4abd-94f4-ba72e62bebf3 

    Saludos,


    phurtado
    Mi Blog Blog
    Sigueme en Twitter

    • Marcado como respuesta philbahia lunes, 16 de abril de 2012 14:42
    lunes, 16 de abril de 2012 14:25
    Moderador

Todas las respuestas

  • la variable adte dodne la declaras ?

    porque veo que la usas en dos metodos de eventos, pero haces

    MySqlDataAdapter adte = new MySqlDataAdapter(consulta, coz);

    local en el constructor de Empresa, como puede ser que si es local tambien los uses en  button2_Click

    no sera que lo defines global al form y debas usar

    adte = new MySqlDataAdapter(consulta, coz);

    dentro de Empresa() para que asigne a la instancia global

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta philbahia lunes, 16 de abril de 2012 14:41
    lunes, 16 de abril de 2012 14:22
  • Hola,

    La verdad que no se de donde has obtenido el ejemplo, si de un libro o bien de algún sitio de internet. Si es de un Libro te recomiendo que dejes de leerlo y si es de internet pues no visites más el sitio.

    Te recomiendo este vídeo y que pierdas una 1 hora o lo que tarde y después te plantees como acceder a datos desde .Net.

    http://social.msdn.microsoft.com/Forums/es-ES/netfxes/thread/760f9f20-18c4-4abd-94f4-ba72e62bebf3 

    Saludos,


    phurtado
    Mi Blog Blog
    Sigueme en Twitter

    • Marcado como respuesta philbahia lunes, 16 de abril de 2012 14:42
    lunes, 16 de abril de 2012 14:25
    Moderador
  • Gracias por el link, lo revisare.


    Phil

    lunes, 16 de abril de 2012 14:42
  • probe con esa modificacion y anduvo.

    De todas formas, reviso el link q me pasaron para hacer bien las cosas, veo q tengo un problema de concepto.

    Gracias


    Phil

    lunes, 16 de abril de 2012 14:43
  • Hola,

    No es que tengas un problema de concepto y me explico. Si es una aplicación heredada está claro que hay que hacer por desgracia lo que se hereda, pero si es nueva y me temo que sí, no se pued estar utilizando en 2012 tecnologías de 2005, es por eso la rotundidad de mi respuesta.

    No es cuestión de solucionar un problema sino que a veces cuando uno ve un montón de problemas que van a llegar y tienes cierta experiencia lo mejor es avisar y eso es lo que yo he hecho. Decirte que estas equivocado si estás estudiando eso.

    Saludos,


    phurtado
    Mi Blog Blog
    Sigueme en Twitter

    lunes, 16 de abril de 2012 14:58
    Moderador
  • Segun tu punto de vista Pedro entonces estoy equivocado si utilizo tecnologia antigua para acceder a datos.

    Vi el enlace que me suministraste y estoy tratando de darme cuenta a que te referis cuando se utiliza tecnologiasd de 2005.


    • Editado philbahia martes, 17 de abril de 2012 0:47
    lunes, 16 de abril de 2012 15:43