web-dev-qa-db-fra.com

Erreur SQL: syntaxe incorrecte près du mot clé "Utilisateur"

J'utilise SQL pour insérer des données dans un fichier de base de données SQL en utilisant C # comme suit.

    String cs = System.Configuration.ConfigurationManager.ConnectionStrings["connection1"].ConnectionString;
    SqlConnection conn = new SqlConnection(cs);
    String sql = "INSERT INTO User (login, password, status) " + 
            "VALUES (@login, @password, @status)";
    SqlCommand comm = new SqlCommand(sql, conn);

    comm.Parameters.Add("@login", System.Data.SqlDbType.VarChar);
    comm.Parameters.Add("@password", System.Data.SqlDbType.VarChar);
    comm.Parameters.Add("@status", System.Data.SqlDbType.Bit);

    try
    {
        conn.Open();
        Console.WriteLine(conn.ToString());
        comm.ExecuteNonQuery();
        conn.Close();
        return true;
    }
    catch (Exception ex)
    {
        throw (ex);
    }
    finally
    {
        conn.Close();
    }

J'obtiens l'erreur suivante lorsque la commande est en cours d'exécution.

Syntaxe incorrecte près du mot-clé 'Utilisateur': INSÉRER DANS LES VALEURS de l'utilisateur (identifiant, mot de passe, statut) (@login, @password, @status)

Comment puis-je résoudre ce problème s'il vous plaît?

edit: valeurs de paramètres manquées ajoutées ..

    comm.Parameters["@login"].Value = this.Username;
    comm.Parameters["@password"].Value = this._password;
    comm.Parameters["@status"].Value = this.Status;
31
BlueBird

User est un mot-clé réservé , vous devez donc utiliser des crochets pour indiquer explicitement que vous voulez dire l'objet nommé "Utilisateur", c'est-à-dire utiliser [User] au lieu de User.

74
Marc Gravell

L'utilisateur est un t-sql mot-clé réservé . Le mettre entre crochets devrait résoudre ce problème. Par exemple, INSÉRER DANS [Utilisateur]

5
Andy Johnson

exécutez votre requête sur la base de données. Vous pouvez utiliser le mot clé declare sql pour définir vos variables et leur donner des valeurs. Si vous avez besoin de comprendre les valeurs des variables, définissez un point d'arrêt sur conn.Open, puis utilisez la fenêtre locale pour voir les valeurs que vous transmettez. Un autre outil à votre disposition est le Sql Profiler. Vous pouvez démarrer une trace puis exécuter votre programme. Vous devriez pouvoir voir la requête comme exécutée dans le profil après l'exécution du code que vous avez publié.

Tout cela devrait vous aider à comprendre ce qui ne va pas avec votre SQL lorsque l'exception ne fournit pas suffisamment d'informations.

Le Sql Server Management Studio aurait dû mettre en surbrillance le mot-clé User dans votre instruction sql, montrant facilement que vous avez besoin de crochets comme ceci: [User]

3
Charles Lambert