Реферат: Работа с объектами большого объема в MS SQL и ADO

Считать данные в MemoryStream.

Загрузить Image из потока.

Перед чтением данных из DataReader-а необходимо вызвать метод Read. Вот реализация:

sb.Text = "connecting to database..."

sb.Refresh()

'Установка соединения

If conn.State <> ConnectionState.Open Then

conn.Open()

End If

sb.Text = "Loading image..."

sb.Refresh()

'Подготовка запроса на выборку данных

Dim cmd As New

SqlClient.SqlCommand("select img from blob_test where id = 3", conn)

'Создание и заполнение объекта DataReader

Dim reader As SqlDataReader = cmd.ExecuteReader()

Dim ms As New MemoryStream()

'Переход на первую строку

reader.Read()

Dim bb() As Byte

bb = reader.Item("img")

'Запись данных в поток в памяти

ms.Write(bb, 0, CInt(bb.Length))

ms.Seek(0, SeekOrigin.Begin)

'Загружаем графическое изображение в Image

pb.Image = Image.FromStream(ms)

sb.Text = "Ready"

Если нужно читать данные порциями, а не целиком, как это сделано в примере, воспользуйтесь методом GetBytes, который аналогичен ADO-методу GetChunk. Однако если объем данных очень велик, это не сильно поможет, так как они передаются клиенту все сразу в момент вызова метода Read. Для того чтобы данные передавались на клиента только по запросу, необходимо передать в качестве параметра метода ExecuteReader флаг CommandBehavior.SequentialAccess. В этом случае данные будут считываться непосредственно в момент вызова GetBytes.

ПРИМЕЧАНИЕ

К-во Просмотров: 672
Бесплатно скачать Реферат: Работа с объектами большого объема в MS SQL и ADO