Comment exécuter des requêtes Dapper/MySql en C# à l'aide de variables définies par l'utilisateur
P粉546257913
P粉546257913 2023-08-25 23:41:09
0
2
465
<p>J'ai essayé d'exécuter ce code : </p> <pre class="brush:php;toolbar:false;">en utilisant le système ; en utilisant Dapper ; en utilisant MySql.Data.MySqlClient ; espace de noms DapperTests { Programme de classe { static void Main(string[] arguments) { en utilisant (var db = new MySqlConnection (@"mysql_connstr_here")) { var sql = @" set @foo := (sélectionnez count(*) dans la table1); sélectionnez table2.*, @foo de table2;"; var résultat = db.Query(sql); } Console.ReadLine(); } } }</pré> <p>Mais j'obtiens l'exception suivante :</p> <pre class="brush:php;toolbar:false;">System.NullReferenceException : 'La référence de l'objet n'est pas définie sur une instance de l'objet. ' Cette exception est initialement levée dans cette pile d'appels : MySql.Data.MySqlClient.MySqlConnection.Reader.set(MySql.Data.MySqlClient.MySqlDataReader)</pre> <p>Mon hypothèse initiale était que la variable était traitée comme un SqlParameter, et comme je ne transmettais aucun paramètre, mon code a échoué. Existe-t-il un moyen d'exécuter une requête comme celle-ci en utilisant Dapper ? </p>
P粉546257913
P粉546257913

répondre à tous(2)
P粉099985373

Ou vous pouvez écrire vos instructions SQL en utilisant des déclarations de variables SQL valides :

var sql = @"declare @foo int = 0; select @foo;";

Remarque : ce code a été testé sur Sql Server et ne fonctionne pas sur MySql. Je ne l'utilise pas.

P粉277305212

J'ai trouvé ceci dans la Documentation Dapper :

Il me suffit donc d'ajouter Allow User Variables=True dans la chaîne de connexion. Ça a marché.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal