c# - 索引超出范围异常 Visual Studio

标签 c# winforms listbox

在我的 winform 中,我试图通过传递项目的名称从数据库中获取项目的价格。 用户可以在组合框中看到从数据库中填充项目的项目。 当用户从组合框中选择项目并单击添加时,它会将该特定项目添加到数据库中。

与此同时,当用户添加商品时,其中一个文本框会添加价格。如果用户添加五个项目,文本框将显示五个项目价格的总和。到这里为止一切正常。

现在当用户想要从列表框中删除项目时,用户选择项目并单击删除项目,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;

        }

减价代码

 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;
}

enter image description here

最佳答案

结果集中没有表或没有行。这意味着访问第一个条目(索引 0)将不起作用,因为没有第一个条目。您得到一个 IndexOutOfRangeException。检查您的请求和数据源。

关于c# - 索引超出范围异常 Visual Studio ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15003613/

相关文章:

c# - 如何最小起订量设置索引属性

c# - 在 c# 中删除 listBoxItem 时 ListBox 不刷新

javascript - 在列表框中显示方法的结果

c# - 如何在 WinForms ListBox 上设置多个选定项

c# - 无法将类型 'System.Collections.Generic.IEnumerable<AnonymousType#1>' 隐式转换为 'System.Collections.Generic.List<modelClass>

c# - 为什么按增量时间计算?

c# - VB5 dll,如何从 C# ( .NET 4.5 ) 调用函数

Winforms:保持 Winforms 应用解锁的最佳方式?

C# - 何时调用 base.On Something?

C# 节流 For 循环