Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.23;
Скачать: CL | DM;

Вниз

Сохранение картинки в БД.   Найти похожие ветки 

 
AndrewK ©   (2003-09-28 23:42) [0]

Доброго времени суток, господа!

Прошу прощения за избитый вопрос.

Как сохранить картинку в базу данных MS SQL 2000?

Есть таблица Cards (ID int, Photo image)
Таблица закрыта для всех пользователей на прямое чтение и запись.
Обращение к ней ведется только через SP и функции.

Мне надо сохранить фотографию в поле Photo для карточки с определенным ID и потом выводить ее.

Выводить научился. Делаю так:

...
Query.SQL.Text := "spGetPhoto "+IntToStr(ID);
Query.Open;
if Query.FieldByName("Photo").AsString <> "" then
Image.Picture.Assign(TBlobField(Query.FieldByName("Photo")));
...


Сохранить пытаюсь так:

var
MStream : TStream;
qImage : TADOQuery;

...

MStream := TMemoryStream.Create;
qImage := TADOQuery.Create(nil);
try
qImage.Connection := DM.dbConn;
qImage.SQL.Text := "cmp_spTradeMarkGET "+IntToStr(ID);
qImage.Open;
Image.Picture.Graphic.SaveToStream (MStream);
qImage.Edit;
TGraphicField(qImage.FieldByName("Photo")).LoadFromStream(MStream);
qImage.Post;
finally
qImage.Close;
qImage.Free;
MStream.Free;
end;


Ошибка вылетает на вызов qImage.Post;

Неужели нельзя сохранить картинку в поле без использования команд Edit и Post?


 
Polevi ©   (2003-09-29 10:04) [1]

MStream.Position:=0


 
AndrewK ©   (2003-09-29 10:07) [2]

2Polevi: Не понял


 
Polevi ©   (2003-09-29 10:54) [3]

Image.Picture.Graphic.SaveToStream (MStream);
MStream.Position:=0
qImage.Edit;
TGraphicField(qImage.FieldByName("Photo")).LoadFromStream(MStream);


 
AndrewK ©   (2003-09-29 10:54) [4]

Неужели никто не сталкивался с такой задачей?

Если кто знает где можно почитать про это, поделитесь, пожалуйста.


 
AndrewK ©   (2003-09-29 11:05) [5]

2Polevi: Понятно. Только это не решает проблему.


 
Polevi ©   (2003-09-29 11:23) [6]

TCustomADODataSet.CreateBlobStream


 
AndrewK ©   (2003-09-29 12:36) [7]

Выдает сообщение:

"В данном сеансе невозможен запуск дополнительных транзакций"

Конструкция такая:

try
BeginTrans;

Действие 1
Действие 2
Действие 3
Сохранение картинки
Действие 3

CommitTrans;
except
RollbackTrans;
end;

При попытке сохранить картинку вылетает ошибка.


 
Polevi ©   (2003-09-29 13:31) [8]

try
BeginTrans;

Действие 1
Действие 2
Действие 3
Действие 3

CommitTrans;
Сохранение картинки
except
RollbackTrans;
end;


 
AndrewK ©   (2003-10-02 10:23) [9]

Нашел как сделать.
При использовании TADOStoredProc у добавляемых параметров есть метод LoadFromStream. С ним все получилось. И в рамках одной транзакции.



Страницы: 1 вся ветка

Текущий архив: 2003.10.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
14-74405
Мазут Береговой
2003-10-06 04:59
2003.10.23
Слышали о такой машине как Corvette? Компания Chevrolet.


6-74357
Веньтель
2003-08-25 22:54
2003.10.23
Программно запретить доступ к сетке некоторых машин


14-74477
Yanis
2003-10-03 10:44
2003.10.23
Про Assembler


9-73955
Sword-Fish
2003-04-21 09:32
2003.10.23
Звуки в DXWaveList !!!


1-74239
dimm
2003-10-13 16:09
2003.10.23
Уважаемые мастера подскажите как найти символ переноса строки ...