我试图在文本框(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 ()
{
}
非常感谢任何帮助。感谢。
答案 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返回您输入的数字的字符串表示。
干杯,