Einfache Datenbank ohne SQL usw.?

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.

Einfache Datenbank ohne SQL usw.?

Beitragvon weber_8722 » 21. Aug 2015, 09:27 Einfache Datenbank ohne SQL usw.?

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
weber_8722
 
Beiträge: 19
Registriert: 17. Feb 2014, 10:11

Beitragvon mschnell » 21. Aug 2015, 09:52 Re: Einfache Datenbank ohne SQL usw.?

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
mschnell
 
Beiträge: 3215
Registriert: 11. Sep 2006, 09:24
Wohnort: Krefeld
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ) | 
CPU-Target: X32 / X64 / ARMv5
Nach oben

Beitragvon Michl » 21. Aug 2015, 12:26 Re: Einfache Datenbank ohne SQL usw.?

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; 
Michl
 
Beiträge: 2243
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon Warf » 21. Aug 2015, 13:32 Re: Einfache Datenbank ohne SQL usw.?

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;
 
Warf
 
Beiträge: 793
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: Mac OSX 10.11 | Win 10 | FPC 3.0.0 | L trunk | 
CPU-Target: x86_64, i368, ARM
Nach oben

Beitragvon creed steiger » 21. Aug 2015, 14:14 Re: Einfache Datenbank ohne SQL usw.?

als csv?
das hier vielleicht

http://wiki.lazarus.freepascal.org/ZMSQL
creed steiger
 
Beiträge: 938
Registriert: 11. Sep 2006, 21:56

Beitragvon Christian » 21. Aug 2015, 16:54 Re: Einfache Datenbank ohne SQL usw.?

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/
Christian
 
Beiträge: 6101
Registriert: 21. Sep 2006, 06:51
Wohnort: Dessau
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z) | 
CPU-Target: AVR,ARM,x86(-64)
Nach oben

Beitragvon RuhrPotto » 24. Aug 2015, 14:30 Re: Einfache Datenbank ohne SQL usw.?

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!
RuhrPotto
 
Beiträge: 39
Registriert: 6. Mai 2015, 11:52

Beitragvon hausi » 24. Aug 2015, 15:22 Re: Einfache Datenbank ohne SQL usw.?

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
hausi
 
Beiträge: 132
Registriert: 23. Sep 2009, 07:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

• Themenende •

Zurück zu Datenbanken



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

cron
porpoises-institution
accuracy-worried