![]() |
|
|
#1
|
|||
|
|||
![]() Добрый день уважаймые..у меня такой вопросс---как занести картинку в базу данных в блоб-поле через параметризованный запросс.Вот пример кода.Когда я захожу в интербейс.Подключаю свою базу и проверяю блоб поле--мне видаеть ошибка --ето не графический файл..Что делать .Помогите пожалуста..
Код:
DM.IBQuery2.SQL.Clear; DM.IBQuery2.SQL.Text:='insert into IMAGES(ID_IMAGES,NAME_1,NAME_2,NAME_3,IMG_1,IMG_2,IMG_3) values(:id,:a,:b,:c,:d,:e,:g);'; DM.IBQuery2.Params[0].AsInteger:=strtoint(edit1.text); DM.IBQuery2.Params[1].AsString:=edit28.Text; DM.IBQuery2.Params[2].AsString:=edit29.Text; DM.IBQuery2.Params[3].AsString:=edit30.Text; DM.IBQuery2.Params[4].AsBlob:=OpenPictureDialog1.FileName; DM.IBQuery2.Params[5].AsBlob:=OpenPictureDialog2.FileName; DM.IBQuery2.Params[6].AsBlob:=OpenPictureDialog3.FileName; DM.IBTransaction1.Commit; DM.IBQuery2.ExecSQL; Admin: Не забываем использовать теги для оформления кода! Последний раз редактировалось Admin, 17.05.2008 в 12:37. |
#2
|
|||
|
|||
![]() Судя по приведеному коду в BLOB записываются имена файлов, а не сами изображения.
Не зная деталей могу только обрисовать схему как я записываю картинки в блоб. переменная типа TPicture, - создается: Pct := TPicture.Create; - в нее загружается изображение из файла: Pct.LoadFromFile(OpenPictureDialog1.FileName); Далее можно картинку сохранить в TMemoryStream (кстати, ее вообще можно загрузить и без TPicture: MemStream.LoadFromFile(OpenPictureDialog1.FileName )). "Передвинуть" битовый образ картинки в String (проще будет передавать как параметр) и записать в базу. Move(S[1], MemStream.Buffer, MemStream.Size); DM.IBQuery2.Params[4].AsBlob:= S; //S : string; Для работы с блоб полями можно воспользоваться специальным потоком для записи в блоб (и последующего чтения): S := TBlobStream.Create(<FieldBlob1>, bmReadWrite)]; Последний раз редактировалось san-46, 18.05.2008 в 10:09. |
#3
|
|||
|
|||
![]() по подробнее можна...
|
#4
|
|||
|
|||
![]() Что конкретно "подробнее"?
|
#5
|
|||
|
|||
![]() как ето реализовать..если можна то код...
|
#6
|
|||
|
|||
![]() вроде как работает:Всем большое пасибо
Stream1 := TMemoryStream.Create; Stream1.Clear; DBImage1.Picture.Bitmap.SaveToStream(Stream1); Stream1.Position := 0; for i := 1 to Stream1.Size do begin Stream1.Read(d, 1); im := im+d; end; DM.IBQuery6.Params[4].AsBlob:=im; |
#7
|
|||
|
|||
![]() Пример на одном файле с картинкой.
Код:
procedure AnyProc; var MemStream : TMemStream; S : String; begin //открыть диалог и выбрать файл (без понятия как вы там эти картинки //выбираете для записи в базу if not OpenPictureDialog1.Execute then Exit; MemStream := TMemStream.Create; try MemStream.LoadFromFile(OpenPictureDialog1.FileName)); SetLength(S, MemStream.Size); Move(S[1], MemStream.Buffer, MemStream.Size); DM.IBQuery2.Params[4].AsBlob:= S; finally MemStream.Free end; end; |