Describe Table mit SQLITE3 (ZEOS)

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Lorca
Beiträge: 12
Registriert: Di 3. Nov 2020, 12:25

Describe Table mit SQLITE3 (ZEOS)

Beitrag von Lorca »

Hallo zusammen,

gerne würde ich die Struktur einer DB Tabelle ermitteln. Hierzu dient der Befehl DESCRIBE.
Stell ich jedoch diesen Befehl in der Query.SQL ein. kommt laufend ein Fehlerpopup hoch: "SQL Logic Error"

Was muss ich machen damit ich diese DDL Informationen in einem MEMO bzw. Grid anzeigen kann?

Kann mir jemand dazu helfen? bzw. URLs benennen die mir weiter helfen?

Viele Grüße
Lorca

Hier mal meine *.lfm Datei

Code: Alles auswählen

object Form1: TForm1
  Left = 436
  Height = 802
  Top = 125
  Width = 855
  Caption = 'Form1'
  ClientHeight = 802
  ClientWidth = 855
  DesignTimePPI = 120
  LCLVersion = '2.0.10.0'
  object BTN_DB_Connect: TButton
    Left = 16
    Height = 31
    Top = 32
    Width = 120
    Caption = 'DB Verbinden'
    TabOrder = 0
  end
  object BTN_DB_Close: TButton
    Left = 160
    Height = 31
    Top = 32
    Width = 168
    Caption = 'Verbindung lösen'
    TabOrder = 1
  end
  object DBGrid1: TDBGrid
    Left = 16
    Height = 248
    Top = 272
    Width = 768
    Color = clWindow
    Columns = <>
    DataSource = DS
    TabOrder = 2
  end
  object DS: TDataSource
    DataSet = ZQRY
    Left = 128
    Top = 72
  end
  object ZCON: TZConnection
    ControlsCodePage = cCP_UTF8
    AutoEncodeStrings = True
    Properties.Strings = (
      'AutoEncodeStrings=ON'
    )
    Connected = True
    Port = 0
    Database = 'Z:\Dev\PRJ\Space\Data\Space.db'
    Protocol = 'sqlite-3'
    Left = 16
    Top = 72
  end
  object ZQRY: TZQuery
    Connection = ZCON
    ReadOnly = True
    SQL.Strings = (
      'DESCRIBE Table Shild  TYPE = COLUMNS'
    )
    Params = <>
    Left = 72
    Top = 72
  end
end
Zuletzt geändert von m.fuchs am Do 3. Dez 2020, 10:28, insgesamt 1-mal geändert.
Grund: Code Higlighter hinzugefügt

Socke
Lazarusforum e. V.
Beiträge: 2835
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Describe Table mit SQLITE3 (ZEOS)

Beitrag von Socke »

SQLite stellt das DDL-Statement in einer Tabelle sqlite_schema zur Verfügung. Du musst also anstatt DESCRIBE TABLE "Shild" eine Abfrage forumulieren: select sql from "sqlite_schema" where "type" = 'table' and "name" = 'Shild'
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

MmVisual
Beiträge: 1149
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 2.0.10 FPC 3.2)
CPU-Target: 32/64Bit

Re: Describe Table mit SQLITE3 (ZEOS)

Beitrag von MmVisual »

Ich habe das Gefühl du machst das viel zu kompliziert, Zeos bietet von Haus aus schon einiges...
Vorteil: Das funktioniert mit allen Datenbanken, nicht nur mit SQLite.

Code: Alles auswählen

TZConnection.GetTableNames()  //<<<< alle Tabellennamen auslesen

//Mit einer 
TZQuery.SQL.Text := 'SELECT * FROM <tabelle> WHERE 0=1'; //<< Tabellestruktur ohne Daten
TZQuery.Open
TZQuery.GetFieldNames() //<<<< alle Felder Namen auslesen

Case q.FieldByName('<Feld>').DataType Of //<<<< Anhand vom Datentyp was machen
: : :
PS: Bitte das nächste mal Code als Code markieren, sonst ist er sehr schlecht lesbar.

VG Markus

Lorca
Beiträge: 12
Registriert: Di 3. Nov 2020, 12:25

Re: Describe Table mit SQLITE3 (ZEOS)

Beitrag von Lorca »

Hallo MmVisual

