suchen

Heim  >  Fragen und Antworten  >  Hauptteil

So führen Sie Dapper/MySql-Abfragen in C# mit benutzerdefinierten Variablen aus

<p>Ich habe versucht, diesen Code auszuführen: </p> <pre class="brush:php;toolbar:false;">using System; mit Dapper; mit MySql.Data.MySqlClient; Namensraum DapperTests { Klassenprogramm { static void Main(string[] args) { using (var db = new MySqlConnection(@"mysql_connstr_here")) { var sql = @" set @foo := (select count(*) from table1); select table2.*, @foo from table2;"; var result = db.Query(sql); } Console.ReadLine(); } } }</pre> <p>Aber ich erhalte die folgende Ausnahme:</p> <pre class="brush:php;toolbar:false;">System.NullReferenceException: 'Die Objektreferenz ist nicht auf eine Instanz des Objekts festgelegt. ' Diese Ausnahme wird zunächst in diesem Aufrufstapel ausgelöst: MySql.Data.MySqlClient.MySqlConnection.Reader.set(MySql.Data.MySqlClient.MySqlDataReader)</pre> <p>Meine anfängliche Vermutung war, dass die Variable als SqlParameter behandelt wurde, und da ich keine Parameter übergeben habe, ist mein Code fehlgeschlagen. Gibt es eine Möglichkeit, eine solche Abfrage mit Dapper auszuführen? </p>
P粉546257913P粉546257913477 Tage vor464

Antworte allen(2)Ich werde antworten

  • P粉099985373

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

    或者你可以使用有效的SQL变量声明来编写你的SQL语句:

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

    注意:此代码已在Sql Server上测试,不适用于MySql。我不使用它。

    Antwort
    0
  • P粉277305212

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

    我在Dapper文档中找到了这个:

    所以我所需要做的就是在连接字符串中添加Allow User Variables=True。它起作用了。

    Antwort
    0
  • StornierenAntwort