2014-10-25 7 views
-3

I 사용자를 확인하려면 다음 코드를 가지고 : 나는 그것을 실행할 때이 오류가"쿼리를 구문 분석하는 동안 오류가 발생했습니다."

private void button1_Click(object sender, EventArgs e) 
    { 

     string ss = "SElECT * FROM 123 WHERE [email protected]"; 
     using (SqlCeConnection cn = new SqlCeConnection(@"Data Source=|DataDirectory|\123.sdf"))  
     { 
      try 
      { 
       SqlCeCommand selectCommand = new SqlCeCommand(ss, cn); 
       cn.Open(); 

       selectCommand.Parameters.AddWithValue("@USERNAME", textBox1.Text); 

       int result = (int) selectCommand.ExecuteScalar(); 
       if (result > 0) 
        MessageBox.Show("logged in"); 
       else 
        MessageBox.Show("user not found"); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.ToString()); 
      } 
      finally 
      { 
       cn.Close(); 
      } 
     }    
    } 

을 :

Error

가 왜이 오류가 무엇입니까를?

답변

1
은 ExecuteScalar는 당신에게 첫 번째 행, 첫 번째 열의 값을 제공한다
string ss = "SElECT Count(*) FROM [123] WHERE [email protected]"; 

아래로 SQL 문을 변경

. 정수 값이 아니면 int로 캐스트 할 때 예외가 발생합니다. Count(*)을 sql에 포함 시키면 조건에 맞는 레코드 수를 얻을 수 있으며 캐스팅도 작동합니다. 테이블 이름에도 []을 추가했습니다.

+0

IF 하지만 다음과 같은 또 다른 검색어로 : https://www.dropbox.com/s/d67yetknugj663i/qup.PNG?dl=0 – kipo

0

FROM 123 올바르지 않습니다. 여기에 테이블 이름이 필요합니다.

1
string ss = "SElECT * FROM [123] WHERE [email protected]"; 
+0

지금이 오류가 있습니다. https://www.dropbox.com/s/xk7mmbcqob762fk/%5B%5D.PNG?dl=0 – kipo

+0

@kipo 질문 하나씩 질문하십시오. Venkat 다른 질문에 대한 귀하의 질문에 대한 답변을 새 질문을 추가하십시오. – mybirthname

+0

@kipo'int'를 반환하지 않는 쿼리를 실행하고'int'로 형 변환하려고하면 어떻게 될까요? 당신의 시스템이 말하고있는 것에주의를 기울이십시오. 쿼리가 반환하는 형식으로 캐스팅하여 문제를 해결합니다. – hvd

관련 문제