🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi
Article #346733

Re: DataSet from REST/JSON

#346733
From: Jan Drawski
Date: Thu, 30 Aug 2018 20:41
65 lines
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
Technical Details
Message-ID: <5b88568c$0$621$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!newsreader4.netcologne.de!news.netcologne.de!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <489ed506-1d02-4b3f-a844-38869bcd600e@googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!newsreader4.netcologne.de!news.netcologne.de!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Subject: Re: DataSet from REST/JSON
Newsgroups: pl.comp.lang.delphi
References: <489ed506-1d02-4b3f-a844-38869bcd600e@googlegroups.com>
From: Jan Drawski <dfghdfg@o2.pl>
Date: Thu, 30 Aug 2018 22:41:47 +0200
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1
MIME-Version: 1.0
In-Reply-To: <489ed506-1d02-4b3f-a844-38869bcd600e@googlegroups.com>
Lines: 70
Message-ID: <5b88568c$0$621$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 37.47.42.21
X-Trace: 1535661708 unt-rea-a-02.news.neostrada.pl 621 37.47.42.21:7872
X-Complaints-To: abuse@news.neostrada.pl
X-Received-Bytes: 2998
X-Received-Body-CRC: 4016813933
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit