ホームページ  >  に質問  >  本文

ユーザー定義変数を使用して C# で Dapper/MySql クエリを実行する方法

<p>次のコードを実行しようとしています: </p> <pre class="brush:php;toolbar:false;">システムを使用; Dapperを使用する; MySql.Data.MySqlClient を使用します。 名前空間 DapperTests { クラスプログラム { static void Main(string[] args) { (var db = new MySqlConnection(@"mysql_connstr_here")) を使用します { var SQL = @" set @foo := (table1 から count(*) を選択); 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日前402

全員に返信(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
  • キャンセル返事