У меня есть два метода: один хранит значения в arraylist i.e Button_1Click(). Другой метод NextClick() извлекает данные из arraylist и сохраняет его в текстовое поле. я получаю индекс массива из оценка погрешности:ArgumentOutOfRangeException: Index был за пределами допустимого диапазона
ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection
ArrayList list = new ArrayList();
int i = 0;
protected void Button1_Click(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection();
OleDbDataReader dReader;
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
@"data source=D:\asp\data\test.mdb;";
conn.Open();
OleDbCommand cmd = new OleDbCommand("SELECT * FROM D", conn);
dReader = cmd.ExecuteReader();
while (dReader.Read())
{
String temp = dReader[1].ToString();
list.Add(temp);
temp = dReader[2].ToString();
list.Add(temp);
}
dReader.Close();
conn.Close();
}
protected void next_Click(object sender, EventArgs e)
{
Carname.Text = list[i] as String;
i++;
}
И что тогда произошло? Вы не думаете, что вы должны проверить значение индекса ** i **, прежде чем просто прочитать его из ** списка [i] **? Что-то вроде ** if (list.Count <= i) return; ** –
Меня озадачивает то, что люди, которым даже удается работать с базами данных, не видят, почему простые вещи вроде этого не работают. –
, когда я использовал оператор if для проверки i меньше, чем list.count, я не получаю ошибку, но ничего не отображается в текстовом поле. – ares