В моей winform я пытаюсь получить цену элемента из базы данных, передав имя элемента. Пользователь может видеть элементы в поле со списком, которое заполняет элемент из базы данных. Когда пользователь выбирает элемент из поля со списком и добавляет клики, он добавляет этот элемент в базу данных.Index Out of Range exception visual studio
В то же время, когда пользователь добавляет элемент, одно из текстовых полей добавляет цену. Если пользователь добавляет пять элементов, в текстовом поле отображается сумма из пяти позиций. пока здесь все нормально работает.
Теперь, когда пользователь хочет удалить элемент из списка, пользователь выбирает элемент и нажимает на элемент delete, визуальная студия выдает ошибку «Указатель вне диапазона».
Я использую то же код для получения цены как добавить метод и вычитать метод, но не уверен, почему только добавить метод работы, а не вычитание
кода для добавления Цены
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;
}
кода для цены вычитать
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;
}
В данном случае это означает, что ваш стол пуст. И сделайте себе одолжение и загляните в параметризованные запросы. –
Поместите точку останова в код и посмотрите, где вы получаете исключение. Если вы получаете индекс за пределами диапазона, он имеет тенденцию означать, что вы обращаетесь к массиву с числом больше длины. – TYY
listBox1.GetItemText (listBox1.SelectedItem) подходит как null не уверен, почему –