我正在尝试在lblPriceToBe上加载txtQuantity.Text和lblPice.Text的总和。我正在使用此代码加载我的lblprice。
private void GetData()
{
SqlConnection connection = new SqlConnection("Data Source = localhost\\SQLEXPRESS;Initial Catalog = MejOnlineManagementDB00;Integrated Security=True;");
connection.Open();
SqlCommand sqlCmd = new SqlCommand(@"SELECT price,productType
FROM Products3
WHERE productName='" + DropDownList1.SelectedItem.Value.ToString() + "'", connection);
SqlDataReader rdr = sqlCmd.ExecuteReader();
if (rdr.HasRows)
{
while (rdr.Read())
{
lblPrice.Text = rdr.GetValue(0).ToString(); // if price is string use GetString(0))
lblProdType.Text = rdr.GetValue(1).ToString();
}
}
connection.Close();
//DropDownList End of Area
}
在我得到mysql数据库的价格后,我将它乘以txtQuantity
protected void btnCalculate_Click(object sender, EventArgs e)
{
double Quantity = Convert.ToDouble(txtQuantity.Text);
double Price = Convert.ToDouble(lblPrice.Text);
double sum;
sum = Quantity * Price;
//Output
sum = Convert.ToDouble(lblPriceToBe.Text);
}
然后我收到此错误
mscorlib.dll中发生了'System.FormatException'类型的异常,但未在用户代码中处理
其他信息:输入字符串的格式不正确。
这段代码:
sum = Convert.ToDouble(lblPriceToBe.Text);
答案 0 :(得分:1)
这意味着lblPriceToBe.Text
中的值不能转换为double。它可能是空的或任何其他我们无法转换为双倍的值。在这种特殊情况下,double.TryParse
将帮助您确定输入是否可转换,如果转换成功,它还会为您提供转换结果(否则它将为0.0);所以你想做的是:
protected void btnCalculate_Click(object sender, EventArgs e)
{
double Quantity,Price,sum;
bool canProcess=true;
if(!double.TryParse(txtQuantity.Text,out Quantity)
{
// conversion failed
lblPriceToBe.Text="Invalid quantity"
canProcess=false;
}
if(!double.TryParse(lblPriceToBe.Text,out Price)
{
// conversion failed
lblPriceToBe.Text="Invalid Price"
canProcess=false;
}
if(canProcess)
{
sum = Quantity * Price;
//Output
lblPriceToBe.Text=sum.ToString();
}
}
答案 1 :(得分:0)
在您的Sql / mysql服务器上运行查询并检查是否返回一个值,如果它确实尝试
在类的公共上声明这些变量
public double Quantity;
public double Price;
public double Sum;
然后通过查询给出它们的值:
Quantity = Convert.ToDouble(rdr.GetValue("columns name"));
Price = Convert.ToDouble(rdr.GetValue("columns name"));
Sum = Quantity * Price ;
然后在文本框中使用它们