![]() |
Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Hallo Community,
ich bräuchte eine relativ kleine und einfache LOKALE Datenbank, mit etwa folgenden Eigenschaften: - KEINE Client-Serveranwendung, - KEINE SQL-Abfragen, sondern einfacher indexsequentieller Zugriff - Primär für Windows 32-Bit-Anwendungen (später evtl. 64-Bit), - Lizenzfreie Benutzung, - ca. 10 verknüpfte Tabellen, - Relativ wenig Daten je Tabelle: maximal 500 – 800 Datensätze, - Relativ wenig Datenfelder je Tabelle: 5 – 15 Felder, - Gespeicherte Datentypen: Extended, Integer, ShortString, evt. kleine Graphiken, - alle Zugriffe & die komplette Datenbankanwendung sollen in die EXE oder DLL gelinkt werden können, - Relativ einfacher Zugriff von Delphi aus, Ich benutze Delphi XE5 Professional. Welche Datenbank sollte ich dazu verwenden? Gibt es irgendwo ein für Delphi XE geeignetes Tutorium oder eine Art aktuelle Programmier-Anleitung? Für Tipps, Hinweise & Empfehlungen wäre ich sehr dankbar! Gruß Andreas |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Moin...:P
Zitat:
Zitat:
|
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Warum kein SQL? Das macht das Leben doch leichter.
Man kann natürlich mit z.B. Clientdatsets abeiten, das sind nur Tabellen die man laden oder speichern kann. Wenn doch etwas SQL sein darf, dann SQLite oder Firebird oder.. |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Da fällt mir z.B.
![]() Statt
Delphi-Quellcode:
schreibt man
Query1.Sql.Text := 'SELECT I.ID AS INVOICE_ID, I.INVOICE_TYPE, I.INVOICE_NO, I.ISSUE_DATE, I.PRINT_DATE, ' +
'C.ID AS CUSTOMER_ID, C.CUSTOMER_NAME, C.SEX, C.BIRTHDAY, N.ID AS COUNTRY_ID, N.COUNTRY_NAME' + 'FROM INVOICE AS I INNER JOIN CUSTOMER AS C ON (C.ID = I.CUSTOMER_ID) ' + 'LEFT JOIN COUNTRY AS N ON (N.ID = C.COUNTRY_ID)' + 'WHERE I.ID = :INVOICE_ID;' Query1.ParamByName('INVOICE_ID').AsInteger := 1; Query1.Open; ShowMessage(Format('Invoice No: %d, Customer: %s, Country: %s', [Query1.FieldByName('INVOICE_NO').AsInteger, Query1.FieldByName('CUSTOMER_NAME').AsString, Query1.FieldByName('COUNTRY_NAME').AsString]));
Delphi-Quellcode:
Ich wüßte jetzt nicht, warum SQL hier das Leben einfacher machen sollte, es geht ja auch ohne (das SQL im Vordergrund auftaucht)
Invoice := Manager1.Find<TInvoice>(1);
ShowMessage(Format('Invoice No: %d, Customer: %s, Country: %s', [Invoice.InvoiceNo, Invoice.Customer.Name, Invoice.Customer.Country.Name])); |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Kein SQL, Kein Multiuser-Zugriff?
Wieso dann überhaupt "Datenbank"? Dann würde ich die Daten als XML-Datei speichern. Bei der Datenmenge ist selbst XML schnell genug. |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
...bei nicht kommerzieller Nutzung ist NexusDb Embedded kostenfrei ohne Quelltext. Kann natürlich mehr als du eigentlich willst/brauchst aber erfüllt sonst alle deine Ansprüche.
SQLite sollte aber auch gehen. cu cg |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Zitat:
|
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Zitat:
es geht ja auch ohne (das SQL im Vordergrund auftaucht heißt: Ja, irgendwo wird da mit SQL gewerkelt, aber ich bekomme bei der Programmierung davon nichts mit |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Hi Andreas
Zitat:
![]() Damit könntest du deine Datenbank und deren Tabellen entwerfen. Frag mich aber nicht, ob mit der Personal-Edition auch Beziehungen zwischen den Tabellen erstellt werden können - ich benutze das Ding nur, um die Tabellen, die ich per Code mit Delphi erstellt habe, anzuzeigen. SQLite findest du ![]() ![]() ![]() Gruss Delbor |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
|
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Zitat:
Zitat:
Vieleicht sollten wir mal den TE zu Wort kommen lassen. :zwinker: |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Zitat:
|
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
@freimatz: Würde ich auch nie tun! Man kann NexusDb ja auch mit Source kaufen! Die Kriterien die der TE hat klingen aber eher nach Hobby-Projekt, da könnte man ohne Source evtl. auskommen, oder eben später den Source nachlizensieren. Btw. ist die Frage ob einem der Source einer kompletten DB-Engine was nützt wenn es um mehr geht als evtl. auf eine höhere Version von Delphi upzudaten? Das ist kein dünnes Brett!
|
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Hallo,
zunächst danke für die zahlreichen Tipps und Anregungen! Zitat:
Ich weiß sehr wohl, daß mein DB-Wissen veraltet ist. Daher habe ich mich doch an die Experten gewandt! Zitat:
Zitat:
Die Hinweise auf SQLite-Datenbank erscheinen mir im Moment am meisten erfolgversprechend für mein kleines DB-Projekt. Nochmal herzlichen Dank Euch allen! Gruß Andreas |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Zitat:
das deutsch-englische Wort "Thread Ersteller" oder wie man in der Kneipe sagen würde "Wer hat denn damit angefangen ...." |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Moin...8-)
Zitat:
|
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
@Andreas13: Du hast echt die Qual der Wahl. Von SQLite, AdvantageDB, ClientdataSets, über XML, JSON, NOSQL uvm bis hin zu MSSQL embedded und natürlich C/S-Datenbanken gibt es wirklich vieles.
BTW: Aurelius ist keine Datenbank, das ist ein ORM + kann mit vielen Datenbanken. Aber: Wie du selbst sagst, ist dein Wissen aus B-Tree-Zeiten (kenn ich auch, war echt gut!) + da hat sich seither wirklich, wirklich viel getan. Verschaff dir zuerst einen Überblick und spiel dich mit dem Komponenten, die Delphi mit hat. Bring dich auf den aktuellen technischen Stand, dann kannst du die Entscheidung leichter treffen. Sonst schränkst du dich ein (kein SQL!), obwohl das nicht nötig wäre. Vielleicht magst du auch beschreiben, was du vorhast, dann können dir die Experten hier viele Vorschläge machen, aus denen du die besseren dann aussuchen kannst. |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Vielleicht ist NexusDB nicht die schlechteste Alternative, wenn man deren Wurzeln einmal ansieht:
![]() "While NexusDB is a completely newly designed product its conceptual foundations date back to 1986. At this time, ENZ, a German company, created a product called BTreeFiler for Turbo Pascal. BTreeFiler was a file-based database system which used the server purely as a file server. In time, Turbo Power sold BTreeFiler under license for ENZ. Turbo Power eventually bought BTreeFiler outright from ENZ." Achso, wenn schon TurboPower BTreeFile genannt wird, dann gibt es ja auch noch das hier als Opensource: ![]() |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
|
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
@TigerLilly
Vielen Dank für Deine wertvollen Hinweise & Ratschläge! Zitat:
Lieder lässt sich ![]() Mit Delphi XE5 Nicht mehr kompilieren. Habe in den letzten Monaten bereits viel Zeit in die „Wiederbelebung“ investiert, leider ohne Erfolg. Auch die vollmündige Versprechung für Delphi XE2 ![]() ist leider nicht (mehr) funktionstüchtig. Vielen Dank & Gruß Andreas |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Da kostenlos kein Kriterium ist (oder habe ich es überlesen?) werfe ich auch mal
![]() |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Eigentlich werden alle TurboPower-Komponenten zeitnah aktualisiert (
![]() |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Na ja, manche Sachen kommen einfach in die Jahre.
Schau dir mal MS SQL Express mit Tools an. Kostet nix, ich leicht zu verwenden und sowas von genial. Oder wie schon genannt Advantage, NexusDB etc. Kleb nicht an dem, was du kennst! Prüfe alles kritisch, was älter als 2 Jahre ist. |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Für seine Zwecke dann doch eher MSSQL compact. Oder halt SQLite oder FireBird embedded. Das letztere hat den Vorteil, dass die Datenbank auch vom entsprechenden großen DBMS weiterverwendet werden kann (Programm bedarf hierfür auch keine Änderung).
|
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Zitat:
Aber im Kern geht´s darum, dass es viel und gutes NEUES gibt + dass sich die Lernkurve bezahlt macht. |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Ob die Datenbank nun SQL kann oder nicht, ist doch eigentlich wurscht.
Wenn man kein SQL nutzen will, dann nimmt man halt 'ne Komponente, die ein Nachfahre von TDataSet ist und nutzt dort Locate, Append, Edit, Post ... Damit kann man alles wesentliche erledigen. Wie es letztlich datenbankseitig umgesetzt wird, sollte dem Entwickler eigentlich egal sein. (Man kann also durchaus ohne SQL auf z. B. Oracle zugreifen und damit vollständige Datenbankanwendungen schreiben, ohne auch nur 'nen Hauch von Ahnung von SQL zu haben ;-)) Und wenn es schon ohne "richtige Datenbank" sein soll, nehme man z. B. TClientDataSet, ![]() ![]() Achso: gehöre auch zu den "alten Säcken", die aus den "Vor-SQL-Zeiten" stammen, aber deshalb möchte ich bei 'ner Datenbankanwendung trotzdem nicht auf SQL verzichten. Meine Erfahrung: Mit SQL ist vieles leichter und wenn SQL mal langsam ist, hat man was falsch gemacht. Und das dann SQL vorzuwerfen, ist der falsche Ansatz. |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Kaum ein paar Worte geschrieben, schon timeout, neues Login und schon dutzende neue Beitrage, wie auch immer, hier mein Senf
ot Ich bin ja kein Freund davon, den TE die Anforderungen im Mund rumzudrehen, daher ot, aber ich finde die Anmerkungen von TiggerLilly ganz treffend. Dazu noch von mir: 1. was ist genial an MSSQL Express? (reine Neugier, vlt. nützt es auch dem TE) 2. alle 2 Jahre prüfen find ich ok, aber das ist kein Selbstzweck, ich mag Systeme (und Unternehmen) die für langlebige Verfahren stehen. 3. MS steht nun nicht unbedingt für 2., besonders was "gelegentliche Wechsel der favorisierten, supporteten Connectivity" angeht 4. Der Schritt Richtung SQL mag ratsam sein (für mich sowieso), aber eine file basierte Technologie? Dann lieber eine, die "seamless" zum Server mutieren kann (z.B. Firebird). Technologiewechsel, Umlernen, Protokollprobleme entfallen. (Filebasierte Datenbanken benötigen m.E. eine unnötige und mindestens historisch anfällige Zwischenschicht) 5. Der TE will "32, vielleicht auch später 64 bit". Da klingt etwas von vorausschauen durch, m.E. ist die Grundanforderung nach einer filebasierten, seqentiellen DB aber nett gesagt das Gegenteil, recht old school 6. "vielleicht auch kleine Bilder", dann später doch auch große, und weil sie lokal so leicht zerstört werden können, selbst versehentlich, kommen sie natürlich in die DB, nicht daneben und dann geht es langsam dahin, das System, das eigentlich fast nichts können muss.. 7. aus 6. und unbekanntem Einsatzweck heraus ergäbe sich vielleicht auch noSQL DB, allgemein dokumentbasierte oder Mischsysteme als Alternative. (Für den TE, bitte einfach als Hinweise, Denkanstöße ansehen und mit dem wirklichen Einsatzzweck/Perspektive abgleichen) /ot |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Die heißen heute NexusDB, wenn ich mich nicht irre. (ehem. Flash Filer)
Zitat:
|
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Hallo zusammen,
Zitat:
10^3 x Danke Michael: das war der entscheidende Tipp für mein Vorhaben! Zunächst habe ich NexusDB getestet: Leider ist es für einen mich als Datenbank-Anfänger viel zu komplex und vor allem sehr umständlich in der Handhabung. „Absolute Database“ ![]() Zitat:
Als Ingenieur erstelle ich seit Jahrzehnten technische-wissenschaftliche Berechnungen aus dem Bereich der mechanischen, thermischen und chemischen Verfahrenstechnik und der Anlagenplanung, die ich als Funktion über DLL‘s in Excel einbinde. Meine „Programme“ sind daher keine eigenständigen Programme mit eigener Oberfläche, sondern laufen als „Bestandteil“ von Excel. Der Benutzer gibt seine Eingangsdaten in Excel ein, schickt die Funktion ab, und die Ergebnisse der oft recht umfangreichen Berechnungen landen gleich in der Excel-Tabelle. Diese Berechnungen benötigen als Input meistens eine große Anzahl diverser Stoffdaten wie z. B. Dichte, Viskosität, Wärmeleitfähigkeit, Wärmekapazität, Oberflächenspannung, Dampfdruck, kritische Daten etc. Etliche dieser Stoffdaten sind Funktionen der Temperatur, des Druckes und der Konzentration der einzelnen Komponenten (Diese Zusammenhänge liegen oft in Form empirischer Gleichungen mit zahlreichen Koeffizienten vor). Darüber hinaus werden auch noch Kenndaten diverser Apparate (Wärmeaustauscher, Behälter, Destillationskolonnen, Rohleitungen, Pumpen, Gebläse, etc.) benötigt, die z. T. genormt sind (= umfangreiche Tabellen) und oft vom Druck im System abhängen (z. B. Wandstärke der Rohleitungen, Behälter etc.). Bei manchen Aggregaten (z. B. Pumpen, Gebläse, etc.) steckt ihr Betriebsverhalten in diversen Diagrammen (z.B. „Kennlinien“) etc. Hinzu kommen noch diverse chemische Analysendaten (z. B. Rohstoffe, Hilfsstoffe, Endprodukt, Abfallstoffe etc.), die für den jeweiligen Prozeß relevant sind. All diese Daten (und oft noch mehr) werden in meinen Berechnungen benötigt. Da ich die Programmierung – als NICHT-Informatiker – lediglich als Hobby und zugleich zur Erstellung von Arbeitserleichterungen („Tools“) für die Verfahrens-& Chemie-Ingenieure praktiziere, brauche ich eine hohe Zuverlässigkeit und vor allem Beständigkeit. Auch ich stamme noch aus „MS-DOS-Zeiten“ und habe bereits mehrere Systemwechsel (… CP/M, MS-DOS, Windows-16-Bit, Windows32-Bit) hinter mir, und konnte jedes Mal ein Scherbenhaufen meiner früheren Programmier-Arbeit erleben und alles wieder von vorne beginnen: Deswegen war / ist Beständigkeit für mich extrem wichtig. @TigerLilly: Ich kann meine Software-Entwicklungen nicht alle zwei Jahre umstellen, weil damit täglich gearbeitet wird... Ich habe eine relativ „große“ Sammlung (= für Euch nur „Very Little Data“) oben genannter Stoff- und Apparate- und Anlagen-Daten, vorwiegend in Excel und auch in Access. Und diese Daten möchte ich in einer einfach zu handhabenden Datenbank so ablegen, daß meine Berechnungsroutinen die erforderlichen Daten direkt aus dieser Datenbank holen können. Daher hat Jo (@jobo) Recht, indem er feststellt, daß meine DB „eigentlich fast nichts können muss..“. Noch einmal vielen Dank für die lehrreiche Diskussion und die wertvollen Anregungen. Ich habe viel von Euch gelernt! Gruß Andreas |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Hallo,
was spricht dann nicht für XML? Es soll ja nur gelesen werden, wie ich es verstanden habe. (?) Und der Nutzer soll das auch nicht so leicht ändern können (?) |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Andreas, vielen Dank für die Infos. Klingt nach einem spannenden Arbeitsumfeld.
Mit Big Data habe ich eigentlich nichts zu tun, ein 3 stelliger Millionenbereich, darüber bin ich meinen Anwendungen noch nicht hinaus gekommen. Eine Datenbank zu wechseln (Migration) ist an sich auch nicht so ein Problem, egal wie groß oder klein. Es dreht sich häufig um die Frage, wie tief sie im Code und in anderen Prozessen verstrickt ist oder auch DB spezifische Fähigkeiten im Programm genutzt werden. Also eher eine Frage von "Big Code". Was muss alles umgestellt werden, wenn das aktuelle Produkt Probleme bereitet. So wie du es beschrieben hast, sehe ich da auch sowas wie XML, eher noch JSON. Dann kannst Du die Daten mit (fast) jedem Texteditor verwalten- es gibt jedenfalls sehr geeignete-, als Resource in Dein Programm einbauen oder was auch immer. |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
@ hoika
Hallo Heiko, Zitat:
Mit XML habe ich bisher überhaupt keine Erfahrung… @ jobo Hi Jo, Zitat:
Zitat:
Zitat:
Danke & Gruß Andreas |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Verschlüsselst Du denn die Absolut DB Files bzw. deren Inhalte oder andere Formate?
Oder reicht die "Fremdheit" des Formats schon an sich? Ich nehme an, in den Daten liegt zumindest zum Teil das Firmen Know How, aber auch JSON kann man ja wie jeden Text verschlüsseln. Wir setzen JSON auch als Datentransferformat ein. Das geht auch ganz gut mit >kleinen Bildern >oder großen Bildern Für Bilder oder allgemein Binärdaten ist sowieso ein Codierung wie z.B. bei Mailattachments notwendig (Mime Codierung). |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Also wenn du wirklich nur reine Stammdaten hast, die vom Benutzer weder ergänzt noch geändert werden können und du am liebsten überhaupt keine weiteren externen Dateien haben möchtest, dann wäre es vielleicht zu überlegen, ob du deine Daten nicht lieber in vernünftigen Objektstrukturen, Listen und Dictionaries verwalten solltest, die beim Programmstart initialisiert werden. Oder evtl. als XML/JSON-Datei(en), die als Resource mit einkompiliert werden.
//edit: Ich sehe gerade, das mit den Resourcen hat jobo ja bereits vorgeschlagen. |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Und XML erlaubt auch verschlüsselte Daten. So lange sie als Base64 vorliegen, sind alle Chiffrate zulässig.
![]() Über die Dateigröße könnte man sich Gedanken machen... Sherlock |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Zitat:
P.S.: SQLite kann auch verschlüsselt werden mit DISQLite oder LiteDac/UniDac. Ist aber beides nicht kompatibel zum offiziellen Standard (der ziemlich teuer ist), d.h. zum Entschlüsseln muss jeweils wieder die Bibliothek verwendet werden. |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Zitat:
Schönes Wochenende |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Hallo zusammen,
in den letzten 2 Tagen habe ich mich intensiv mit Euren Tipps & Vorschlägen beschäftigt und so manches ausprobiert. Da ich mich weder mit SQL, XML noch mit JSON auskenne, aber mit „Absoute Database“ sehr rasch beachtliche Fortschritte erzielen konnte, steht meine Wahl für meine 08/15-DB-Anforderungen fest: Es ist Absoute Database. ![]() Der mitgelieferte DBManager und die Hilfedatei AbsDbManualwar waren für mich extrem hilfreich, die Demo-Programme sind funktionstüchtig, verständlich und einfach nachvollziehbar. Auch die Verschlüsselung der gesamten Datenbank (8 verschiedene Algorithmen) ist durch einen Mausklick erledigt. Nach ein paar Stunden Studium der Demos & eigenes Probieren konnte ich als DB-Anfänger bereits ein kleines (aber für mich wichtiges) Projekt in groben Zügen funktionierend realisieren. Da ich kein Datenbank-Experte werden will, sondern die DB-Tools lediglich als ein (wichtiges) Hilfsmittel zur Speicherung und Wiederfindung meiner Daten benutzen möchte, bin ich mit dieser Lösung extrem zufrieden. Ich habe viel mehr bekommen, als ich ursprünglich erhofft habe. Ich danke Euch ALLEN noch einmal ganz herzlich für Eure tatkräftige und effektive Unterstützung! Gruß & ein schönes Wochenende Andreas |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Wenn du es ganz einfach als Komplettlösung haben willst:
MyVisualDatabase. Kannst dir einfache Anwendungen zusammenklicken. Datenbankverschlüsselung kostet extra über einen Toolanbieter. Infos in deren Forum. Übrigens: Der Datenbankdesinger kann sehr praktisch Datenbankverknüpfungen visualsieren. Ist zwar auf SQLite Basis, aber kleines günstiges Tool um sich mal einen Prototypen zum basteln zusammenzuklicken. |
AW: Einfache lokale Datenbank – bitte um Entscheidungshilfe!
Moin...8-)
Zitat:
PS: Das gilt auch für eine Datenbank. Man sollte sich auch über z.B. Normalisierung schlau machen. ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz