Entwickler-Ecke
Datenbanken - Fehler bei Zugriff auf SQLite-Datenbank
Hänsel - Mi 05.05.21 12:44
Titel: Fehler bei Zugriff auf SQLite-Datenbank
Hallo, kann mir hier jemand weiterhelfen?
Ich arbeite mit der Datenbank "SQLite-Studio". Wenn ich nach dem hinzufügen von Datensätzen mit der Abfrage komme:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| DataModule_Tabellen.FDConnection1.Connected:=true; DataModule_Tabellen.FDQuery_Einlesung.Close; DataModule_Tabellen.FDQuery_Einlesung.SQL.Text:='Select * From Einlesung Where Feld1 order by Feld1 '; DataModule_Tabellen.FDQuery_Einlesung.Open; Satz:=DataModule_Tabellen.FDQuery_Einlesung.RecordCount; Label1.Caption:=IntToStr(Satz); |
bekomme ich das Ergebnis (Anzahl der Datensätze) angezeigt. Wenn keine Datensätze hinzugefügt werden, bekomme ich mit dieser Abfrage keine Rückmeldung von der Anzahl der Datensätze. Das gleiche gilt, wenn ich das Programm öffne um zu sehen wieviel Sätze sind vorhanden. Was habe ich da eventuell falsch gemacht? Bei Delphi habe ich die Version '10.1 Berlin'
Schon mal Danke im Voraus
Hänsel
Moderiert von Th69: Titel geändert (war "SQLite-Studio").
Moderiert von Th69: Delphi-Tags hinzugefügt
Th69 - Mi 05.05.21 14:07
Hallo,
deine Where-Anweisung ist falsch - du solltest eigentlich einen Datenbankfehler erhalten.
PS: Die Datenbank heißt nur "SQLite"!
Hänsel - Mi 05.05.21 15:19
Danke für die Antwort,
es funktioniert auch nicht ohne der "Where" Anweisung.
Der Name heißt doch "InstallSQLiteStudio-3.2.1"
vielleicht kann hier noch jemand Hinweise geben.
Danke
Hänsel
Th69 - Mi 05.05.21 15:57
Du meinst 'Select * From Einlesung order by Feld1'?
Dies sollte zumindestens syntaktisch in Ordnung sein.
Hast du die Anweisung denn mal direkt im SQLite-Studio ausgeführt?
PS: SQLite-Studio ist doch nur das Programm, mit dem du die SQLite-Datenbank bearbeiten kannst - von Delphi greifst du aber nur noch direkt auf die SQLite-Datenbank(datei) zu.
Hänsel - Mi 05.05.21 16:18
ja, nach dem Einlesen aller neuen Daten, können Select Anweisungen bzw. Abfragen durchgeführt werden und auch das Zählen der Datensätze funktioniert (aber nur nach dem Einlesen der Daten). Nur wenn ich das Programm öffne (und noch keine Daten eingelesen habe) kann die Anweisung zum zählen der Daten herausgeben werden, aber dabei passiert nichts.
Delphi-Quelltext
1:
| Satz:=DataModule_Tabellen.FDQuery_Einlesung.RecordCount; |
Hänsel
Moderiert von Th69: Delphi-Tags hinzugefügt
Th69 - Mi 05.05.21 16:28
Wird überhaupt nichts im Label angezeigt oder 0?
Fängst du Exceptions in deinem Programm (und verwirfst diese)?
Ansonsten debugge doch mal Zeile für Zeile.
Hänsel - Mi 05.05.21 18:07
Ich denke zumindest den Fehler erkannt zuhaben. Es lag an der Einstellung der Komponente 'FDQuery1'. Hier muss nur die Anzahl der Datensätze geändert werden. Als Standard stehen dort 50 . Ich habe diese auf 100000 gesetzt und es funktionierte sofort.
Ich bedanke mich bei Euch für die Mithilfe.
Danke
Hänsel
Th69 - Do 06.05.21 09:10
Sehr eigenartig.
Sinspin - Do 06.05.21 12:37
Hallo,
wenn es dir an der Stelle nur darum ging die Anzahl der Datensätze zu ermitteln ist der Aufruf eh mehr als ungeeignet.
Da würde SELECT Count(*) AS C FROM Einlesung deutlich mehr sinn machen.
Für gewöhnlich ist ein DB Zugriff auf Vermeidung von unnötigen Zugriffen und Datentransfers ausgelegt.
Soweit RecordCount nicht als Funktion der Datenbank untersützt wird, liefert ein Aufruf bei den meißten DB Komponenten nur die Größe des geladenen Puffers zurück.
Es sei denn man hat nach dem Öffnen via query.Last dafür gesorgt das einmal alles übertragen wurde. Oder verwendet eh FetchAll und lädt das Ergebnis der kompletten Abfrage in den lokalen Speicher.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!