Преобразовать объект Reader в объект ArrayList без циклов

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Преобразовать объект Reader в объект ArrayList без циклов

Сообщение sergey-911 » 07.07.2011 (Чт) 18:28

Доброго времени суток уважаемые.
Прошу прощения за вопрос. Мне нужно получить содержимое n-ой строки l-ой ячейки набора данных Reader. Поискав в свойствах понял, что так нельзя. Поэтому решил поместить содержимое в массив. Но опять столкнулся с проблемой. Получилось только следующим образом:
Код: Выделить всё
Dim conStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\DataGridView.mdb;"
        Dim selStr As String = "SELECT * FROM vw_DataGridView"
        Dim ListOfRows As New ArrayList
        Dim Reader As OleDbDataReader
        Using OLEDBCon As New OleDbConnection(conStr)
            OLEDBCon.Open()
            Using OleDbCom As New OleDbCommand(selStr, OLEDBCon)
                Reader = OleDbCom.ExecuteReader(CommandBehavior.CloseConnection)
                Dim res As New ArrayList
                While (Reader.Read())
                    Dim flast = Reader.FieldCount - 1
                    Dim rec As New Dictionary(Of String, Object)
                    For i = 0 To flast
                        Dim name As String = Reader.GetName(i)
                        Dim value As Object = Reader(i)
                        rec.Add(name, value)
                    Next
                    res.Add(rec)
                End While
                Reader.Close()
            End Using
            OLEDBCon.Close()
        End Using

Теперь я могу получить данные из набора:
Код: Выделить всё
        Dim n, l As Integer
        n = 10
        l = 2
        Dim s As String = res(n)(Reader.GetName(l)).ToString
        MsgBox(s)


При заполнении ArrayList в цикле естественно, получается задержка.

А теперь собственно вопрос:
1) Можно ли каким-либо образом получить данные нужной ячейки из набора Reader?
2) Можно ли каким-либо образом поместить (преобразовать) объект Reader в объект ArrayList без циклов и подвисания программы?
:(
С уважением, Сергей.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Преобразовать объект Reader в объект ArrayList без цикло

Сообщение FireFenix » 07.07.2011 (Чт) 18:56

sergey-911 писал(а):1) Можно ли каким-либо образом получить данные нужной ячейки из набора Reader?
2) Можно ли каким-либо образом поместить (преобразовать) объект Reader в объект ArrayList без циклов и подвисания программы?

1) а) Составить SQL запрос для получения нужного поля, используя WHERE, к примеру
Код: Выделить всё
Dim selStr As String = "SELECT * FROM vw_DataGridView WHERE id='100'"

б) При полной выборки все таблице, только пройтись циклом до нужного места
2) Нет, Reader - класс, List - список, совсем разные вещи
Последний раз редактировалось FireFenix 08.07.2011 (Пт) 19:48, всего редактировалось 1 раз.
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Re: Преобразовать объект Reader в объект ArrayList без цикло

Сообщение sergey-911 » 08.07.2011 (Пт) 9:54

FireFenix писал(а):1) а) Составить SQL запрос для получения нужного поля, используя
Код: Выделить всё
WHERE
, к примеру
Код: Выделить всё
Dim selStr As String = "SELECT * FROM vw_DataGridView WHERE id='100'"

б) При полной выборки все таблице, только пройтись циклом до нужного места
2) Нет, Reader - класс, List - список, совсем разные вещи


Спасибо FireFenix. Значит дело - труба.
1) Постоянно делать выборку селектами и тем более каждый раз проходиться целиком до нужного места в Reader - еще сильнее будет подтормаживать программу.
2) Жаль, что преобразовать Reader в ArrayList нельзя... :( Неужели придется оставлять преобразование в цикле?... :( Почему преобразовать руками можно, в цикле, а по-другому - нельзя? Ведь должен быть выход!
С уважением, Сергей.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Преобразовать объект Reader в объект ArrayList без цикло

Сообщение FireFenix » 08.07.2011 (Пт) 19:49

sergey-911 писал(а):Ведь должен быть выход!

Использовать нормальную логику/архитектуру программы, а не извращённая выборка по 1
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19

    TopList