Dans cet article, nous explorerons un problème courant rencontré lors de l'exécution de requêtes MySQL impliquant des variables définies par l'utilisateur dans l'environnement .NET à l'aide de MySqlCommand object.
Contexte
Les variables définies par l'utilisateur jouent un rôle crucial dans MySQL pour effectuer des opérations SQL dynamiques. Cependant, lorsque vous tentez d'utiliser de telles variables dans une commande .NET MySqlCommand, elles ne sont pas directement prises en charge dès le départ.
Exécution de requêtes avec une variable définie par l'utilisateur
Considérez les Instruction SQL suivante qui utilise la variable définie par l'utilisateur @rownum pour numéroter les lignes distinctes extraites d'un requête :
SELECT @rownum := @rownum +1 rownum, t.* FROM ( SELECT @rownum :=0 ) r, ( SELECT DISTINCT TYPE FROM `node` WHERE TYPE NOT IN ('ad', 'chatroom') )t
Exception rencontrée dans .NET
Lors de l'exécution de cette requête à l'aide de MySqlCommand, une exception est susceptible d'être levée en raison de la variable @rownum non reconnue. En effet, .NET suppose qu'il s'agit d'un paramètre qui nécessite une définition explicite.
Solution
Pour contourner ce problème, vous pouvez modifier votre chaîne de connexion en ajoutant ; Autoriser les variables utilisateur = True :
using (var sqlConnection = new MySqlConnection(SOURCE_CONNECTION + ";Allow User Variables=True"))
En activant l'indicateur Autoriser les variables utilisateur, le pilote MySQL peut reconnaître la variable @rownum et exécuter la requête correctement.
Solutions alternatives
Si vous ne parvenez pas à utiliser des variables définies par l'utilisateur, envisagez d'explorer des solutions alternatives pour obtenir des numéros de ligne :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!