Delphi-PRAXiS
Seite 1 von 2  1 2      

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 18. Mai 2010 18:30

Datenbank: sqlite • Version: 3 • Zugriff über: Zeos

Hilfe bei sqlite und Zeos Komponente gesucht
 
Hi, ich möchte einen Vokabeltrainer schreiben, der auf einer sqlite Datenbank basiert. Mit sqlite kenn ich mich bereits etwas aus (habe schon mit mysql und php gearbeitet), allerdings habe ich so gar keine Ahnung wie man sqlite jetzt in Delphi nutzt. Ich habe mir bereits die Zeos Komponenten installiert und suche jetzt ein gutes Tutorial dazu oder jemanden der mir etwas helfen würde, was vermutlich besser funktioniert als wenn ich meine 100 Fragen jetzt hier reinschreibe.

mkinzler 18. Mai 2010 19:09

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Um was geht es dir genau_
-SqLite
-Zeos
-Datenbankhandling in Delphi
was ganz anderes
?

Jens Hartmann 18. Mai 2010 19:17

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Hallo erstmal,

also Tutorials findest Du hier. Ansonsten kann ich nur die selbe Frage stellen wie Markus.

Gruß Jens

Shubit 18. Mai 2010 19:41

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Eher Datenbankhandling in Delphi. Also ich werde 2 Tabellen und eine Verknüpfungstabelle haben. Ich müsste die Tabellen erstellen, Daten eintragen (mit entsprechenden Verknüpfungen), Daten auslesen (einen Eintrag aus Tabelle 1 auswählen und alle damit Verknüpften Einträge aus Tabelle 2 auslesen - ich denk da wird man sowas wie Join nutzen können), Einträge ändern (einzelne/alle), ...
Die dafür nötigen SQL Befehle sind mir ungefähr bekannt, allerdings habe ich keine Ahnung wie ich das nun mit den Zeos Komponenten (sauber) umsetze und vor allem ist mir noch total unklar wo dann die Antworten der Datenbank stehen und wie ich auf diese Zugreife.

Und dazu habe ich hier noch keine guten Tutorials gefunden.

mkinzler 18. Mai 2010 19:46

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
http://www.delphi-treff.de/tutorials/datenbanken/

Shubit 18. Mai 2010 23:00

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Ja, aber so ganz das wahre ist das irgendwie nicht. Da steht zwar ne Menge Text, aber mir käm es ja eher auf Beispielcode an und deswegen wärs glaub ich cool wenn man wenn hätte denn man mal schnell über ICQ oder so fragen kann.

mkinzler 19. Mai 2010 06:50

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
In den Tutorials steht eigentlich alles:
-Allgemeines Datenbankhandling in Delphi
-Umgang mit Zeos
in Verbindung mit den Zeos spezifischen Anleitungen der Zeos-Seite sollte das doch kein Problem darstellen

Shubit 19. Mai 2010 07:13

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
jaja, dann danke für die "tolle" Hilfe ...

DeddyH 19. Mai 2010 09:46

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Was ist denn los? Wenn Du noch weitergehende Fragen hast, die über den Inhalt der verlinkten Tutorials hinausgehen, kannst Du sie gerne hier stellen. Meist dauert es nur unwesentlich länger, bis eine Antwort kommt, als wenn Du direkt über ICQ fragst. Außerdem bekommst Du so auch u.U. mehrere Sichtweisen und Lösungsansätze, was ja auch nicht zu unterschätzen ist. Von daher verstehe ich diese beleidigte Reaktion nicht.

Shubit 19. Mai 2010 10:06

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
a) es dauert schon länger (es unterbricht etwas im Programmierfluss)
b) es sind so ne Kleinigkeiten für die ich nicht immer einen Thread aufmachen möchte
c) ich kenne die Tutorials bereits und die erneute Hinweis auf diese war nicht sehr hilfreich

Trotzdem danke für eure Antworten

Ich lass mich ja gerne eines besseren belehren. Dann werd ich einfach alle Fragen die immer mal wieder so aufkommen hier reinschreiben.

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?

mkinzler 21. Mai 2010 05:29

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Zeig mal den Code, mit dem du die Verbindung zu SQLite aufbaust

Shubit 21. Mai 2010 07:13

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
wie er bereits auf Seite 1 steht ...

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

  with gCon do
  begin
    Protocol := 'sqlite-3';
    Database := mPath;
    Connect;
  end;

  Q := TZQuery.Create(nil);
  Q.Connection := gCon;

Shubit 21. Mai 2010 10:16

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
ja und dann sieht meine Datenbankstruktur jetzt so aus:
SQL-Code:
CREATE TABLE IF NOT EXISTS "main" (
  id                 integer PRIMARY KEY AUTOINCREMENT NOT NULL,
  v_major            integer,
  v_minor            integer,
  v_release          integer,
  v_build            integer,
  name               varchar(63),
  creation_date      datetime,
  last_training      datetime,
  sorting            integer,
  practice_system    integer,
  boxes              integer,
  asked_language     integer
);
CREATE TABLE IF NOT EXISTS "articles" (
  id          integer PRIMARY KEY AUTOINCREMENT NOT NULL,
  "language"  integer,
  article     varchar(31)
);
CREATE TABLE IF NOT EXISTS "words" (
  id            integer PRIMARY KEY AUTOINCREMENT NOT NULL,
  "language"    integer,
  article       integer,
  word          varchar(255),
  note          varchar(255),
  chance        float(10),
  added_on      datetime,
  last_training datetime,
  trials        integer,
  mistakes      integer,
  box           integer
);
CREATE TABLE IF NOT EXISTS "lanuages" (
  id                 integer PRIMARY KEY AUTOINCREMENT NOT NULL,
  "name"             varchar(63),
  "case_sensitive"   boolean,
  "control_articles" boolean,
  "word_count"       integer,
  "chance_sum"       float(20),
  "trials"           integer,
  "mistakes"         integer
);
Ist das so erstmal richtig, hat es eine Bedeutung ob ich die Spaltenname in "" sind oder nicht?

