Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как в базу данных поместить картинку? [D7, MSSQL]


pavel_guzhanov ©   (2005-05-04 17:03:00) 

Имеется база данных MS SQL Server. В ней имеется таблица, в которую надо помещать изображения (фото). В таблице имеется поле типа Image . Раньше мне такого делать не приходилось, поэтому прошу помощи. Как поместить картинку в это поле, можно ли это сделать с помощью ADOQuery? Если можно, то как это сделать? Всмысле как картинку поместить в запрос? Прошу, не ругайте за стиль вопроса, не знаю, как это сформулировать более грамотно:-))


pavel_guzhanov   (2005-05-05 11:27:00) [1]

Сделал вот так:
 Image1.picture.Bitmap.SaveToStream(MemoryStream);


Работает:-))
Всем спасибо!


Johnmen   (2005-05-05 11:11:00) [2]

JPEGImage.SaveToStream


pavel_guzhanov   (2005-05-05 11:06:00) [3]

>SaveToStream, есть такой метод :)

Так именно на этом методе и появляется ошибка

> Просто запихни в поле где должен храниться рисунок путь к этому файлу.
А когда будеш считывать будеш считывать путь к файлу и запускаит его.


> У него нет файла...:)))

Файл есть на одной машине, с которой его помещают в базу. Но просматривать из базы могут с разных машин, так что путь здесь не прокатит.


Val   (2005-05-05 10:41:00) [4]

>[15] Mr.F   (05.05.05 10:22)
у кого?
>pavel_guzhanov ©   (05.05.05 10:02)
фигню вы написали, извините. почитайте-таки о блоб-полях.


Mr.F   (2005-05-05 10:22:00) [5]

Даа тогда тяжолый случай


Johnmen   (2005-05-05 10:18:00) [6]

У него нет файла...:)))


Mr.F   (2005-05-05 10:14:00) [7]

Зачекм так сложно.
Просто запихни в поле где должен храниться рисунок путь к этому файлу.
А когда будеш считывать будеш считывать путь к файлу и запускаит его.


Johnmen   (2005-05-05 10:12:00) [8]

SaveToStream, есть такой метод :)


pavel_guzhanov   (2005-05-05 10:02:00) [9]

var JPEGImage:TJPEGImage;
   MemoryStream:TMemoryStream;
   Image:TBlobField;
begin
 MemoryStream:=TMemoryStream.Create;
 JPEGImage:=TJPEGImage.Create;
 // создание переменной типа TBLOBField
 Image:=TBlobField(Image1.Picture);
 // копирование картинки в поток
 Image.SaveToStream(MemoryStream);

на этой строке выдается ошибка "Access violation at address 00000000. Read of address 00000000...."
А как тогда запихнуть картинку в Stream?


sniknik   (2005-05-04 20:11:00) [10]

при "весе" рисунка скажем в пару мегабайт два байта в расчет можно не принимать, а вот еще дополнительные пару мег. по моему надо, особенно при массовых "посылках"/вставках.

> 2) Иногда надо.
дело хозяйское. но я бы не советовал много данных так отправлять (против небольшого количества ничего против не имею ;).


Anatoly Podgoretsky   (2005-05-04 18:40:00) [11]

sniknik ©   (04.05.05 18:12) [7]
Это в мненонике СИ, поэтому еще расходы на 0x


Fay   (2005-05-04 18:39:00) [12]

2 sniknik ©   (04.05.05 18:12) [7]
1) Это ответ на вопрос "Всмысле как картинку поместить в запрос?"
2) Иногда надо.


sniknik   (2005-05-04 18:12:00) [13]

> Шестнадцатиричное представление данных.
по сетке будем вдвое больше посылать чем картинка "весит", зачем?


Fay   (2005-05-04 18:01:00) [14]

pavel_guzhanov ©   (04.05.05 17:17) [4]
Шестнадцатиричное представление данных.


pavel_guzhanov   (2005-05-04 17:21:00) [15]

>Johnmen ©   (04.05.05 17:14) [3]//
попробую. Только уже завтра, а то рабочий день заканчивается:-)


pavel_guzhanov   (2005-05-04 17:17:00) [16]

>insert into TEST(PICT) values(0x123123)

А что такое 0x123123?


Johnmen   (2005-05-04 17:14:00) [17]

Параметрический запрос. Потом
...ParamByName('MyImageField').LoadFromStream(MyMemoryStream,ftBlob);в стриме - твоя картинка.
Ключевые слова для F1: TStream(TMemoryStream), TBlobField, TParameters


Fay   (2005-05-04 17:11:00) [18]

if object_id('TEST') is not null drop table TEST
go
create table TEST(
ID int not null identity(1, 1),
PICT image null,
constraint PK_TEST primary key clustered(ID)
)
go
insert into TEST(PICT) values(0x123123)
select * from TEST


LineSoft   (2005-05-04 17:10:00) [19]

Почитайте о BLOB


Наверх

Титульная страница Поиск, карта сайта Написать письмо