2012-03-07 2 views

답변

9

대신 ExecuteNonQuery 사용을 참조하십시오 :

: 당신이 데이터에 트리거가있는 경우

int affectedRows = command.ExecuteNonQuery(); 
if (affectedRows <= 0) 
{ 
    // Houston, we have a problem. 
} 

이 명심, 당신이 INSERT에 시도 된 실제 행 수를 반영하지 않을 수 있습니다

ExecuteNonQuery을 사용하면 모든 유형의 데이터베이스 작업을 수행 할 수 있지만 반환 된 결과 집합을 사용할 수 없습니다. 저장 프로 시저를 호출 할 때 사용되는 출력 매개 변수에는 데이터가 채워지고 실행이 완료된 후에 검색 할 수 있습니다. UPDATE, INSERTDELETE 문에 대해 반환 값은 명령에 의해 영향을받는 행 수입니다. 다른 모든 유형의 명령문의 경우 반환 값은 -1입니다.

그러나 일반적으로 쿼리에 오류가 발생하면 MySqlException이 표시됩니다.

+0

sixlettervariables! 감사합니다! – dotancohen

2

실패 할 경우 예외가 발생합니다. 예외 개체에는 일반적으로 잘못된 정보 (예 : '기본 키 위반'등)가 들어 있습니다.

또한 INSERT, UPDATE 또는 DELETE에는 ExecuteNonQuery을 사용하십시오. 리턴 된 값은 영향을받은 행의 수를 포함합니다.

+0

감사합니다. Branko. – dotancohen

3

데이터베이스를 쿼리 할 때만 SqlDataReader를 사용하고 SqlDataReader는 빨리 감기 전용 포인터이므로 쿼리에 권장되므로 SqlCommand의 ExecuteNonQuery() 메서드를 다음 코드와 같이 사용하십시오 :

using (SqlConnection conn = new SqlConnection("[QueryString]")) { 
      using (SqlCommand cmd = new SqlCommand("SQL Command",conn)) { 
       //here you return the number of affected rows 
       int a = cmd.ExecuteNonQuery();      
      } 
     } 

나는 이것이 당신을 도울 수 있기를 바랍니다.

관련 문제