ユーザー定義変数を使用して C# で Dapper/MySql クエリを実行する方法
P粉546257913
P粉546257913 2023-08-25 23:41:09
0
2
469
<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粉546257913
P粉546257913

全員に返信(2)
P粉099985373

または、有効な SQL 変数宣言を使用して SQL ステートメントを作成することもできます。

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

注: このコードは SQL Server でテストされており、MySql には適用されません。使いません。

いいねを押す +0
P粉277305212

これは Dapper ドキュメント で見つけました:

したがって、接続文字列に Allow User Variables=True を追加するだけです。出来た。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート