Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Hilfe bei sqlite und Zeos Komponente gesucht (https://www.delphipraxis.net/151453-hilfe-bei-sqlite-und-zeos-komponente-gesucht.html)

Shubit 19. Mai 2010 10:20

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Damit nicht jeder immer andere Variablennamen verwendet geb ich mal einen Anfang vor.

Delphi-Quellcode:
  gCon := TZConnection.Create(nil);
  Q := TZQuery.Create(nil);

  with gCon do
  begin
    Protocol := 'sqlite-3';
    Database := 'asdf.db';
    Connect;
  end;

  Q.Connection := gCon;
Dabei sind
Delphi-Quellcode:
    gCon: TZConnection;
    Q: TZQuery;
private Variablen einer der Klasse in der das ganze geschehen soll.
Die Klasse soll dann später für das Handle einer "Vokabeldatenbank" zuständig sein, sodass ich beim interface nicht mehr mit sqlite beschäftigen muss.

1. private
Delphi-Quellcode:
function TableExists(mTable: String): Boolean;
begin
Q.SQL.Add('SHOW TABLE STATUS LIKE `'+mTable+'`');
Q.ExecSQL;
end;
Wo steht der Rückgabewert und lese ich diesen aus (ins result)

2. gleiches Problem wie bei 1. nur das ich diesmal die Zeilen einer Tablle zählen würde
Q.SQL.Add('SELECT count(*) from `'+mTable+'`');

DeddyH 19. Mai 2010 10:35

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Delphi-Quellcode:
function TableExists(mTable: String): Boolean;
begin
  Q.SQL.Add('SHOW TABLE STATUS LIKE `'+mTable+'`');
  Q.Open;
  //wenn ein Ergebnis kommt, steht es nun auf dem ersten Datensatz, ansonsten ist EOF true
  while not Q.EOF do
    begin
      //soll den Wert des ersten Feldes des aktuellen Datensatzes ausgeben
      ShowMessage(Q.Fields[0].AsString);
      //nächster Datensatz
      Q.Next;
    end;
  Q.Close;
end;

mkinzler 19. Mai 2010 11:11

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Wenn schon add, dann vorher löschen aber besser
Delphi-Quellcode:
Q.SQL.Text := 'SHOW TABLE STATUS LIKE `'+mTable+'`';
Zudem würde sich die Verwendung von (SQL-)Parametern anbieten.

BTW.: Ohne Grundlagenwissen (Tutorials) ist die ganze Chose ein Himmelfahrtskommando!

Shubit 19. Mai 2010 11:47

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Delphi-Quellcode:
procedure TVocabularyBook.TableExists(mTable: String);
begin
  Q.SQL.Text := 'SHOW TABLE STATUS LIKE `'+mTable+'`;';
  Q.Open;
  //wenn ein Ergebnis kommt, steht es nun auf dem ersten Datensatz, ansonsten ist EOF true
  while not Q.EOF do
    begin
      //soll den Wert des ersten Feldes des aktuellen Datensatzes ausgeben
      ShowMessage(Q.Fields[0].AsString);
      //nächster Datensatz
      Q.Next;
    end;
  Q.Close;
end;
Jetzt meckert er beim Q.Open aber das er ZDbcSqLiteUtils.pas nicht findet. Ich hab auch schon nachgeschaut, ich hab zwar eine ZDbcSqLiteUtils.dcu aber keine ZDbcSqLiteUtils.pas
Ich benutze übrigens Delphi 2010 mit zeos 7.0.0 alpha.

mkinzler 19. Mai 2010 11:59

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Die DCU wird dann von einer anderen Delphiversion stammen

Shubit 19. Mai 2010 13:08

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
nein die hab ich selbst kompiliert ...

pmoegenb 19. Mai 2010 13:23

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Zitat:

Zitat von Shubit
Jetzt meckert er beim Q.Open aber das er ZDbcSqLiteUtils.pas nicht findet. Ich hab auch schon nachgeschaut, ich hab zwar eine ZDbcSqLiteUtils.dcu aber keine ZDbcSqLiteUtils.pas
Ich benutze übrigens Delphi 2010 mit zeos 7.0.0 alpha.

Die Datei müsste sich im Unterverzeichnis src\dbc befinden.

Shubit 19. Mai 2010 13:40

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
danke, behoben

Jetzt kommt der Fehler "SQL Error: SQL logic error missing database"

Shubit 20. Mai 2010 13:56

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
was mach ich nun?

Shubit 21. Mai 2010 00:07

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Delphi-Quellcode:
  Q.SQL.Text := 'SELECT count(*) FROM sqlite_master WHERE name="main";';
  Q.Open;
  if Q.Fields[0].AsInteger > 0 then
  begin
    Q.Close;
    Q.SQL.Text := 'SELECT v_build FROM main;';
    Q.Open;
    if not Q.EOF then
      b := vBuild > Q.FieldByName('v_build').AsInteger
    else
      b := true;

    if b then
      UpdateSQL()
  end
  else
  begin
    Q.Close;
    Q.SQL.LoadFromFile('C:\Users\Marvin\Desktop\structure.sql');
    Q.Open;
  end;
Das zweite Q.Open (Zeile 7) verursacht ebenfalls den Fehler "SQL Error: SQL logic error missing database". Woran liegt das?


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:46 Uhr.
Seite 2 von 5     12 34     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz