我试图在文本框(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 ()
{
}
任何帮助深表感谢。谢谢。
在使用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。
只需检查您从文本框中获取正确的字符串。而已。
实际上你的代码对我来说似乎很好。为了安全起见,我创建了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返回您输入的数字的字符串表示形式。
干杯,