mkinzler 21. Mai 2010 10:21

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Quote diese doch auch mal in der Abfrage

Shubit 21. Mai 2010 12:59

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
ok, danke das behebt den Fehler mit den Datenbankzugriff

Muss ich die Anführungszeichen denn immer machen bzw. müsst ich sie beim Create Tabel nicht auch um jeden Spaltenname machen?

Shubit 21. Mai 2010 13:17

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
was genau ist der Unterschied zwischen SQL.Open und SQL.ExecSQL ?

mkinzler 21. Mai 2010 13:42

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Open liefert ein Ergebnis zurück

user0815 21. Mai 2010 13:43

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
http://www.delphipraxis.net/internal...=267244#267244

Forensuche
Link

mkinzler 21. Mai 2010 13:49

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Er sucht halt nicht gerne selber und hat auch keine Lust auf Tutorials, in denen diese Grundlagen geklärt werden.

Shubit 21. Mai 2010 15:54

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
mkinzler: wenn du nicht helfen willst, halt doch bitte einfach die Klappe

Ich hab nach dem Unterschied ohne Ergebnisse gegooglt und in den Tutorials die ich gelesen habe, haben die das immer einfach verwendet ohne mal den Unterschied zu erklären

mkinzler 21. Mai 2010 16:13

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Zitat:

Zitat von Shubit
mkinzler: wenn du nicht helfen willst, halt doch bitte einfach die Klappe

So nicht :warn:
Man könnte meinen, hier hilft dir niemand, was absolut nicht so ist. Nur zeigst du deinerseits keine wirkliche Eigeninitiative.
:wall:

Shubit 22. Mai 2010 18:28

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Wenn mir einer noch erklären könnte wann ich was für Anführungszeichen machen muss, wär das sehr nett, weil ich auch dazu nichts in den Tutorials gefunden habe.
Muss ich jetzt Spalten- und Tabellennamen grundsätzlich in "" packen?

DeddyH 22. Mai 2010 18:31

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Mit SQLite kenn ich mich nicht aus, aber wenn Du bei Firebird die Feldnamen in Anführungszeichen definierst, sind diese anschließend case-sensitive, d.h. man muss auf Groß- und Kleinschreibung achten.

Shubit 22. Mai 2010 19:36

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Zitat:

Zitat von mkinzler
Zitat:

Zitat von Shubit
mkinzler: wenn du nicht helfen willst, halt doch bitte einfach die Klappe

So nicht :warn:
Man könnte meinen, hier hilft dir niemand, was absolut nicht so ist. Nur zeigst du deinerseits keine wirkliche Eigeninitiative.
:wall:

Nein, nur du hast mir mit deiner einen Antwort so gar nicht geholfen und mit dem Beitrag auch nicht und ich bin sonst keiner der sonst sofort fragt. Also ich hab mir die meisten Tutorials die ich zum Thema gefunden habe durchgelesen (die auf Delphi Treff sicher), sprich entweder steht es nicht drin oder ich bin halt zu dumm es zu verstehen. In beiden Fällen würde ich mich über eine richtige Antwort von dir verstehen.

Shubit 25. Mai 2010 21:38

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Jo dank euer Hilfe und ein paar weiteren Dutzend Google Suchen nimmt das ganze langsam Form an. Nun würd ich gern eine Liste von Wörtern Darstellen. Eigentlich kein Problem: Einfach SQL Abfrage und dann einfach Wörter in eine TStringList warten, die TStringlist an das main Formular übergeben und dort kann man einer TListBox einfach die TStringList übergeben und fertig. Nun hät ich aber gern das die TListBox auch zu jedem Wort die id des Wortes weiß, wobei hier die id des Wortes nicht gleich des Index in der Liste ist. Wie regel ich das am besten? Neue Klasse die von TStringList ableitet und für jede Zeile noch ne id hat?

mkinzler 25. Mai 2010 21:48

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Nimm eine TlistView. Dann kannst du die ID oder einen Pointer auf eine Datenstruktur mit weiteren Angaben in der Eigenschaft .Data packen

DeddyH 26. Mai 2010 08:35

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Alternativ kannst Du Dir auch eine Klasse deklarieren, die die ID enthält und die Du mit AddObject zu jedem TStrings-Objekt hinzufügen kannst.

Shubit 26. Mai 2010 17:00

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Ok, ich denk ich nehm mal die TListView, das was ich dazu gefunden habe hört sich gut an. Also so wie ich das bis jetzt verstanden habe kann man da einfach Items reinhauen und die ein solche Itemklasse müsste man jetzt selbst schreiben. Aber dafür finde ich irgendwie kein Beispiel :(

mkinzler 26. Mai 2010 17:21

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
Brauchst du eigentlich nicht. Man kann auch die vorhandene nehmen. Diese hat eine Data-Eigenschaft, in diese man auch direkt ein Integer (ID) schreiben kann

Shubit 26. Mai 2010 20:39

Re: Hilfe bei sqlite und Zeos Komponente gesucht
 
ok, könntest du mal ein Beispielcode posten? Also ich hät nen String und zu jedem String gehört ne id ...
Ach ja und wie mach ich das wenn ich ganze viele Einträge habe, da kann man dann ja so mit Begin und Ende Update trixen damit nicht alle auf einmal geladen werden. Da müsst ich ja eigentlich jedesmal wenn der Nutzer scrollt ne neue Datenbankabfrage machen und nur den Teil ausgeben oder?


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:29 Uhr.
Seite 1 von 2  1 2      

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