Forum: PC-Programmierung Verständnisfrage SQLite/letzter Eintrag suchen


von DSausW (Gast)


Lesenswert?

Hallo Leute,

ich hätte zu folgendem Problem gerne eine Bestätigung,
oder einen Tip:
In einer SQLite-Datenbank benötige ich immer den Inhalt (Zähler) einer
bestimmten Spalte der letzten Zeile beim Start einer Session.
Programmiert wird in C#.
So wie ich das in den Foren gelesen und scheinbar verstanden habe,
muss man, nach dem Öffnen der Datenbank erst einmal mit "insert"
eine Zeile einfügen, um dann mit "last_row_id" die letzte Zeile
zu identifizieren (minus 1)- dann hätte ich den Wert (ausgelesen).

Gibt es da vielleicht eine bessere Methode ??

Vielen Dank für Eure Anregungen !

Dietmar

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Wie wär's damit:
1
SELECT id FROM table ORDER BY id DESC LIMIT 1;

Wenn id ein Index ist sollte es eigentlich kein Problem für SQLite sein 
das effizient umzusetzen.

Aber: willst du wirklich nach der ID sortieren, oder zweckentfremdest du 
die id als Erstellungsdatum? Kann man schon machen, man sollte sich aber 
darüber im Klaren sein dass IDs von gelöschten Zeilen u.U. 
wiederverwendet werden können. Je nach Anwendung könnte ein Timestamp 
also sinnvoller (und mit Index auch nicht langsamer) sein.

von DSausW (Gast)


Lesenswert?

Hallo Andreas,

besten Dank erst einmal.
Ich habe mich da wohl noch nicht ganz klar ausgedrückt.
Nicht Sortieren steht im Vordergrund, sondern die Ermittlung des 
MaxWertes
der betreffenden Spalte, der in der letzten Zeile stehen muss.
Dieser Wert wird aufsteigend von einer anderen Applikation in die
Datenbank hineingeschrieben (komplette Zeile mit Messwerten).
Die Werte dürfen nie verändert werden. Diese Applikation kann aber
beim Start nicht den letzten Wert ermitteln, so soll mein C#-Programm
dies erledigen und den nächsten Wert übergeben.

Hoffentlich ist das annähernd verständlich.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Ermittlung des Maximalwertes erreicht man doch durch Sortieren.

von Dietmar S. (dsausw)


Lesenswert?

Logisch--
ist wohl ein wenig zu heiss für mich !

von PS (Gast)


Lesenswert?

> Wie wär's damit:
> SELECT id FROM table ORDER BY id DESC LIMIT 1;

Das geht noch einfacher:
1
SELECT MAX(id) FROM table;

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Dann braucht man allerdings noch eine zweite Abfrage um die eigentlichen 
Daten der Zeile zu bekommen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.