recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment exécuter des requêtes Dapper/MySql en C# à l'aide de variables définies par l'utilisateur

<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粉546257913P粉546257913476 Il y a quelques jours460

répondre à tous(2)je répondrai

  • P粉099985373

    P粉0999853732023-08-26 19:23:05

    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.

    répondre
    0
  • P粉277305212

    P粉2773052122023-08-26 15:45:16

    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é.

    répondre
    0
  • Annulerrépondre