Форум: "Базы";
Текущий архив: 2003.10.23;
Скачать: [xml.tar.bz2];
ВнизСохранение картинки в БД. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.011 c