|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Добавление файла в БД фиреберд в БЛОБ поле
Здравствуйте я начинающий программист и столкнулся с проблемой, как в бд добавить файл
вот мой юнит Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Db, IBDatabase, IBCustomDataSet, IBTable, IBSQLMonitor, Grids, DBGrids, ExtCtrls, DBCtrls, IBQuery, StdCtrls; type TForm1 = class(TForm) IBDatabase1: TIBDatabase; IBTable1: TIBTable; IBTransaction1: TIBTransaction; DataSource1: TDataSource; DBGrid1: TDBGrid; DBNavigator1: TDBNavigator; IBQuery1: TIBQuery; Button1: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Button2: TButton; IBQuery2: TIBQuery; OpenDialog1: TOpenDialog; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; NN ,P1 , P2 :string; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin IBQuery1.Active:=False; {NN:=Edit1.Text; P1:=Edit2.Text; P2:=Edit3.Text;} Try strtoint(Edit1.Text); strtoint(Edit3.Text); except MessageDlg('Error !!!' , mtError ,[mbYes], 0); exit; end; IBQuery1.Sql.Text:='insert into QWERTY (NN,POLE1,POLE2,APP) VALUES(:NN,:P1,:P2,:APP)'; IBQuery1.Params[0].asInteger:=strtoint(Edit1.Text); IBQuery1.Params[1].asstring:=Edit2.Text; IBQuery1.Params[2].asInteger:=strtoint(Edit3.Text); IBQuery1.Params[3]. IBQuery1.ExecSQL; IBTable1.Active:=False; IBQuery1.Sql.Text:='select*from QWERTY ORDER BY SP1'; IBQuery1.Active:=True; IBQuery1.Active:=False; IBTable1.Active:=True; end; procedure TForm1.FormCreate(Sender: TObject); begin Label1.Caption:='NN'; Label2.Caption:='Pole 1'; Label3.Caption:='Pole 2'; Edit1.Text:=''; Edit2.Text:=''; Edit3.Text:=''; Button1.Caption:='Äîáàâèòü'; Button2.Caption:='Exit'; end; procedure TForm1.Button2Click(Sender: TObject); begin Application.Terminate; end; end. с текстом я то разобрался сортировку зделал по СП1 который в свою очередь через айбиЕксперт стоит тригер Код:
AS BEGIN IF (NEW.SP1 IS NULL) THEN NEW.SP1 = GEN_ID(GEN_QWERTY_ID,1); END а вот как файл туда вставить не знаю и желательно помогите как уже вставленный файл из БД взять (я с файлами вообще неразу не работал только приметивное Input и output ) я рылся в нете там нашол максимум отсылки на то что надо както с файлом через память работать а как к IBQuery1.Params[3].asBlob зделать правильно не знаю добавить хочу екзешник работаю на Делфи5ть а бд на локальной машыне |
#2
|
||||
|
||||
вставить
Код:
IBQ.sql.text:='update Table_name set Field_name = :b'; // или insert вместо update IBQ.params.parseSQL(IBQ.sql.text, true); IBQ.params.parambyname('b').LoadFromFile('Path to filw',ftBlob); IBQ.execsql; IBT.Commit; выгрузить (выдрал из своего кода- разберешься): Код:
var s:Tstream; FileS:TFileStream; begin try IBQ_Blob.Open; s:=IBQ_Blob.CreateBlobStream(IBQ_Blob.FieldByName(Field_name), bmRead); if FileExists('Docs\'+File_name) then FileS:=TFileStream.Create('Docs\'+File_name,fmOpenWrite) else FileS:=TFileStream.Create('Docs\'+File_name,fmCreate); FileS.CopyFrom(s,s.Size); s.Free; FileS.Free; IBQ_Blob.Close; IBT_Blob.Commit; except ShowMessage('Ошибка при открытии шаблона '+File_name); end; Код:
select * from Table_name Последний раз редактировалось TOJluK, 01.10.2009 в 16:09. |
#3
|
|||
|
|||
Все спасибо разобрался .
С извлечением сложно правда было. |