Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Declaração preparada em conflito com as variáveis ​​do usuário


Quanto a habilitar SET com variáveis ​​definidas pelo usuário em uma string de consulta, você precisa declarar Allow User Variables=True na string de conexão, seja em web.config ou em MySqlConnection definição:

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

Definição manual
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
    }
}

A configuração de variável definida pelo usuário disponível a partir da versão 5.2.2 do .NET Connector, conforme fornecido em esta explicação .

Problema relacionado:

Como posso usar uma variável definida pelo usuário do MySql em um .NET MySqlCommand?