Форум: "Базы";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];
ВнизКак в базу данных поместить картинку? Найти похожие ветки
← →
pavel_guzhanov © (2005-05-04 17:03) [0]Имеется база данных MS SQL Server. В ней имеется таблица, в которую надо помещать изображения (фото). В таблице имеется поле типа Image . Раньше мне такого делать не приходилось, поэтому прошу помощи. Как поместить картинку в это поле, можно ли это сделать с помощью ADOQuery? Если можно, то как это сделать? Всмысле как картинку поместить в запрос? Прошу, не ругайте за стиль вопроса, не знаю, как это сформулировать более грамотно:-))
← →
LineSoft © (2005-05-04 17:10) [1]Почитайте о BLOB
← →
Fay © (2005-05-04 17:11) [2]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
← →
Johnmen © (2005-05-04 17:14) [3]Параметрический запрос. Потом
...ParamByName("MyImageField").LoadFromStream(MyMemoryStream,ftBlob);
в стриме - твоя картинка.
Ключевые слова для F1:TStream(TMemoryStream), TBlobField, TParameters
← →
pavel_guzhanov © (2005-05-04 17:17) [4]>insert into TEST(PICT) values(0x123123)
А что такое 0x123123?
← →
pavel_guzhanov © (2005-05-04 17:21) [5]>Johnmen © (04.05.05 17:14) [3]//
попробую. Только уже завтра, а то рабочий день заканчивается:-)
← →
Fay © (2005-05-04 18:01) [6]pavel_guzhanov © (04.05.05 17:17) [4]
Шестнадцатиричное представление данных.
← →
sniknik © (2005-05-04 18:12) [7]> Шестнадцатиричное представление данных.
по сетке будем вдвое больше посылать чем картинка "весит", зачем?
← →
Fay © (2005-05-04 18:39) [8]2 sniknik © (04.05.05 18:12) [7]
1) Это ответ на вопрос "Всмысле как картинку поместить в запрос?"
2) Иногда надо.
← →
Anatoly Podgoretsky © (2005-05-04 18:40) [9]sniknik © (04.05.05 18:12) [7]
Это в мненонике СИ, поэтому еще расходы на 0x
← →
sniknik © (2005-05-04 20:11) [10]при "весе" рисунка скажем в пару мегабайт два байта в расчет можно не принимать, а вот еще дополнительные пару мег. по моему надо, особенно при массовых "посылках"/вставках.
> 2) Иногда надо.
дело хозяйское. но я бы не советовал много данных так отправлять (против небольшого количества ничего против не имею ;).
← →
pavel_guzhanov © (2005-05-05 10:02) [11]
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?
← →
Johnmen © (2005-05-05 10:12) [12]SaveToStream, есть такой метод :)
← →
Mr.F (2005-05-05 10:14) [13]Зачекм так сложно.
Просто запихни в поле где должен храниться рисунок путь к этому файлу.
А когда будеш считывать будеш считывать путь к файлу и запускаит его.
← →
Johnmen © (2005-05-05 10:18) [14]У него нет файла...:)))
← →
Mr.F (2005-05-05 10:22) [15]Даа тогда тяжолый случай
← →
Val © (2005-05-05 10:41) [16]>[15] Mr.F (05.05.05 10:22)
у кого?
>pavel_guzhanov © (05.05.05 10:02)
фигню вы написали, извините. почитайте-таки о блоб-полях.
← →
pavel_guzhanov © (2005-05-05 11:06) [17]>SaveToStream, есть такой метод :)
Так именно на этом методе и появляется ошибка
>Просто запихни в поле где должен храниться рисунок путь к этому файлу.
А когда будеш считывать будеш считывать путь к файлу и запускаит его.
>У него нет файла...:)))
Файл есть на одной машине, с которой его помещают в базу. Но просматривать из базы могут с разных машин, так что путь здесь не прокатит.
← →
Johnmen © (2005-05-05 11:11) [18]JPEGImage.SaveToStream
← →
pavel_guzhanov © (2005-05-05 11:27) [19]Сделал вот так:
Image1.picture.Bitmap.SaveToStream(MemoryStream);
Работает:-))
Всем спасибо!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.039 c