好吧,所以我试图从SQL数据库中获取18个“价格”,然后将它们设置在本地数组中。到目前为止,我已经在数据检索这一逻辑:当解析整数时,输入字符串“格式不正确”
private void dbPrices()
{
string myConnectionString;
myConnectionString = "server=127.0.0.1;uid=root;" +
"pwd=;database=phvpos";
try
{
conn = new MySql.Data.MySqlClient.MySqlConnection();
conn.ConnectionString = myConnectionString;
conn.Open();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
MessageBox.Show(ex.Message);
}
for (int i = 1; i < 19; i++)
{
MySqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "SELECT price from products where id = '" + i + "'";
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
pr[i] = reader.ToString();
prods[i] = int.Parse(pr[i]);
}
}
}
而且在得到的总量此逻辑:
private void btnTotal_Click(object sender, EventArgs e)
{
dbPrices();
itemcost[0] = Convert.ToInt32(txtRice.Text) * prods[0];
itemcost[1] = Convert.ToInt32(txtAdobo.Text) * prods[1];
itemcost[2] = Convert.ToInt32(txtIgado.Text) * prods[2];
itemcost[3] = Convert.ToInt32(txtSisig.Text) * prods[3];
...
itemcost[18] = itemcost[0] + itemcost[1] + itemcost[2] + itemcost[3] + itemcost[4] + itemcost[5]
+ itemcost[6] + itemcost[7] + itemcost[8] + itemcost[9] + itemcost[10]
+ itemcost[11] + itemcost[12] + itemcost[13] + itemcost[14] + itemcost[15]
+ itemcost[16] + itemcost[17];
int totalPrice = itemcost[18];
lblTotal.Text = Convert.ToString(totalPrice);
}
这条线在dbPrices()吐出“输入字符串的不一正确的格式”的错误:
while (reader.Read())
{
pr[i] = reader.ToString();
prods[i] = int.Parse(pr[i]);
}
我也曾尝试:
while (reader.Read())
{
prods[i] = Convert.toInt32(reader.ToString());
}
但也吐出相同的错误。有什么我做错了吗?
为什么不使用'reader.GetInt32(0)'?没有必要先将int转换为字符串。如果'price'是一个'decimal',则使用'reader.GetDecimal'。 –
当你将它转换为int时,你是否已经打开并检查'reader.ToString()'的值是什么?在不知道数据的情况下给出答案是不可能的... –
整数中的价格是“int” –