Thread View: pl.comp.lang.delphi
3 messages
3 total messages
Started by ExM
Tue, 28 Aug 2018 08:28
DataSet from REST/JSON
Author: ExM
Date: Tue, 28 Aug 2018 08:28
Date: Tue, 28 Aug 2018 08:28
4 lines
1516 bytes
1516 bytes
Mam pytanie, jak realizujecie pobieranie danych do DataSet'ów w przypadku konieczności pobierania ich przez REST / JSON ? Czy są do tego jakieś komponenty czy trzeba się ręcznie pobawić w formatowanie i wczytać dane np. do jakiejś wirtualnej tabeli (MemoryTable) ?
Re: DataSet from REST/JSON
Author: wloochacz
Date: Thu, 30 Aug 2018 16:09
Date: Thu, 30 Aug 2018 16:09
17 lines
1872 bytes
1872 bytes
W dniu 2018-08-28 o 10:28, ExM pisze: > Mam pytanie, > jak realizujecie pobieranie danych do DataSet'ów w przypadku konieczności pobierania ich przez REST / JSON ? Nie realizujemy, bo to niepotrzebne :) > Czy są do tego jakieś komponenty czy trzeba się ręcznie pobawić w formatowanie i wczytać dane np. do jakiejś wirtualnej tabeli (MemoryTable) ? A jakże, są. Rozuumiem, że na to nie wpadłeś? http://docwiki.embarcadero.com/Libraries/Tokyo/en/REST.Response.Adapter.TRESTResponseDataSetAdapter FireDAC coś tam ma, mORMot też ma. Pytanie tylko czy to Twój serwer czy obcy? Jeżeli obcy to dlaczego nie ODATA? https://www.cdata.com/drivers/odata/firedac/ -- wloochacz
Re: DataSet from REST/JSON
Author: Jan Drawski
Date: Thu, 30 Aug 2018 20:41
Date: Thu, 30 Aug 2018 20:41
65 lines
3292 bytes
3292 bytes
W dniu 2018-08-28 o 10:28, ExM pisze:
> Mam pytanie,
> jak realizujecie pobieranie danych do DataSet'ów w przypadku konieczności pobierania ich przez REST / JSON ?
Osobiście właśnie też zaczynam zabawę z mORMotem.
> Czy są do tego jakieś komponenty czy trzeba się ręcznie pobawić w formatowanie i wczytać dane np. do jakiejś wirtualnej tabeli (MemoryTable) ?
Jeszcze nie korzystałem ale w pliku mORMot i SynCrossPlatformREST są
klasy TSQLTableJSON. TSQLTableJSON dziedziczy z TSQLTable. Mozna znaleźć
np: "UpdateFrom(const aJSON: RawUTF8"...
Można napisać SQLa wyciągającego strukturę tabeli i użyć Execute.
Trochę druciarstwa:
Props.GetFields('users'{table name}, Fields);
for I := 0 to Length(Fields) - 1 do
writeln(
Fields[I].ColumnName + ', ' +
Fields[I].ColumnTypeNative + ', ' +
IntToStr(Fields[I].ColumnLength) + ', ' +
ColumnTypeToStr(Fields[I].ColumnType)
);
Jeszcze coś z tej kategorii:
var
Rows : ISQLDBRows; // - from Execute
...
for I := 0 to Rows.ColumnCount - 1 do
begin
writeln(
Rows.ColumnName(I) + ', ' +
ColumnTypeToStr(Rows.ColumnType(I))
);
end;
Choć tu typy wyglądaja już tak (TSQLDBFieldType): ftUnknown, ftNull,
ftInt64, ftDouble, ftCurrency, ftDate, ftUTF8, ftBlob.
Z tego co widzę, to raczej nie przesyła się struktur, choć, odbiegając
trochę od tematu, jak się np. zapisuje zawartość FDMemTable do
strumienia czy pliku to typy danych są choć format tego moim zdaniem
jest mało czytelny.
Przy okazji, gdzieś znalazłem, może komuś się przyda, choć ja chwilowo
nie widzę zastosowania:
procedure TestQuery(ODBCConnProp: TSQLDBConnectionProperties);
var
SQLDBConnection: TODBCConnection;
Q: TQuery;
begin
SQLDBConnection := TODBCConnection.Create(ODBCConnProp);
Q := TQuery.Create(SQLDBConnection);
try
Q.SQL.Clear; // optional
Q.SQL.Add('select * from dbo.Station');
Q.Open;
finally
Q.Free;
end;
end;
--
Pozdrawiam
Janek
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads