Страница: 1 |
Страница: 1 |
Вопрос: Залить картинку на сервер - 2
Добавлено: 04.08.05 14:23
Автор вопроса:
danser | ICQ: 299287824
В каком то топике Павел писал:
...
В базе делаем поле типа image - в него можно заливать любые бинарные
данные, в том числе и картинки.
При сохранении в БД берем картинку, сохраняем ее в байтовый массив:
Dim img As Image 'сюда помещается картинка
'Некие действия над картинкой, если нужно
Dim MyOut As New IO.MemoryStream
img.Save(MyOut, Imaging.ImageFormat.Png) 'Тут формат указывается
Dim bytes() As Byte
bytes = MyOut.GetBuffer
В bytes в итоге лежит картинка в бинарном виде.
Сохраняем картинку в БД:
Dim Conn As SqlConnection = DB.Conn
Dim SQL As String
Dim Comm As SqlCommand
SQL = "Insert Into log (TaskInfo) Values (@taskinfo)"
Comm = New SqlCommand(SQL, Conn)
Comm.Parameters.Add("@taskinfo", SqlDbType.Image).Value = bytes
Comm.ExecuteNonQuery
Если картинка берется из файла, то нужно для получения данных из файла
использовать классы из System.IO.
Ну а достать картинку тоже несложно. Допустим Вы загрузили данные в
DataTable. И нужно достать картинку из нулевой DataRow...
Dim bytes() As Byte = CType(DT.Rows(0).Item("taskinfo"), Byte())
Dim ms As New MemoryStream(bytes)
ms.Position=0
Dim img As Image = Image.FromStream(ms)
ms.Close
PictureBox1.Image = img
...
Подобним механизмом я воспользовался для занесения в БД обекта типа MyType (вместо Image).
ВОПРОС: При востановлении обекта использовалась строка:
Dim img As Image = Image.FromStream(ms)
Как мне для моего обекта типа MyType сделать перевод MemoryStream->MyType?
Спасибо.
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа: Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #1
Добавлено: 04.08.05 15:38
Используйте сериализацию.
Номер ответа: 2
Автор ответа: danser
ICQ: 299287824
Вопросов: 76
Ответов: 209
Профиль | | #2
Добавлено: 05.08.05 16:54
Да... сереализация это хорошо но как мне "захватить" саму ячейку? Через Reader не получается - инстукцию в SQLCommand типа "SELECT A FROM Tab ..." пишет что ошибка - нельзя использовать для nChar, Image... инструкцию Select
Что делать?
Номер ответа: 3
Автор ответа: Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #3
Добавлено: 05.08.05 17:27
У меня без проблем Select работает.
Номер ответа: 4
Автор ответа: danser
ICQ: 299287824
Вопросов: 76
Ответов: 209
Профиль | | #4
Добавлено: 05.08.05 18:31
Да разобрался, моя ошибка - я питался использовать DISTINCT и ORDER BY ... при виборке через SELECT