ユーザー定義変数を使用して C# で Dapper/MySql クエリを実行する方法
P粉546257913
2023-08-25 23:41:09
<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>
または、有効な SQL 変数宣言を使用して SQL ステートメントを作成することもできます。
var sql = @"declare @foo int = 0; select @foo;";
注: このコードは SQL Server でテストされており、MySql には適用されません。使いません。
これは Dapper ドキュメント で見つけました:
したがって、接続文字列に
Allow User Variables=True
を追加するだけです。出来た。