2013-07-25 4 views
1

ExecuteScalar 기능을 사용하려고합니다. 백엔드 테이블에서 열 중 하나가 "아니오"로 설정되어 있는지 확인합니다. 열 중 하나가 NO로 설정된 경우 SendEmail 기능으로 전화를 걸고 싶지 않은 경우 Delete_Record 기능을 호출하고 싶습니다. 내 문제는 그것이 항상 Delete_Record 함수를 호출하고 SendEmail 함수를 호출하지 않는다는 것입니다. Post_ID에 대한 데이터 유형은 varchar이며이 데이터 유형과 관련이 있는지 여부는 알 수 없습니다. 나는 무슨 일이 일어나고 있는지 파악할 수없는 것 같습니다. 누군가 제발 도와 줄 수 있니? 그것보다 더 될 수 있기 때문에 다른 사람이 말했듯이asp.net의 ExecuteScalar 함수를 사용하는 데 문제가 있습니다

SqlCommand cmd = new SqlCommand("SELECT count(*) from MyTable WHERE Post_ID [email protected]_ID And (Column1='No' OR Column2='No' OR Column3='No')", con); 
    cmd.Parameters.Add("@Post_ID", SqlDbType.VarChar).Value = Post_ID; 
    cmd.Connection = con; 
    con.Open(); 
    Int32 result = (int)cmd.ExecuteScalar(); 

    if (result == 1) 
    { 
     SendEmail(); 
    } 
     else 
    { 
     Delete_Record(); 
    } 
+0

더 많을 수 있습니까? 'result' 값을 확인할 수 있습니까? – Epsilon

+0

결과가 0 (기준과 일치하는 레코드 없음) 또는 1보다 큰 경우 (1 개 이상의 레코드 일치)? – shahkalpesh

+3

결과가 정확히 '1'이라고 기대하고 있습니까, 조건을 만족하는 레코드가 더 있을지, 되돌아 오는 것을보기 위해 중단 점을 두거나 상태를'(result> = 1) '로 변경하십시오. – Habib

답변

2

, 당신은,

if (result >= 1) 
    { 
     SendEmail(); 
    } 
     else 
    { 
     Delete_Record(); 
    } 
+0

예, 이것이 제가 한 것입니다. 고마워요. – moe

1

로 조건을 변경해야합니다 당신이 1 개 이상 기록을 다시 얻을 수 : 다음은 내 코드입니다. 하나는

"을 MyTable에서 SELECT"만약 (결과> = 1) "또는 시도를 사용 WHERE POST_ID = @ POST_ID 그리고 (열 1 = '없음'또는 열 2 = '없음'또는 COLUMN3 = '없음') "

0

시도해보십시오. 확실히 작동 할 것입니다.

SqlCommand cmd = new SqlCommand("SELECT count(*) from MyTable WHERE Post_ID [email protected]_ID And (Column1='No' OR Column2='No' OR Column3='No')", con); 
    cmd.Parameters.Add("@Post_ID", SqlDbType.VarChar).Value = Post_ID; 
    cmd.Connection = con; 
    con.Open(); 
    SqlDataReader rd=cmd.ExecuteReader() 

    if (rd.Read()) 
    { 
     SendEmail(); 
    } 
     else 
    { 
     Delete_Record(); 
    } 
관련 문제