2016-10-04 2 views
1

다음 작업 코드가 있습니다. 여기에는 1 개의 입력 매개 변수와 2 개의 출력 매개 변수가 있습니다. 어떤 ado.net 메소드를 사용해야합니까? 이 cmd.ExecuteNonQuery()를 사용하여 제안 Get output parameter value in ADO.NETADO.NET 여러 출력 매개 변수를 설정하는 데 사용할 대상 - ExecuteScalar, ExecuteReader 또는 ExecuteNonQuery 또는 아무것도 아니요?

:

OneInputTwoOutput oneInputTwoOutput = new OneInputTwoOutput(); 

var Param = new DynamicParameters(); 
Param.Add("@Input1", Input1); 
Param.Add("@Output1", dbType: DbType.Boolean, direction: ParameterDirection.Output); 
Param.Add("@Output2", dbType: DbType.Boolean, direction: ParameterDirection.Output); 

try 
{ 
    using (SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["connectionString"])) 
    { 
     using (SqlCommand cmd = new SqlCommand("GetOneInputTwoOutput", con)) 
     { 
      cmd.CommandType = CommandType.StoredProcedure; 

      cmd.Parameters.Add("@Input1", SqlDbType.Int).Value = Input1; 
      cmd.Parameters.Add("@Output1", SqlDbType.Bit).Direction = ParameterDirection.Output; 
      cmd.Parameters.Add("@Output2", SqlDbType.Bit).Direction = ParameterDirection.Output; 

      con.Open(); 

      dealerStatus.Output1= (cmd.Parameters["@Output1"].Value != DBNull.Value ? Convert.ToBoolean(cmd.Parameters["@Output1"].Value) : false); 
      dealerStatus.Output2= (cmd.Parameters["@Output2"].Value != DBNull.Value ? Convert.ToBoolean(cmd.Parameters["@Output2"].Value) : false); 

      con.Close(); 
     } 
    } 
} 
catch (SqlException err) 
{ 
} 

나는이 링크를 참조하십시오. 하지만이 cmd.ExecuteNonQuery()을 사용하지 않아도 출력 매개 변수를 설정할 수 있습니다.

누군가 설명 할 수 있습니까? 그리고 여기서 무엇을 사용해야합니까? 정말

답변

2

매우 간단 :

  • 당신이 결과가 정확히 한 행, 한 열이 (예를 들면 SELECT COUNT(*)... 조작이나 이와 유사한 이름), 다음 (ExecuteScalar()를 사용 을 설정 반환하려면 간단히 : 결과 세트 - 반환 할 경우 한 행, 한 열)

  • 결과는 설정 여러 행, 여러 열이있는 경우 - ExecuteReader()을 사용하여 SqlDataReader을 반환하면 반환 된 행을 반복하고 모든 데이터를 가져올 수 있습니다 (요약 : 결과 집합 - 행이 여러 개, 행마다 여러 열)

  • 이없는 명령을 실행하면은 결과 집합을 반환하고 ExecuteNonQuery()을 사용합니다. 이것은 일반적으로 INSERT, UPDATEDELETE 작업에 사용되지만 쿼리 그냥 결과가를 설정 반환하지 않는 경우도 사용할 수 있지만 대신 일부 출력 매개 변수를 설정 (: 결과 집합은을 반환 간략하게)