Я пытаюсь использовать DataReader для получения данных из базы данных MS ACCESS, а затем использовать элементы в datareader для выполнения некоторых вычислений. Вот что я делаю с одной строкой.

Dim dataRead As OleDb.OleDbDataReader = dataCom1.ExecuteReader
    If (dataRead.Read() = True) Then
        x = dataReader.Item("x")
        y = dataReader.Item("y")
        z = dataReader.Item("z")
    End If

Я пытаюсь сделать то же самое с несколькими строками, которые извлекаются случайным образом. На данный момент у меня есть это:

Dim dataRead2 As OleDb.OleDbDataReader = dataCom2.ExecuteReader
    For i As Integer = 0 To 4
        If (dataRead2.Read() = True) Then
            a(i) = dataRead2.Item("z")
            b(i) = dataRead2.Item("y")
            c(i) = dataRead2.Item("x")
            i = i + 1
        End If
    Next

Всякий раз, когда я запускаю его, я получаю сообщение об ошибке.

Я получаю сообщение об ошибке "Object reference not set to an instance of an object." on the line a(i)"

0
Fulgurite 30 Янв 2014 в 03:19
Какую ошибку вы получаете? Как объявляется descarray?
 – 
Mike Christensen
30 Янв 2014 в 03:22
Descarray объявлен как Descarray () As String. Я получаю сообщение об ошибке «Ссылка на объект не соответствует экземпляру объекта». на линии descarray (i)
 – 
Fulgurite
30 Янв 2014 в 03:23
Можете ли вы попробовать Dim Descarray(4) As String
 – 
Mike Christensen
30 Янв 2014 в 03:25
1
Первый раздел работает, а второй нет? Что за ошибка? Я не вижу, чтобы dataCon открывался во втором блоке.
 – 
Dan
30 Янв 2014 в 03:27
Хотя, если соединение не было открыто, .Read() не должен возвращать True
 – 
Mike Christensen
30 Янв 2014 в 03:28

1 ответ

Лучший ответ

Похоже, ваш массив объявлен, но без каких-либо конкретных размеров. Вы должны объявить это как:

Dim Descarray(4) As String

Которая будет содержать 5 строк (0 ... 4)

Вы также можете использовать:

ReDim Descarray(5)

После того, как массив уже был объявлен.

2
Mike Christensen 30 Янв 2014 в 03:36