2017-12-25 12 views
0

テキストボックス(CHWV.text)に数値の範囲を設定しようとしましたが、私のif else条件でデータベースベースを更新できます。 テキストボックスに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)の戻り値を確認してください。あなたが文字列から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

関連する問題