lokale SQL Datenbank im Programmverzeichnis möglich?

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
skfink
Beiträge: 28
Registriert: Do 20. Dez 2007, 20:39

lokale SQL Datenbank im Programmverzeichnis möglich?

Beitrag von skfink »

Hallo,
ich plane eine Software zu machen die viele Datensätze beinhalten können soll. Mein Plan war das in einem Array of Records zu haben und in einem FileStream zu speichern, bis mir die Idee mit SQL kam. Die Sache ist ich möchte nicht extra einen SQL Server aufsetzen müssen (mit Xampp oder ähnlichem) , bzw. keine anderen Programme dazu verwenden müssen.

Daher die Frage:
Kann ich lokal in einem beliebigen Verzeichnis eine DB erstellen und darauf zugreifen?

Der Grund liegt nicht zuletzt darin dass die Software auch auf anderen Rechnern ohne anderweitige Installationen / Konfigurationen laufen soll.

Halvar
Beiträge: 58
Registriert: So 16. Mär 2008, 23:40
OS, Lazarus, FPC: Debian Lenny (L 0.9.28-2 FPC 2.2.4)
CPU-Target: 64Bit
Wohnort: Brake/Unterweser

Beitrag von Halvar »

Wenn du keine zusätzliche Software installieren willst, dann nutze doch die TDBF-Komponente. SQL geht dann zwar nicht, aber du könntest mit Filtern arbeiten.
Das Leben ist wie eine Hühnerleiter - kurz und beschissen

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

Re: lokale SQL Datenbank im Programmverzeichnis möglich?

Beitrag von af0815 »

skfink hat geschrieben:Daher die Frage:
Kann ich lokal in einem beliebigen Verzeichnis eine DB erstellen und darauf zugreifen?
JA - wenn du willst gehen sogar Datenbanken von CDs weg (RO :-) )
skfink hat geschrieben:ich plane eine Software zu machen die viele Datensätze beinhalten können soll.
was sind viele Datensätze ? 100, 10.000 10Mio ? Verhalten - oft geändert oder einmal rein, die restliche Zeit lesen ? Wird viel mit Filtern, Sortierungen gemacht ?

Du hast eine Bandbreite über Lokale Datenb Server (Embed Server), XML, Records, Klassiche Desktopdatenbanken, Datensets im Speicher,....

Für eine Einschränkung der Auswahl, sind die Angaben noch zu wenig ausführlich.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

skfink
Beiträge: 28
Registriert: Do 20. Dez 2007, 20:39

Beitrag von skfink »

also Datensätze werden es wohl im 4 Stelligen Bereich bleiben. Glaube kaum dass es jemals mehr als 10'000 werden.
Sortierung / Filterung wird vermutlich viel gemacht.

Also lese ich das richtig, dass ihr beide sagt dass SQL nicht ohne Umwege geht? Sind die Aufzählungen Alternativen zu SQL oder Ergänzungen?

EDIT: Zu der Datensatzzahl: Spielt es eine Rolle zu sagen dass die Datensätze groß werden könnten? Also neben Text würde ich ganz gern ein oder 2 Bilder pro Datensatz dazu tun. Zuerst dachte ich nur den Pfad zu den Bildern aufzunehmen, aber die Bilder selbst fänd ich noch praktischer.

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

Beitrag von af0815 »

skfink hat geschrieben:Also lese ich das richtig, dass ihr beide sagt dass SQL nicht ohne Umwege geht?
Die Embed Server (SQL) sind erst so richtig im kommen. Kann am Anfang etwas mühsam sein :-)

TDBF könnte für dich besonders am Anfang einfacher werden, da es dort schon länger was gibt und die Wahrscheinlichkeit höher ist, etwas an Info zu finden. In den LazSnippets ist auch ein Datenbankeditor (dbmaker - Linux und Windows) in Source zu finden. Dort kannst du dir auch ansehen, wie die Komponenten zusammenspielen, eine Datenbank erzeugt wird, Tabellen anlegen etc...

Bei den Embed Servern würde ich dann zuerst mit dem richtigen Server anfangen und dann wenn das meiste steht und funktioniert, auf den eingebetteten downgraden. Denn die Tools zum komfortableren arbeiten haben manchmal noch Probleme mit dem Embeded oder sind nur für den vollen Server vorhanden.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

danny61
Beiträge: 94
Registriert: So 5. Nov 2006, 18:40
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Berlin

