我的文字框总是与' 0'无论我输入什么号码

时间:2017-12-25 14:59:50

标签: c# mysql c#-4.0 sqlite

我试图在文本框(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 ()
        {
        }

非常感谢任何帮助。感谢。

2 个答案:

答案 0 :(得分: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.

只需检查您是否从文本框中获取了正确的字符串。就是这样。

答案 1 :(得分:0)

实际上你的代码对我来说似乎很好。为了安全起见,我创建了this fiddle,其中删除了所有与sql相关的内容,并将其替换为Console.WriteLine&#39; s。

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

干杯,