2013-07-23 5 views
4

내가 같은 쿼리가 :아무것도 업데이트되지 않은 경우에도 ExecuteNonQuery가 1을 반환하는 이유는 무엇입니까?

UPDATE messages SET Unread = 'N' WHERE id= '6' 

가 영향을받는 행을 읽으려면, 내가 ExecuteNonQuery()의 값을 사용을하지만, 항상 아무것도 변경되지 않은 경우에도 1 반환합니다. 동일한 문제가 발생했습니다 here. 이것은 버그입니까, 아니면이 동작이 정상입니까?

+0

는'ExecuteNonQuery' 많은 행이 *하지 영향을 변경 * 얼마나 반환에

을 참조하십시오. id = 6 인 메시지가 있습니까? – CodingIntrigue

+0

다른 사람들이 말한 것을 다시 말해서, '... set name ='foo '여기서 name ='foo '는 새 값이 이전 값과 다르지 않더라도 name ='foo '인 레코드에 영향을 미칩니다. – Tim

+0

흠, 그렇다면 어떻게하면 실제로 영향을받는 행을 얻을 수 있습니까? – rtuner

답변

7

ExecuteNonQuery의 경우 1을 반환해야합니다. 레코드 WHERE id = '6'이어야합니다. 이미 'N' 다음은 0 행을 반환하고 해당 쿼리 및 Unread의 가치를 실행한다면

UPDATE messages SET Unread = 'N' WHERE id = '6' AND Unread <> 'N' 

: 당신이 에게 행을 업데이트 할 경우 지금,이 값은 다음 쿼리를 변경 다른 경우 .

5

UPDATE 쿼리에 ExecuteNonQuery()의 반환 값은 어디에서 업데이트 문의 절과 행 수 실제로 업데이트하지 일치 행의 수입니다. 따라서 의미가 있습니다.

this 링크를 참조하십시오. 그러면 모든 의심은 사라질 것입니다.

관련 문제