Beitrag von danny61 »

Warum benutzt du nicht einfach SQLite ?
Du brauchst zwar eine Bibliothek aber es gibt eine entsprechende Komponente in Lazarus, die gut läuft.

skfink
Beiträge: 28
Registriert: Do 20. Dez 2007, 20:39

Beitrag von skfink »

das Projekt hab ich noch nicht angefangen, deswegen so lange Antwortzeiten :oops:

also mit SQLite kann ich das alles machen?
-In mein Programm integrieren
-Bei Programmstart wird der SQL Server erstellt
-Bei Programm beendigung wird der SQL Server wieder entfernt
-Der Benutzer muss nichts zusätzlich installieren und kriegt nichts mit
-Ich kann die SQL Komponenten von Lazarus verwenden

Gibts HowTo's wie man sowas mit Lazarus macht? Ich hab bisher noch nichts mit Datenbankkomponenten gemacht und mir fehlt so auch etwas die Idee wie ich das ganze angehn soll.

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

Beitrag von af0815 »

Bei Embeded Lösungen (SQLite, Firebird, MySQL,..) musst du nur dafür sorgen, das du die benötigten DLLs (bzw. Biblitheken) in das Verzeichnis bringst.

So gesehen muss man sagen - Installieren = nein, zusätzlich kopieren = ja.
Ob der Benutzer was mitbekommt, hängt davon ab, wie du die SW installieren lässt. Nur ein einfaches kopieren des Executables geht nicht, weil du ja diei Bibliotheken mit geben musst (oder Benutzer muss sie sich besorgen).
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

danny61
Beiträge: 94
Registriert: So 5. Nov 2006, 18:40
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Berlin

Beitrag von danny61 »

Es gibt keinen SQL-Server. Die Lazarus Komponente greift einfach auf die SQLite Bibliothek zu. Unter Windoof wäre das also eine DLL, die du einfach mit ins Programmverzeichnis packen kannst.
Wiki-Artikel : http://wiki.lazarus.freepascal.org/Laza ... utorial/de" onclick="window.open(this.href);return false;

skfink
Beiträge: 28
Registriert: Do 20. Dez 2007, 20:39

Beitrag von skfink »

dann ist ja erstmals alles klar, danke :wink:

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:

Beitrag von Christian »

SQLite,Firebird embedded sind nicht multiuserfähig, tdbf schon. Ka ob das bei dir eine Rolle spielt.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

skfink
Beiträge: 28
Registriert: Do 20. Dez 2007, 20:39

Beitrag von skfink »

tut es nicht, single user reicht vollkommen aus.

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Naja, nen embedded-Server braucht ja auch nicht zwangsläufig Multiuser-fähig sein. Dann kann man ja gleich den richtigen nehmen ;).

Der Vorteil ist aber, das du bspw. den Firebird-embedded später sofort und recht einfach austauschen könntest, falls es eventuell ein Mehrbenutzersystem später irgendwann mal werden könnte.
Johannes

skfink
Beiträge: 28
Registriert: Do 20. Dez 2007, 20:39

Beitrag von skfink »

so wirklich angefangen hab ich mit dem Projekt immer noch nicht, speziell was die Datenbank angeht. Da ich es aber nun die Tage angehn will, haben mich die Kommentare über Single-/Multi-User zu einer Frage geführt. Also es kommt bestimmt nie vor dass mehrere User gleichzeitig auf die Datenbank zugreifen sollen, aber ich möchte verschiedene Rechte-Level haben:
Level 1 = Datensätze lesen
Level 2 = Level 1 + Datensätze hinzufügen
Level 3 = Level 2 + Datensätze ändern
Level 4 = Level 3 + Datensätze löschen

Da ich von SQL nicht die große Ahnung habe, weiss ich jetzt nicht ob dazu 4 verschiedene User notwendig wären und dass man um sein Rechte-lvl zu ändern den User wechseln müsste, wenn das denn möglich wäre. Oder gibt es da bei SQLite andere Möglichkeiten?

Notfalls löse ich das halt in dem Programm, und nicht in der Datenbank, auch wenn letzteres sicher elleganter wäre, falls möglich.

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Beitrag von knight »

Zur Rechtevergabe gibt es bei SQL den GRANT Befehl (Doku dazu sollte es reichlich geben). Ich weiß aber nicht, wie weit der Befehl von SQLite unterstützt wird.

knight

Antworten