2017-12-25 5 views
0

if else 조건에서 데이터베이스베이스를 업데이트 할 수있는 텍스트 상자 (CHWV.text)에 숫자 범위를 설정하려고했습니다. 0부터 100까지 텍스트 상자에 키 입력을 시도한 다음 int.TryParse를 사용하여 텍스트 상자 값을 정수로 변환합니다. 그러나 CHWTemp는 입력 할 숫자가 무엇이든 항상 0을 얻습니다.내 텍스트 상자는 항상 내가 입력 한 숫자가 '0'과 비교됩니다.

코드가 완벽하게 실행되지만 텍스트 상자에 입력 한 후 원하는 CHWTemp를 가져올 수 없습니다. 잘 모르겠습니다 내가 빠뜨린 것이 있습니까?

 sqlite_cmd = sqlite_conn.CreateCommand(); 

     int CHWTemp; 

     int.TryParse(CHWV.Text,out CHWTemp); 

     try 

     { 
      sqlite_conn.Open(); 

      if (CHWTemp >= 0 && CHWTemp <= 10) 
       { 
        sqlite_cmd.CommandText = ("UPDATE Temperature SET Temp = 25 where id=12"); 
        sqlite_cmd.ExecuteNonQuery(); 
       } 
       else if (CHWTemp >= 11 && CHWTemp <= 20) 
       { 
        sqlite_cmd.CommandText = ("UPDATE Temperature SET Temp = 24 Where id=12"); 
        sqlite_cmd.ExecuteNonQuery(); 
       } 
       else if (CHWTemp >= 21 && CHWTemp <= 40) 
       { 
        sqlite_cmd.CommandText = ("UPDATE Temperature SET Temp = 23 where id=12"); 
        sqlite_cmd.ExecuteNonQuery(); 
       } 
       else if (CHWTemp >= 41 && CHWTemp <= 60) 
       { 
        sqlite_cmd.CommandText = ("UPDATE Temperature SET Temp = 22 where id=12"); 
        sqlite_cmd.ExecuteNonQuery(); 
       } 
       else if (CHWTemp >= 61 && CHWTemp <= 80) 
       { 
        sqlite_cmd.CommandText = ("UPDATE Temperature SET Temp = 21 where id=12"); 
        sqlite_cmd.ExecuteNonQuery(); 
       } 
       else if (CHWTemp >= 81 && CHWTemp <= 100) 
       { 
        sqlite_cmd.CommandText = ("UPDATE Temperature SET Temp = 20 where id=12"); 
        sqlite_cmd.ExecuteNonQuery(); 
       } 
      sqlite_conn.Close(); 
     } 
     catch() 
     { 
     } 

모든 도움을 주시면 감사하겠습니다. 감사.

+1

'TryParse'는 아마도 실패합니다. 그것의 반환 값을 참조하십시오. 만약 그렇다면'CHWV.Text'의 값이 무엇인지 정확히 확인하십시오 –

답변

0

CHWTemp의 값을 사용하기 전에 int.TryParse (CHWV.Text, out CHWTemp)의 반환 값을 확인하십시오. 변환보다 false가 발생하면 문자열에서 int로 변환이 발생하지 않습니다.

bool ifSuccess = int.TryParse(CHWV.Text,out CHWTemp); 

ifSuccess의 값이 true이면 다음 int로 문자열에서 변환이 이루어집니다하지만 CHWV.Text의 값이 변환되지 않은 경우 반환 거짓 얻을 것이다 int로하고 CHWTemp의 값은 0이됩니다.

텍스트 상자에서 올바른 문자열을 가져 왔는지 확인하십시오. 그게 전부 야.

+0

고마워요, 제 문제가 어디 있는지 압니다. 나는 텍스트 상자를 비워두고 내 텍스트 상자를 비웠다. 따라서 항상 0을 반환합니다. – ChongKit

0

사실 내 코드는 나에게 좋을 것 같습니다. 안전을 위해 this fiddle을 만들었습니다. SQL 관련 항목을 모두 제거하고 Console.WriteLine으로 대체했습니다.

using System; 

public class Program 
{ 
    public static void Main() 
    { 
     int CHWTemp; 
     String inputStr = "17"; 
     int.TryParse(inputStr,out CHWTemp); 


      if (CHWTemp >= 0 && CHWTemp <= 10) 
       { 
        Console.WriteLine("UPDATE Temperature SET Temp = 25 where id=12"); 
       } 
       else if (CHWTemp >= 11 && CHWTemp <= 20) 
       { 
        Console.WriteLine("UPDATE Temperature SET Temp = 24 Where id=12"); 
       } 
       else if (CHWTemp >= 21 && CHWTemp <= 40) 
       { 
        Console.WriteLine("UPDATE Temperature SET Temp = 23 where id=12"); 
       } 
       else if (CHWTemp >= 41 && CHWTemp <= 60) 
       { 
        Console.WriteLine("UPDATE Temperature SET Temp = 22 where id=12"); 
       } 
       else if (CHWTemp >= 61 && CHWTemp <= 80) 
       { 
        Console.WriteLine("UPDATE Temperature SET Temp = 21 where id=12"); 
       } 
       else if (CHWTemp >= 81 && CHWTemp <= 100) 
       { 
        Console.WriteLine("UPDATE Temperature SET Temp = 20 where id=12"); 
       } 

    } 
} 

자세히 알 수 있듯이 정상적으로 작동합니다. 따라서 파트를 구문 분석하는 것이 예상대로 작동한다는 것은 쉽게 알 수 있습니다. 따라서 실패 지점은 텍스트 필드에서 문자열을 얻는 방법처럼 보입니다.

내 제안은 CHWV.Text가 입력 한 숫자의 문자열 표현을 반환하는지 확인하는 것입니다.

건배,

+0

감사합니다. 내 문제가 어디 있는지 압니다. 나는 텍스트 상자를 비워두고 내 텍스트 상자를 비웠다. 따라서 항상 0을 반환합니다. – ChongKit

관련 문제