ganz herzlichen Dank für Deine schnelle Antwort.
Die ist zwar ganz Klasse und ist mir als SQL Anfänger auch für die Zukunft sehr hilfreich (nun weis ich wie ich an die Feldnamen und Datentypen komme) aber leider löst dies nicht mein Problem,
Ich benötige die DDL Informationen wie sie z.B. beim Create Table benötigt werden.

Also z.B:
ID INTEGER PRIMARY KEY
NOT NULL,
ID_Shild_Typ INTEGER REFERENCES Shild_Typ (ID) MATCH SIMPLE,
Wirkungsgrad INTEGER,
Kappa DOUBLE,

Herzlichen Dank und viele Grüße
Lorca
PS: Deinen Hinweis mit der Farblichen Darstellung werde ich beim nächsten mal berücksichtigen. Danke :)

Lorca
Beiträge: 12
Registriert: Di 3. Nov 2020, 12:25

Re: Describe Table mit SQLITE3 (ZEOS)

Beitrag von Lorca »

Hallo Socke,

auch Dir meinen ganz herzlichen Dank :)
Habe nun auch gefunden wie ich an die gelesenen Daten komme.
Eine DBMEMO Komponente stellt dann diese Daten dar.
Echt coole Info.

Ganz herlichen Dank und viele Grüße :)
Lorca

gladio
Beiträge: 129
Registriert: Sa 21. Jun 2014, 06:15
OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
CPU-Target: 64Bit
Wohnort: Rügen

Re: Describe Table mit SQLITE3 (ZEOS)

Beitrag von gladio »

Du kannst auch einfach ein fertiges SQLite-Admin-Tool nehmen.
Neben Erstellen, Bearbeiten, Editieren... liefern die auch die tabellenstrukturen als SQL.
z.B. SQLiteadmin

lzuser
Beiträge: 97
Registriert: Sa 20. Jun 2009, 16:00
OS, Lazarus, FPC: Win10 20H2, Laz 2.0.8 auch Linux Mint Mate 20, Laz 2.0.6
CPU-Target: 64Bit

Re: Describe Table mit SQLITE3 (ZEOS)

Beitrag von lzuser »

In meinem selbst geschriebenen MySQLiteAdmin gebe ich den SQL-Befehl ein:

Code: Alles auswählen

PRAGMA table_info(tabname)
Wenn ich dich richtig verstanden habe, erhalte ich so eine Tabelle mit allen von dir gewünschten Daten.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4373
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Describe Table mit SQLITE3 (ZEOS)

Beitrag von af0815 »

Grundlagen in meiner Signatur
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Lorca
Beiträge: 12
Registriert: Di 3. Nov 2020, 12:25

Re: Describe Table mit SQLITE3 (ZEOS)

Beitrag von Lorca »

gladio hat geschrieben:
Do 3. Dez 2020, 14:37
Du kannst auch einfach ein fertiges SQLite-Admin-Tool nehmen.
Neben Erstellen, Bearbeiten, Editieren... liefern die auch die tabellenstrukturen als SQL.
z.B. SQLiteadmin
Hallo gladio ,

danke für Deine Antwort.
Ja, ich selber nutze auch SQLITEStudio. Aber der Einsatz solcher Tools bringt mich in meinem Know How nicht wirklich weiter :)
Da ich will lernen und wissen wie etwas gemacht wird und warum muss ich tiefer gehen und recherchieren.

Viele Grüße
Lorca

charlytango
Beiträge: 218
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz 2.0 fixes FPC 3.2 fixes
CPU-Target: Win 32Bit, 64bit
Wohnort: Wien

Re: Describe Table mit SQLITE3 (ZEOS)

Beitrag von charlytango »

ich empfehle für solche Zwecke (Administrieren UND lernen) HeidiSQL.
https://www.heidisql.com/
Damit kann man eine Vielzahl von Datenbanken (unterschiedlichsten Typs) administrieren.

Und netterweise werden die dazu nötigen SQL Befehle in einem Logfenster mitgeschrieben..
Wenn man mehr wissen mag kan man die SQL-Anweisungen auch gleich in einem Direkteingabefenster ausprobieren.

Ach ja, ist gratis, als portable Version verfügbar, geschrieben in Delphi und den Source gibts auch.

Antworten