Comment passer variable dans la déclaration SqlCommand et insérer dans la table de base de données

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

Question

Je vous écris un petit programme en C # qui utilise SQL pour stocker des valeurs dans une base de données lors de l'exécution en fonction de l'entrée par l'utilisateur.

Le seul problème est que je ne peux pas comprendre la syntaxe correcte Sql pour passer des variables dans ma base de données.

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;
    }

Dans ce code extrait J'utilise toutes les valeurs statiques, sauf pour la variable num que je suis en train de passer à la base de données.

Lors de l'exécution, je reçois cette erreur:

A parameter is missing. [ Parameter ordinal = 1 ]

Merci

Était-ce utile?

La solution

Ajout d'un paramètre à la commande avant de l'exécuter:

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

Autres conseils

Vous n'a pas fourni une valeur pour le paramètre @ dans l'instruction SQL. Le symbole @ indique une sorte d'espace réservé où vous passerez une valeur par.

Utilisation SqlParameter objet analogue est vu cet exemple transmettre une valeur de paramètre fictif que paramètre /.

Il y a plusieurs façons de construire un objet de paramètres (différents Surcharges). Une façon, si vous suivez le même genre d'exemple, est de coller le code suivant après où votre objet de commande est déclarée:

        // 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 );
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top