在我的winform中,我試圖通過傳遞項目的名稱來從數據庫中獲取項目的價格。 用戶可以在組合框中看到從數據庫填充項目的項目。 當用戶從組合框中選擇項目並單擊添加時,它會將該特定項目添加到數據庫中。索引超出範圍異常visual studio
在用戶添加項目的同時,其中一個文本框添加了價格。如果用戶添加五個項目,文本框顯示五個項目價格的總和。直到這裏一切正常。
現在當用戶想要從列表框中刪除該項目時,用戶選擇該項目並點擊刪除項目,visual studio會拋出錯誤「索引超出範圍」。
我使用相同的代碼用於獲取價格都添加方法和。減去方法,但不知道爲什麼只加方法的作品,而不是。減去
代碼中加入價格
public int addPrice()
{
DataSet ds = searchforPrice(comboBox2.Text);
int sum;
bool success = int.TryParse(maskedTextBox10.Text, out sum);
int price = Convert.ToInt32(ds.Tables[0].Rows[0]["Price"]);
return sum + price;
}
代碼for substract price
public int subPrice()
{
DataSet ds = searchforPrice(listBox1.GetItemText(listBox1.SelectedItem));
int sum;
bool success = int.TryParse(maskedTextBox10.Text, out sum);
int price = Convert.ToInt32(ds.Tables[0].Rows[0]["Price"]);
return sum - price;
}
代碼從數據庫獲得價格
public DataSet searchforPrice(string itemName)
{
DataSet dataSet = new DataSet();
// Create connection object
OleDbConnection oleConn = new OleDbConnection(connString);
try
{
oleConn.Open();
string sql = "SELECT [Price] FROM [Product] WHERE [Product Name] ='" + itemName + "'";
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(sql, oleConn);
dataAdapter.Fill(dataSet, "Product");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
oleConn.Close();
}
return dataSet;
}
在這種情況下,這意味着你的表是空的。並幫助你一個忙,並看看參數化的查詢。 – 2013-02-21 13:37:05
在代碼中放置一個斷點,看看你在哪裏得到異常。如果你得到的索引超出範圍,它往往意味着你正在訪問一個數組大於它的長度的數組。 – TYY 2013-02-21 13:37:56
listBox1.GetItemText(listBox1.SelectedItem)即將作爲null不知道爲什麼 – 2013-02-21 13:42:36