Einfache Datenbank ohne SQL usw.?

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
weber_8722
Beiträge: 26
Registriert: Mo 17. Feb 2014, 10:11

Einfache Datenbank ohne SQL usw.?

Beitrag von weber_8722 »

Hallo,

ich möchte eine einfache Mini-Datenbak erstellen, z.B. um Ergebnisse im Sport zu sammeln, zu vergleichen, Statistiken zu erstellen, Trend-Plots ausgeben, den User einfach browsen zu lassen, usw.
Ich habe jedoch keine Datenbankerfahrung und keine Lust :

  1. mich in SQL oder so einzuarbeiten
  2. irgendwelche Lizensen (auch nicht freie) zu berücksichtigen
  3. irgendwelche Zusatzdateien zu meinem Programm mitliefern zu müssen
  4. Dinge ohne den Quelltext zu haben einzubauen

Gibt es da etwas einfaches? Eine Beispielanwendung?
Die Daten sollen am besten als einzelnen Textdateien abgelegt werden, z.B. als CSV.

Viele Grüße
Stephan

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Einfache Datenbank ohne SQL usw.?

Beitrag von mschnell »

Wenn es wirklich "Mini" ist, spielen Such.Zeiten keine Rolle. Dann kannst Du auch einfach eine Text-Datei nehmen. Entweder mit einem selbst definierten Format oder mit XML (dafür gibt es Zugriffs-Komponenten).

Ich bin kein Experte, aber viele Produkte benutzen SQLite für solche Zwecke. -> http://wiki.freepascal.org/sqlite -> https://www.sqlite.org/

SQL-Befehle brauchst Du nicht unbedingt. Die Komponenten sollten den low-Level - Kram für Dich regeln. z.B. auch ZEOS -> http://wiki.freepascal.org/Zeos_tutorial/de

-Michael

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Einfache Datenbank ohne SQL usw.?

Beitrag von Michl »

weber_8722 hat geschrieben:Gibt es da etwas einfaches? Eine Beispielanwendung?
Ich würde SQLite zwar vorziehen, aber unter den Beispielen (Lazarus/examples/address_book/addrbook) ist auch ein Dbf-Adressebuch mit dabei.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Einfache Datenbank ohne SQL usw.?

Beitrag von Warf »

Also ich würde einfach mit Records und binären Dateien arbeiten. Bzw wenn die Datenmengen nicht zu groß sind würde ich einfach die Kompletten Daten in den Hauptspeicher laden und dann über z.B. einen Array zugreifen.

Ein simples Beispiel:

Code: Alles auswählen

type 
PMyData = ^TMyData;
TMyData = packed record
  Name: ShortString;
  Daten1, Daten2: Integer;
  Daten3, Daten4: Double;
end;
 
...
procedure LoadData(FileName: string; lst: TList);
var tmp: PMyData;
  buff: TMyData;
begin
  With TFileStream.Create(FileName, fmOpenRead) do
    try
      While Read(buff, SizeOf(buff)) = SizeOf(Buff) do
      begin
        new(tmp);
        tmp^ := buff;
        lst.Add(tmp);
      end;
    finally
      Free;
    end;
end;
 
procedure SaveData(FileName: String; lst: TList);
var i: Integer;
begin
  With TFileStream.Create(FileName, fmCreate) do
    try
      for i:=0 to lst.Count-1 do
        Write(PMyData(lst[i])^, SizeOf(TMyData));
    finally
      Free;
    end;
end;
 

creed steiger
Beiträge: 957
Registriert: Mo 11. Sep 2006, 22:56

Re: Einfache Datenbank ohne SQL usw.?

Beitrag von creed steiger »

als csv?
das hier vielleicht

http://wiki.lazarus.freepascal.org/ZMSQL

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:

Re: Einfache Datenbank ohne SQL usw.?

Beitrag von Christian »

Von TDbf würd ich dringend abraten damit hatt ich schon massive Datenverluste.
Ich würd zu SQLite greifen, da hat man die vollen Vorteile von nem SQL Server und muss nur ne kleine dll mitliefern.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

RuhrPotto
Beiträge: 39
Registriert: Mi 6. Mai 2015, 12:52

Re: Einfache Datenbank ohne SQL usw.?

Beitrag von RuhrPotto »

Sofern keine extrem variablen Auswertemöglichkeiten bestehen müssen die SQL erforderlich machen, sind typisierte Dateien einfach zu handhaben.

Entweder als Pointer wie im vg. Beispiel oder in Array einlesen und verarbeiten. Kompilzierter wird es nur, wenn auch lange Strings (> 255 Zeichen) zu speichern sind oder viele Strings mit einer Länge bis zu 255 Zeichen gespeichert werden sollen. Dann ergäb ein Overhead an Speicherplatz.

Noch mehr Mini-DB wäre auch eine Möglichkeit über INI-Dateien.
Jeder macht Fehler - viele Fehler brauchen EDV!

hausi
Beiträge: 132
Registriert: Mi 23. Sep 2009, 08:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Einfache Datenbank ohne SQL usw.?

Beitrag von hausi »

TDbf und DBF Dateien laufen nur stabil mit einer XBase Entwicklungsumgebung. Habe früher viele solche Sachen mit Clipper, Foxpro etc. erstellt. Darum habe ich es am Anfang auch mit TDbf versucht, doch bin schnell davon weggekommen. Bei DBF Dateien muss man zum Suchen und Sortieren eine Index Datei erstellen und dies ist bei TDbf eine Schwachstelle. Wenn es einfach sein soll, SQLite, eine Dll beilegen und die Sache läuft.

Hausi

Antworten