Реферат: Работа с объектами большого объема в 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
|