none
Problema con comandos SQL en mi codigo RRS feed

  • Pregunta

  • Buenas noches desarrolladores.

    Me encuentro desarrollando una aplicacion muy sencilla de Visual c# en la que, mediante 3 botones y 5 textBox, hago las acciones de insertar, eliminar y actualizar los datos de una base de datos en Access 2010. El problema es que al momento de hacer click en el boton, me manda un mensaje de error:

    " Falta punto y coma (;) al final de la instrucción SQL."

    Cosa que encuentro bastante rara.

    Les dejo mi codigo del boton de "Insertar" aunque en el caso de los otros botones el caso es casi el mismo

    private void Insertar_Click(object sender, EventArgs e)
            {
                string g = @"INSERT INTO Alumnos VALUES('"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"','"+textBox4.Text+"','"+textBox5.Text+"','"+textBox6.Text+"') SELECT SCOPE_IDENTITY()";
                cm = new OleDbCommand(g,c); // c es mi coneccion OLEdb
                cm.ExecuteNonQuery();
    
                listView1.Invalidate();
            }

    Agradezco mucho sus respuestas.

    domingo, 24 de mayo de 2015 6:06

Respuestas

  • Por un lado estás incluyendo en el oledbcommand dos sentencias: una insert y una select (que devuelve un valor que no recuperas), por otro (aunque no tenga que ver con el error) te recomendaría utilizar parámetros y especificar los campos a los que asignas valores en la insert.

    Sí quieres insertar los datos de un nuevo alumno y recuperar su ID:

                string insertQuery = @"INSERT INTO ALUMNOS (Nombre, Apellido1, Apellido2, Direcccion, Localidad)
                    VALUES (?,?,?,?,?)";
                string selectIdentity = "SELECT SCOPE_IDENTITY()";
                cm = new OleDbCommand(insertQuery, c);
                cm.Parameters.AddWithValue("nombre", textBox1.Text);
                cm.Parameters.AddWithValue("apellido1", textBox2.Text);
                cm.Parameters.AddWithValue("apellido2", textBox3.Text);
                cm.Parameters.AddWithValue("direccion", textBox4.Text);
                cm.Parameters.AddWithValue("localidad", textBox5.Text);
                // Insertar nuevo alumno
                cm.ExecuteNonQuery();
                cm.Parameters.Clear();
                cm.CommandText = selectIdentity;
                // Recuperar ID de nuevo alumno
                int ID = (int)cm.ExecuteScalar();
    
    Evidentemente me he inventado los campos de la tabla Alumnos, deberías reemplazarlos por los reales.
    domingo, 24 de mayo de 2015 6:47