Mysql
 sql >> Base de données >  >> RDS >> Mysql

Instruction préparée en conflit avec les variables utilisateur

Comme pour activer SET avec des variables définies par l'utilisateur dans une chaîne de requête, vous devez déclarer Allow User Variables=True dans la chaîne de connexion, soit dans web.config, soit dans MySqlConnection définition :

Web.config

<connectionStrings>
    <add name="DefaultConnection" connectionString="server=ServerName;database=DatabaseName;uid=UserName;pwd=Password;
     Allow User Variables=True" />
</connectionStrings>

Définition manuelle

string connectionString = @"server=ServerName;database=DatabaseName;uid=UserName;pwd=Password;
                           Allow User Variables=True";
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
    string sqlCommand = "SET @userVar1 := 18; select * from db where [email protected] AND age > @userVar1"
    connection.Open();
    using (MySqlCommand command = new MySqlCommand(sqlCommand, connection))
    {
        // add required parameters here
        // and call ExecuteReader() afterwards
    }
}

Le paramètre de variable définie par l'utilisateur disponible à partir de la version 5.2.2 du connecteur .NET, comme indiqué dans cette explication .

Problème connexe :

Comment puis-je utiliser une variable MySql définie par l'utilisateur dans une .NET MySqlCommand ?