Witajcie, czy znacie jakiś sposób w delphi na wciągnięcie pliku z internetu do bazy danych MSSQL jeżeli owa znajduje się nie na lokalnym komputerze?, nawet choćby w wypadku kiedy plik mam u siebie na dysku bo sciąganie już mam rozpracowane...
Utwórz pole typu "image" i do niego wrzucaj binarne dane.
Oczywiście - utwórz pole typu BLOB i wrzuć, komponenty DBX4 (jeśli masz wersję Enterprise) lub dbGo(ADO).
hmm no dobra ale jak juz mam to w blobie czy streamie to w jaki sposób to wpakować do bazy?
szukam i szukam i nawet google nie wie..., btw. jest moze jakas dobra książka o łączeniu się z bazą MsSQL używając Delphi?
Dzięki
No więc dzięki za pomoc, ale dalej sobie z tym nie radzę, może od początku - mam delphi professional i bazę MSSQL z polem typu Image. Wpakowałem (przynajmniej tak mi się wydaje - zapisuje sie na dysku z tego) mojego pdf'a do do TBlobField w taki sposób :
Table1.Close;
T := TBlobField.Create(Table1);
T.FieldName := 'DataFile';
T.Name := Table1.Name + T.FieldName;
T.Index := Table1.FieldCount;
T.DataSet := Table1;
T.LoadFromFile('C:\sciezkadopliku\plik.pdf');
i mam co do tego kilka pytań... mianowicie po co tyle zachodu w tworzeniu bloba (po co te tabele skoro i tak nic się z nimi nie dzieje?), oraz jak juz mam tą tabelę to jak do niej wrzucic tego bloba (bo chyba da się tylko przez tabelę?) , aha tabelka jest z ADO o ile to robi różnicę. Jest może gdzieś gotowy przykład programu z czymś takim? Tylko błagam niech mi ktoś nie posunie linka do googli bo naprawde długo już szukałem. Z góry dzięki.
No i udało mi się :d , poklepałbym się po plecach gdybym miał dłuższe ręce, a tak na przyszłość dla innych sposób jest taki:
var
fs : TfileStream;
bs: TBlobStream;
begin
Table1.Insert; //nowa linijka w tabeli;
Table1.Edit;
Table1.FieldByName('pole1').AsString := 'costam1';
Table1.Edit;
Table1.FieldByName('pole2').AsString := 'costam2'; //kilka wpisów w innych polach
with Table1 do
begin
Edit;
fs := TFileStream.Create('C:\ścieżkadopliku\plik.rozszerzenie', fmOpenRead);
bs := TBlobStream(CreateBlobStream(FieldByName('pole w bazie typu image'), bmWrite));
bs.CopyFrom(fs, 0);
bs.Free;
fs.Free;
Post;
end;
Table1.Active:=false;
Table1.Active:=true;