찾다

 >  Q&A  >  본문

사용자 정의 변수를 사용하여 C#에서 Dapper/MySql 쿼리를 실행하는 방법

<p>저는 다음 코드를 실행하려고 했습니다: </p> <pre class="brush:php;toolbar:false;">using System; Dapper 사용; MySql.Data.MySqlClient 사용; 네임스페이스 DapperTest { 수업 프로그램 { 정적 무효 Main(string[] args) { (var db = new MySqlConnection(@"mysql_connstr_here")) 사용 { var sql = @" set @foo := (table1에서 count(*) 선택); table2.*, table2에서 @foo를 선택하세요;" var 결과 = 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粉546257913477일 전467

모든 응답(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
  • 취소회신하다