Cómo pasar variables en la declaración SqlCommand y se insertan en la tabla de base de datos

StackOverflow https://stackoverflow.com/questions/4056872

Pregunta

Estoy escribiendo un pequeño programa en C # que utiliza SQL para almacenar valores en una base de datos en tiempo de ejecución basado en la entrada por parte del usuario.

El único problema es que no puedo averiguar la sintaxis correcta SQL para pasar variables en mi base de datos.

private void button1_Click(object sender, EventArgs e)
    {
        int num = 2;

        using (SqlCeConnection c = new SqlCeConnection(
            Properties.Settings.Default.rentalDataConnectionString))
        {
            c.Open();
            string insertString = @"insert into Buildings(name, street, city, state, zip, numUnits) values('name', 'street', 'city', 'state', @num, 332323)";
            SqlCeCommand cmd = new SqlCeCommand(insertString, c);
            cmd.ExecuteNonQuery();
            c.Close();
        }

        this.DialogResult = DialogResult.OK;
    }

En este fragmento de código que estoy usando todos los valores estáticos a excepción de la variable num la que estoy tratando de pasar a la base de datos.

En tiempo de ejecución consigo este error:

A parameter is missing. [ Parameter ordinal = 1 ]

Gracias

¿Fue útil?

Solución

Añadir un parámetro para el comando antes de ejecutarlo:

cmd.Parameters.Add("@num", SqlDbType.Int).Value = num;

Otros consejos

No se proporcionó un valor para el parámetro @ en la instrucción SQL. El símbolo indica @ una especie de marcador de posición en la que pasará a través de un valor.

Utilice un SqlParameter objeto como es visto en este ejemplo a pasar un valor a que marcador de posición / parámetro.

Hay muchas maneras de construir un objeto de parámetro (diferentes sobrecargas). Una forma, si se sigue el mismo tipo de ejemplo, es pegar el código siguiente después de que se declaró el objeto de comando:

        // Define a parameter object and its attributes.
        var numParam = new SqlParameter();
        numParam.ParameterName = " @num";
        numParam.SqlDbType = SqlDbType.Int;
        numParam.Value = num; //   <<< THIS IS WHERE YOUR NUMERIC VALUE GOES. 

        // Provide the parameter object to your command to use:
        cmd.Parameters.Add( numParam );
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top