Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menjalankan pertanyaan Dapper/MySql dalam C# menggunakan pembolehubah yang ditentukan pengguna

<p>Saya telah cuba menjalankan kod ini: </p> <pre class="brush:php;toolbar:false;">menggunakan Sistem; menggunakan Dapper; menggunakan MySql.Data.MySqlClient; ruang nama DapperTests { Program kelas { lompang statik Utama(rentetan[] args) { menggunakan (var db = MySqlConnection baharu(@"mysql_connstr_here")) { var sql = @" set @foo := (pilih kiraan(*) daripada jadual1); pilih jadual2.*, @foo daripada jadual2;"; var result = db.Query(sql); } Console.ReadLine(); } } }</pre> <p>Tetapi saya mendapat pengecualian berikut:</p> <pre class="brush:php;toolbar:false;">System.NullReferenceException: 'Rujukan objek tidak ditetapkan kepada contoh objek. ' Pengecualian ini pada mulanya dilemparkan dalam timbunan panggilan ini: MySql.Data.MySqlClient.MySqlConnection.Reader.set(MySql.Data.MySqlClient.MySqlDataReader)</pre> <p>Tekaan awal saya ialah pembolehubah itu dianggap sebagai SqlParameter dan kerana saya tidak melepasi sebarang parameter, kod saya gagal. Adakah terdapat cara untuk menjalankan pertanyaan seperti ini menggunakan Dapper? </p>
P粉546257913P粉546257913421 hari yang lalu411

membalas semua(2)saya akan balas

  • P粉099985373

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

    Atau anda boleh menulis pernyataan SQL anda menggunakan pengisytiharan pembolehubah SQL yang sah:

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

    Nota: Kod ini telah diuji pada Pelayan Sql dan tidak berfungsi pada MySql. Saya tidak menggunakannya.

    balas
    0
  • P粉277305212

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

    Saya dapati ini dalam dokumentasi Dapper:

    Jadi apa yang perlu saya lakukan ialah menambah Allow User Variables=True dalam rentetan sambungan. Ianya berhasil.

    balas
    0
  • Batalbalas