Mysql
 sql >> Database >  >> RDS >> Mysql

Dichiarazione preparata in conflitto con le variabili utente

Per quanto riguarda abilita SET con variabili definite dall'utente in una stringa di query, devi dichiarare Allow User Variables=True nella stringa di connessione, in web.config o in MySqlConnection definizione:

Web.config

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

Definizione manuale

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

L'impostazione della variabile definita dall'utente disponibile a partire dalla versione 5.2.2 di .NET Connector come fornita in questa spiegazione .

Problema correlato:

Come posso utilizzare una variabile definita dall'utente MySql in un MySqlCommand .NET?