AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

SQLite unter Android

Ein Thema von oakley · begonnen am 26. Mär 2019 · letzter Beitrag vom 2. Jul 2019
Antwort Antwort
Rollo62

Registriert seit: 15. Mär 2007
4.175 Beiträge
 
Delphi 12 Athens
 
#1

AW: SQLite unter Android

  Alt 1. Jul 2019, 14:58
Ich arbeite jetzt weder mit UniDacx, noch mit TMS, aber es müsste so etwas in der Art wie unten dort geben um das UI-Update beim Zeicnen zu verhindern, so das erst nach dem ganzen Update der Screen upgedatet wird.
Das s.u. könnte das Problem erklären wenn Du schon sehr viele Datensätze in der DB hast.

Super onShow funktioniert es mit UniConnection1.Connect;
Code:
    TMSFMXGrid1.BeginUpdate;
    UniQuery1.ControlsDisable; // Kenne UniDac nicht, müsste es aber geben
    try

   
    finally
        UniQuery1.ControlsEnable;
        TMSFMXGrid1.EndUpdate;
    end;
Ob dein Ansatz mit Execute funktioniert bei UniDac habe ich nicht gecheckt, aber Du köntest stattdessen einfach UniQuery1.Active := True; setzen, es könnte aber auch alles Mögliche bei der Konfiguration in die Hose gehen.

Wenn die DB noch leer ist würde ich erstmal debuggen bis zu welcher Stelle Du kommst, um festzustellen was genau jetzt nicht geht.

Zitat:
Rollo Du schreibst Du legst Dir die Aktionen zeitversetzt. Machst Du das mit Timern?
Im Prinzip ja, ich habe mir da aber eine bequeme, threadsichere Klasse drumrum gekapselt.
Mit dieser Klasse kann ich eine anonyme Prozedur aufrufen, die dann mit einem Delay aufgerufen wird um Timings zu erzeugen.

Im Prinzip gibt es für solche Zwecke auch den TIdleWorker von Sir Rufo, ich hatte damit allerdings irgendwann mal ein Problem unter Android, dass die IdleMessages nicht aufgerufen wurden, seitdem bin ich wieder auf die Timerversion umgestiegen.
Trat immer nur selten und sporadisch auf, musste aber deswegen von dem IdleWorker wieder Abstand nehmen.
Eigentlich sollte der TIdleWorker aber super funktionieren, ich habe ihn nur danach nicht mehr getestet
(guter Hinweis das ich mir das nochmal auf die ToDo Liste schreibe ).

Geändert von Rollo62 ( 1. Jul 2019 um 15:02 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: SQLite unter Android

  Alt 1. Jul 2019, 18:32
Hallo,
Zitat:
UniQuery1.Execute;
Müsste es nicht Open (und zum Schluss dann Close) ein.
Heiko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.876 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: SQLite unter Android

  Alt 1. Jul 2019, 21:33
Zitat:
Müsste es nicht Open (und zum Schluss dann Close) ein.
Ja. Den ein Execute liefert keine Ergebnismenge zurück.
Markus Kinzler
  Mit Zitat antworten Zitat
oakley

Registriert seit: 15. Aug 2005
287 Beiträge
 
#4

AW: SQLite unter Android

  Alt 2. Jul 2019, 08:24
Ist das Open - Close eventuell für Android spezifisch?
Denn wenn ich etwas für die Windows Plattform mache bekomme ich eine Ergebnismenge mit Execute.

LG

Mirko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.876 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: SQLite unter Android

  Alt 2. Jul 2019, 08:41
Zitat:
Ist das Open - Close eventuell für Android spezifisch?
Nein. DataSet.Execute ist für DML-Abfragen ( Insert, Update Delete). Es wird kein Ergebnis zurückgeliefert ( höchtens als out-Parameter).
Bei DataSet[I].Open wird ein Curor geöffnet, durch den man clienseitig navigieren kann. Dies ist weder datenbank- noch OS-spezifisch.
Markus Kinzler
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
984 Beiträge
 
Delphi 6 Professional
 
#6

AW: SQLite unter Android

  Alt 2. Jul 2019, 08:41
Hmm..

Das hat mit Android nichts zu tun..

Datenbank SQL-Komponenten (von TDataSet abgeleitet) verwenden in der Regel folgendes:

- Execute
-> Für Insert/Update
-> Es kommt nur eine Rückmeldung über die Anzahl der geänderten Datensätze

- Open/Close
-> Für Select
-> Es wird eine Datenmenge (Records) zurück geliefert, bzw. (Close) wieder geschlossen.

Dies sollte bei allen TDataSets so funktionieren.

Wenn UniDac bei Execute eine Datenmenge liefert, dann dürfte dies UniDac Spezifisch sein..
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.175 Beiträge
 
Delphi 12 Athens
 
#7

AW: SQLite unter Android

  Alt 2. Jul 2019, 08:42
Nein, Open - Close oder Active True - False ist das Standardverhalten.
Was Unidac mit Execute macht kann ich nicht sagen, es solte obiges aber korrekt implementieren für alle Platformen.
Das kommt aus dem TDataSet.
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#8

AW: SQLite unter Android

  Alt 2. Jul 2019, 08:43
Es ist immer klug, die Dokumentation zu lesen, damit man weiß, was man zu erwarten hat und wann man es mit einem Bug zu tun hat.

Zitat:
Call the Execute method to execute an SQL statement on the server. If SQL statement is a SELECT query, Execute calls the Open method.
Folglich müsste hier ein Execute genauso gut wie ein Open sein.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz