SQLite Alle Tabbeln anzeigen die es in der Datenbank gibt ?

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

SQLite Alle Tabbeln anzeigen die es in der Datenbank gibt ?

Beitrag von pluto »

Hallo,
ich möchte gerne alle Tabellen anzeigen die es in der Datenbank gibt.
Habe im Internet gesucht aber leider nichts gefunden was gehen würde:
Sqlite3Dataset2.ExecSQL('show tables')
da gibt es nur eine Fehler Meldung das die Syntax falsch ist.

Gibt es nur ein Weg ?
eine Feste Tabelle erzeugen in der die Anderen Tabellen drin sind ?
ich meine sowas:
Feste Tabelle:
Tabelle1=idTab1
Tabelle2=idTab2
Tabelle3=idTab3
Tabelle4=idTab4

idtab1:
Daten
und soweiter
ich dachte es würde einen schöneren weg geben.
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Das steht garantiert alles in der Datenbankdokumentation

http://www.sqlite.org/docs.html

leider nur in english aber ich denke man muss nicht alles lesen um ein verständnis dafür zu entwickeln wenn man ein wenig mit sql zu tun hatte
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich habe da schon reingeschaut, leider steht da nix drin, was mir weiter Helfen könnte. Ich habe auch noch andere Probleme mit dieser Datenbank.
z.b. möchte ich auch noch zu einem Field mehre Sachen hinzufügen beispiel:
Tabelle1:
Fieldname=F2,F3,F4
,,,,
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

OK, zu deinem ersten Problem wozu brauchst du das ?
Sicher um zu prüfen ob eine Tabelle schon existiert bevor du sie erstellst ?!

Das geht mit
C R E A T E T A B L E ... I F N O T E X I S T S

wie übrigendes in den meisten SQL Datenbanken.
steht alles in der Doku.

Das mit dem hinzufügen zum Feld versteh ich nicht.
Wie hinzufügen ??
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Hallo,
Danke für deine Antwort:
Sicher um zu prüfen ob eine Tabelle schon existiert bevor du sie erstellst ?!
Eigentlich wollte ich alle Enthaltene Tabellen auflisten in einer VST Komponente.
mehr nicht.
Das mit dem hinzufügen zum Feld versteh ich nicht.
Wie hinzufügen ??
Ich habe z.b. bei einer Tabelle Drei Felder:
Key(PrimerKey), Text, Text2.
aber jetzt möchte ich Text3 hinzufügen

Edit1:
Bis jetzt habe ich nur wenig mit Datenbanken gearbeitet.
Ich habe mir meistens eigene kleine Datenbanken geschrieben für mein zweck.
Habe gestern mal eins angefangen:
[Root]
Item1=Eintrag1,submenu
Item2=Eintrag2
Item3=Eintrag3,submenu
Item4=Eintrag4

[item3]
Item31=Item31
Item32=Item32
Item33=Item33,submenu
Item34=Item34
Item35=Item35

[item33]
item331=item331
item332=item332
item333=item333
item334=item334
item335=item335

[Item1]
Dis ist der Datensatzt zu Eintrag 1
Test Test Test
Item1A=item1A,submenu
Item1B=item1B
Item1C=item1C
Item1D=item1D

[Item1A]
Item1A11=Item1A11
Item1A22=Item1A22,submenu
Item1A33=Item1A33
Item1A44=Item1A44

[Item1A22]
Item1A21=Eintrag 1A21
Item1A22=Eintrag 1A22
Item1A23=Eintrag 1A23
Item1A24=Eintrag 1A24
Item1A25=Eintrag 1A25
Item1A26=Eintrag 1A26
Item1A27=Eintrag 1A27

[Item3]
Item1A31=Item1A31
Item1A32=Item1A32
Item1A33=Item1A33
Item1A34=Item1A34
[
Daraus wird ein Baum in einer VST erzeugt:
ich lese zuerst die root Einträge
Wo ein Submenu steht wird ein + gemacht bei.
Wenn ich darauf klicke wird nach der angeben ID gesucht. Sobald sie gefunden wurde wird die Komplete Tabelle Hinzugefügt.

Sowas wollte ich mit der Datenbank machen, geht das ?
Wenn ja wie ?

Edit1:
Die ID ist der wert vor dem = Zeichen. Zum einlesen nutze ich keine Stringlist oder TIniFiel.
Ich mache es mit TextFile selbst.
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Soweit ich gesehen habe kannst du die Tabellen in einer SQLite Datenbank nicht listen jedenfalls hab ich keinen dokumentierten Befehl dafür gefunden. Felder in eine Tabelle einfügen kannst du mit ALTER schau dir das mal näher an. Willst du etwa noch ein Datenbank Administrations tool baun ? Davon gibts doch schon 100.000 ?!
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

nein. ich möchte was anders:
ich möchte mir ein Programm schreiben, womit ich z.b. Code Schnipsel oder aber auch Notzien wofür ich meisten 1000. von Dateien angelegt habe speichern. Oder aber meiner Passwörter.

Alle dies soll in einer Datei unterkommen.
ich habe z.b. folgende Strucktur:
Tagebuch:
- Januar
- Februar
- März
...
Passwörter:
Foren: Usrname, Password, Forum
Linux
-root password
-plutos passwort

und soweiter.

Gut, ich könnte auch ein Fertige Archiv Format nehmen z.b. ZIP.
Aber ich würde gerne sowas mit einer Datenkank machen.

Ich dachte mir eine DB sei dafür genau das richtige.

Ich hoffe du Verstehst jetzt mein Ziel.

Eigentlich wollte ich kein neues Projekt anfangen, aber als ich wieder über DB's gestolpert bin hat mich das wieder gefesselt.

Ich hoffe das ich noch zwischendurch bei meiner GUI weiter machen werde.

Ich werde aber erstmal mein eigens Format bauen. Denke ich.

Mit der SQlite habe ich noch Probleme.
Unter Delphi konnte ich sie lösen, aber unter Lazarus wie gesagt leider nicht ! Weil ich kein Beispiel habe. Nach dem ich mich richten könnte.
MFG
Michael Springwald

geodreieck24
Beiträge: 1
Registriert: Mo 21. Jul 2008, 20:15

Die Lösung!

Beitrag von geodreieck24 »

Falls noch jemand die Lösung sucht:

Code: Alles auswählen

SELECT name FROM sqlite_master WHERE type = 'table'
Getestet mit SQLite 2.1 :D
Weiß aber nicht, obs mit SQLite3 auch geht!

(Quelle: http://www.sqlite.org/cvstrac/wiki?p=SqliteWikiFaq" onclick="window.open(this.href);return false;)

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ja, geht.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten