首頁  >  問答  >  主體

如何使用使用者定義變數在C#中執行Dapper/MySql查詢

<p>我一直在嘗試運行這段程式碼:</p> <pre class="brush:php;toolbar:false;">using System; using Dapper; using MySql.Data.MySqlClient; namespace DapperTests { class Program { 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>但我得到了以下例外:</p> <pre class="brush:php;toolbar:false;">System.NullReferenceException: '物件引用未設定為物件的實例。 ' 此異常最初是在此呼叫堆疊中引發的: MySql.Data.MySqlClient.MySqlConnection.Reader.set(MySql.Data.MySqlClient.MySqlDataReader)</pre> <p>我最初的猜測是該變數被視為SqlParameter,由於我沒有傳遞任何參數,所以我的程式碼失敗了。 有沒有辦法使用Dapper來執行這樣的查詢? </p>
P粉546257913P粉546257913421 天前405

全部回覆(2)我來回復

  • P粉099985373

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

    或是你可以使用有效的SQL變數宣告來寫你的SQL語句:

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

    #注意:此程式碼已在Sql Server上測試,不適用於MySql。我不使用它。

    回覆
    0
  • P粉277305212

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

    我在Dapper文件中找到了這個:

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

    回覆
    0
  • 取消回覆