无论我输入什么号码,我的文本框总是与'0'进行比较

问题描述 投票:0回答:2

我试图在文本框(CHWV.text)中设置一个数字范围,这将能够根据我的if else条件更新我的数据库。我试图从0到100键入文本框,然后使用int.TryParse将文本框值转换为整数。但是,无论我尝试输入什么数字,CHWTemp总是得到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 ()
        {
        }

任何帮助深表感谢。谢谢。

c# mysql c#-4.0 sqlite
2个回答
0
投票

在使用CHWTemp的值之前,请检查int.TryParse的返回值(CHWV.Text,out CHWTemp);如果你得到的是假,那么转换不会发生在从字符串到int的过程中。

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

如果ifSuccess的值为true,则从string转换为int,但如果CHWV.Text的值不能转换为int,则返回false,CHWTemp的值为0。

只需检查您从文本框中获取正确的字符串。而已。


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返回您输入的数字的字符串表示形式。

干杯,

© www.soinside.com 2019 - 2024. All rights reserved.