none
UPDATE . Problema:string mal ejecutado RRS feed

  • Pregunta

  • Hola, tengo una base de datos realizada en Acces. En ella puedo cargar datos en el datagrew, insertar datos... pero modificarlos no puedo, me da problema de conexión, mas bien que la linea de UPDATE que realizo está mal...

    He visto bastantes ejemplos de como se hace, no parece una cosa complicada, pero no me actualiza, es decir, no me deja modificar un dato.

    private void btnModificarDatos_Click(object sender, EventArgs e)
            {
                int Id = int.Parse(txtNuevaEntradaId.Text);
                string castellano = txtNuevaEntradaCastellano.Text;
                string ruso = txtNuevaEntradaRuso.Text;
    
                try
                {
    
                    AbrirConexion();
                   
                    DataTable dt = new DataTable();
                    OleDbDataAdapter da = new OleDbDataAdapter(command);
    
                    string updateString = "UPDATE  saludos SET [castellano=@castellano,ruso=@ruso] WHERE [Id]=@Id";
                    
                    
                    OleDbCommand commandUpdate = new OleDbCommand(updateString, conection);
    
                    commandUpdate.Parameters.Add(new OleDbParameter("@Id", OleDbType.Integer,2));
                    commandUpdate.Parameters.Add(new OleDbParameter("@castellano", OleDbType.VarChar,20));
                    commandUpdate.Parameters.Add(new OleDbParameter("@ruso", OleDbType.VarChar,20));
    
                    commandUpdate.Parameters["@Id"].Value = Id;
                    commandUpdate.Parameters["@castellano"].Value =castellano;
                    commandUpdate.Parameters["@ruso"].Value = ruso;
                    commandUpdate.ExecuteNonQuery();
                    MessageBox.Show("Datos modificados en la tabla");
                    limpiarCajas();
                    btnMostrarDatos_Click(sender, e);
                    CerrarConexion();
                }
                catch (Exception ex)
                {
                    lblConexion.Text = "Error conexión al modificar datos";
                    MessageBox.Show("Error"+ ex);
                    CerrarConexion();
                }
    
            }

    el metodo abrirconexion y cerrarconexion funcionan OK asi que dudo q seaese el problema.

    ¿Por que me da problemas solo al modificar?

    sábado, 6 de diciembre de 2014 15:04

Respuestas

  • Hola, No estoy seguro de la sintaxis sql en access pero me parece que la línea en que tienes problemas es la siguiente:

    string updateString = "UPDATE  saludos SET [castellano]=@castellano,[ruso]=@ruso WHERE [Id]=@Id";

    Si te das cuenta el corchete abres y cierras para los campos, no incluye todas las columnas y sus parámetros. En realidad el uso del corchete es cuando tienes nombres de columnas con espacios en blanco, en tu caso no tienes eso y no es una buena practica así que podrías no usar los corchetes si  quisieras. 

    Marca como válida si la respuesta te ha sido útil.

    • Marcado como respuesta CsharpPicYo sábado, 6 de diciembre de 2014 23:28
    sábado, 6 de diciembre de 2014 16:37

Todas las respuestas

  • Hola, No estoy seguro de la sintaxis sql en access pero me parece que la línea en que tienes problemas es la siguiente:

    string updateString = "UPDATE  saludos SET [castellano]=@castellano,[ruso]=@ruso WHERE [Id]=@Id";

    Si te das cuenta el corchete abres y cierras para los campos, no incluye todas las columnas y sus parámetros. En realidad el uso del corchete es cuando tienes nombres de columnas con espacios en blanco, en tu caso no tienes eso y no es una buena practica así que podrías no usar los corchetes si  quisieras. 

    Marca como válida si la respuesta te ha sido útil.

    • Marcado como respuesta CsharpPicYo sábado, 6 de diciembre de 2014 23:28
    sábado, 6 de diciembre de 2014 16:37
  • en efecto. ha funcionado Grácias!!
    sábado, 6 de diciembre de 2014 23:29