AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Welche Datenbank und Zugriffskomponenten für kleine Datenbank-Anwendung?
Thema durchsuchen
Ansicht
Themen-Optionen

Welche Datenbank und Zugriffskomponenten für kleine Datenbank-Anwendung?

Ein Thema von Helmi · begonnen am 24. Mai 2015 · letzter Beitrag vom 9. Mai 2016
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#31

AW: Welche Datenbank und Zugriffskomponenten für kleine Datenbank-Anwendung?

  Alt 6. Mai 2016, 22:21
Ich finde SQLite zwar nicht toll, aber warum fängst Du nicht einfach mal hier an:
http://docwiki.embarcadero.com/RADSt...nk_mit_FireDAC

und erweiterst das dann nach und nach - und für konkrete Fragen gibt es ein gutes Forum
So, das habe ich nun mal gemacht. Das Beispiel ist insofern nicht schlecht, als dass es mir zeigt, wie ich eine Datenbank öffne und es letztlich deutlich wird, dass ich , je nach FDPhys*DriverLink offensichtlich eine ganze Reihe unterschiedlicher Datenbanktypen öffnen kann.

Soweit so gut.

Leider funktioniert das Beispiel nicht. Kann zwar die Verbindung herstellen und ohne Fehlermeldung das Execute ausführen, allerdings sind für Name und Department keine Einträge vorhanden (siehe anliegenden Screenshot).

Woran kann das liegen?

Und weitere Frage: Mal angenommen, das wäre jetzt mein Programm, müssen hierfür irgendwelche DLL-Dateien weitergegeben werden, damit es auch auf anderen Computern funktioniert (so wie früher die Midas.dll)?
Miniaturansicht angehängter Grafiken
db-output.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#32

AW: Welche Datenbank und Zugriffskomponenten für kleine Datenbank-Anwendung?

  Alt 7. Mai 2016, 07:19
Moin...
Zitat:
Mal angenommen, das wäre jetzt mein Programm, müssen hierfür irgendwelche DLL-Dateien weitergegeben werden
Das ist abhängig von der verwendeten Datenbank und den verwendeten Zugriffskomponenten... da mußt du schon konkreter werden.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#33

AW: Welche Datenbank und Zugriffskomponenten für kleine Datenbank-Anwendung?

  Alt 7. Mai 2016, 07:30
Soweit so gut.

Leider funktioniert das Beispiel nicht. Kann zwar die Verbindung herstellen und ohne Fehlermeldung das Execute ausführen, allerdings sind für Name und Department keine Einträge vorhanden (siehe anliegenden Screenshot).

Woran kann das liegen?
Ich behaupte mal, daß die Feldnamen ('Name','Department') nicht stimmen. Mit 'NAME' könnte es z.B. funktionieren, oder aber sie sind überhapt nicht vorhanden.
Versuch mal etwas ähnliches wie:
Delphi-Quellcode:
  outputMemo.Text:= '';''
    // Die Feldnamen aus der Query hinzufügen.
    dummy:='';
    for i:=0 to query.fields.count-1 do
      dummy:=dummy+query.fields[i].Name+'|';
    outputMemo.Lines.Add(dummy);
    // Dem Memo eine Zeile pro Datensatz in der Tabelle hinzufügen.
    while not query.Eof do
    begin
      outputMemo.Lines.Add(String.Format('|%8d|%-25|%-25s|',
        [query.FieldByName('ID').AsInteger, query.FieldByName('Name').AsString,
        query.FieldByName('Department').AsString]));
      query.Next;
    end;
Dann sollten in der Kopfzeile die von der Query zurückgegebenen Feldnamen auftauchen.

U.U. ist auch folgendes möglich
Delphi-Quellcode:
for i:=0 to query.fields.count-1 do
  dummy:=query.fields[i].asString;
outputMemo.Lines.add(dummy);
um die Feldinhalte ohne Namenskenntnis zurück zu geben.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#34

AW: Welche Datenbank und Zugriffskomponenten für kleine Datenbank-Anwendung?

  Alt 7. Mai 2016, 09:29
Zu dem leeren Formular:
Entweder, es sind keine Daten drin oder es fehlt eine Aktivierung/ Öffnen der Datenmenge oder es ist beim Öffnen ein Fehler aufgetreten, der irgendwie unterschlagen wird.
Nimm einen Datenbankexplorer und schau in die Tabellen rein oder trag damit gleich selbst Datensätze ein.

Konkrete Systeme
- SQLite, besonders wenn man Mobile Systeme im Blick hat
- Firebird, besonders nach der V 3.0, die nun endlich da ist. Interessant wegen der lokalen Server Engine. Programme können damit standalone betrieben werden oder als client/server.
Da diese mehrfach genannt wurden und von der Leistungsbeschreibung interessant sind, werde ich mir diese mal näher ansehen. Gibt es irgendwo Beispiele für FireBird? Bei den Delphi-Demos scheint nichts dabei zu sein.
Firebird sollte sehr kompatibel zu Interbase sein. Und nochmal, egal welches Relationale Database Management System RDBMS Du verwendest, die Handhabung(!) in Delphi ist haezu identisch*1. Die Entscheidung für ein RDBMS ist verwoben mit der Frage, welche Zugriffskomponenten in D verwendet werden (sollen), einschließlich der Zukunftsperspektive dieser Komponenten und ggF der DLL Frage, die Du gestellt hast.
Wirkliche Unterschiede gibt es dann höchstens bei der Definition der Connection. Abhängig von der Technologie werden hier mal Dateien angegeben, bei anderen dann benannte DB, ..
Das ist ja (u.a) genau ein Punkt, womit D mal angetreten ist, die (immergleichen) Datenbankkomponenten als Abstraktionsschicht zu beliebigen DB. Siehe auch ODBC, JDBC, ...
Ein Code und eine beliebige DB dahinter.

*1Und zuletzt: So zu programmieren, dass die DB austauschbar ist, wäre eine Strategie oder Vorgehensweise, da die verschiedenen Systeme zwar einen Standard unterstützen (nie zu 100%), am Ende aber doch auch eigene Wege gehen und unterschiedliche Anforderungen bedienen, wird mit dem Moment der Nutzung spezifischer SQL Funktionen aus der austauschbaren DB ein Zwang oder eine "Ehe" oder wie man das auch immer nennen möchte.
DLL spielen dabei auch eine Rolle, das könnte man so zusammenfassen. Jedes System braucht eine Clientkomponente in Form einer oder mehrerer DLL. Die wird entweder mitgeliefert/verschenkt, gekauft, durch den Kunden selbst installiert oder ist das gleiche wie der Server (besonders SQLite, so ähnlich auch bei Firebird).

Zu allerletzt zu den Firebird Beispielen. Wenn Du irgendein Datenbankbeispiel nimmst und es ist nicht für Firebird, kannst Du es dennoch mit großer Wahrscheinlichkeit in Firebird umsetzen.
Z.B.
Code:
CREATE TABLE Employee (
    Employee_ID int NOT NULL,
    NAME       varchar (50) NOT NULL,
    DESCRIPTION varchar (250) NOT NULL
)
Kannst Du in vielen verschiedenen DB verwenden. Nimm ein SQL Tool Deiner Wahl, erzeuge damit eine DB, lass das Script laufen und Du kannst mit dem Tutorial loslegen. Manchmal gibt es unterschiedliche Namen für die Typen, aber es wird Dir sicher nicht schwer fallen, ein INT gegen INTEGER oder NUMBER auszutauschen. Auf die Art kannst Du "beliebige" Tutorials verwenden. Es gibt natürlich einen Haufen anderer, kleiner Gemeinheiten, die dürften sich aber spätestens hier im Forum schnell und einfach lösen lassen. SQLite hat zum Beispeil eine recht ungewöhnliche Art der Spaltentypisierung. AutoInc Felder sind auch gern überall etwas anders, alles aber halb so wilrd...
Gruß, Jo

Geändert von jobo ( 7. Mai 2016 um 09:31 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#35

AW: Welche Datenbank und Zugriffskomponenten für kleine Datenbank-Anwendung?

  Alt 7. Mai 2016, 09:54
@jobo

Solche austauschbaren Daten-Layer, die mit x Systemen sprechen können muss man natürlich abstrahieren. Eine gute Abstraktion wäre z.B. ein REST Server und JSON als Austauschformat.

Mit dem REST Server muss die Anwendung aber nicht direkt sprechen, sondern ich kann das auch in eine DLL auslagern. Ob diese DLL dann wirklich mit einem REST Server spricht oder mit einer lokalen SQlite oder MySQL oder whatever ist der Anwendung schnurz.

Die Zugriffsspezialitäten der Systeme liegen jetzt in der DLL und die Anwendung ist völlig losgelöst davon.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#36

AW: Welche Datenbank und Zugriffskomponenten für kleine Datenbank-Anwendung?

  Alt 7. Mai 2016, 10:06
Richtig, ich hab ja schon anfangs angedeutet, dass man heute vlt. nicht mehr die klassische Delphi Komponententechnik einsetzt. Meine Beschreibung diente auch eher der angefragten Problematik "Beispiel für Firebird". Wenn man ein gewisses Verständnis entwickelt hat, müsste einem klar sein, dass man kein Beispiel für "ein bestimmtes System" braucht.
Ich vermute aber, dass Harry Stahl erstmal diesen Weg gehen möchte. Zumindest hat er zu REST und Co nichts nachgefragt. Am Ende spielen bei solchen Architekturfragen auch immer Dinge wie ich sag mal "Kopierschutz" mit rein. Gestattet man architektonisch den direkten Zugriff auf die DB, wie setzt man das um, für Standalone Lösungen, für Cloud, für beides, ..
Kann ja alles noch hier aufgedröselt werden.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#37

AW: Welche Datenbank und Zugriffskomponenten für kleine Datenbank-Anwendung?

  Alt 7. Mai 2016, 11:56
Zu dem leeren Formular:
Entweder, es sind keine Daten drin oder es fehlt eine Aktivierung/ Öffnen der Datenmenge oder es ist beim Öffnen ein Fehler aufgetreten, der irgendwie unterschlagen wird.
da die "ID" zurück gegeben wird, vermute ich das Namensproblem. Und nichts böses wie ein fehlgeschlagenes .Open.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#38

AW: Welche Datenbank und Zugriffskomponenten für kleine Datenbank-Anwendung?

  Alt 7. Mai 2016, 13:27
Ich hab mir den Code nicht angesehen. Ich würde als erstes in die DB selbst reinschauen. Z.b. mit einem SQLite Mozilla FF Plugin.
Dort kann man notfalls alles so anlegen, wie man es haben möchte, falls die Beispiel DB leer oder kaputt ist. Mit etwas debuggen, würde man ja auch sehen, woran es hapert.
Gruß, Jo
  Mit Zitat antworten Zitat
PC-John

Registriert seit: 20. Aug 2005
Ort: Meilen
12 Beiträge
 
Delphi XE2 Professional
 
#39

AW: Welche Datenbank und Zugriffskomponenten für kleine Datenbank-Anwendung?

  Alt 8. Mai 2016, 17:25
Ich hatte mich früher mal zu Thema Datenbank geäussert:

http://www.delphipraxis.net/182226-l...b-gesucht.html

Absolute-Database ist eine schöne kleine Sache, mit allem drin, drum und dran.
Braucht keinerlei Installation, nicht mal eine .DLL irgendwo muss mitgeliefert werden.

Es sind ein paar entsprechende Zugriffs-Komponenten einzupflanzen, welche praktisch identisch sind mit der bekannten BDE-Version.

Den Source-Code gegenüber der BDE musste ich kaum anpassen, lediglich das anziehen der richtigen Database ist etwas anders. Auch eine In-Memory-Database ist möglich, diese ist natürlich entsprechend schnell.

Und für nicht-kommerziellen Gebrauch ist die Absolute-Database sogar gratis.
Wer hingegen mal hinter die Kulissen schauen will, bekommt (nicht ganz gratis) auch die Entwickler-Version mit dem gesamten Code.

PC-John
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#40

AW: Welche Datenbank und Zugriffskomponenten für kleine Datenbank-Anwendung?

  Alt 8. Mai 2016, 18:16
Ich behaupte mal, daß die Feldnamen ('Name','Department') nicht stimmen. Mit 'NAME' könnte es z.B. funktionieren, oder aber sie sind überhapt nicht vorhanden.
Versuch mal etwas ähnliches wie:
Delphi-Quellcode:
  outputMemo.Text:= '';''
    // Die Feldnamen aus der Query hinzufügen.
    dummy:='';
    for i:=0 to query.fields.count-1 do
      dummy:=dummy+query.fields[i].Name+'|';
    outputMemo.Lines.Add(dummy);
    // Dem Memo eine Zeile pro Datensatz in der Tabelle hinzufügen.
    while not query.Eof do
    begin
      outputMemo.Lines.Add(String.Format('|%8d|%-25|%-25s|',
        [query.FieldByName('ID').AsInteger, query.FieldByName('Name').AsString,
        query.FieldByName('Department').AsString]));
      query.Next;
    end;
Dann sollten in der Kopfzeile die von der Query zurückgegebenen Feldnamen auftauchen.

U.U. ist auch folgendes möglich
Delphi-Quellcode:
for i:=0 to query.fields.count-1 do
  dummy:=query.fields[i].asString;
outputMemo.Lines.add(dummy);
um die Feldinhalte ohne Namenskenntnis zurück zu geben.

Gruß
K-H
Mit der ersten Variante wird kein Inhalt zurückgeliefert.
Mit der zweiten Variante werden (wie von Dir vermutet) die Inhalte des Feldes ausgegeben.

Wenn man mit einem HEX-Editor in die Datebankdatei reinsieht, findet man "Name" und "Department".

Wie auch immer, nicht besonders überzeugend von EMBA, eine Demo anzubieten, die nicht im Ansatz funktioniert...

Anliegend der Source, wie ich ihn von der EMBA-Homepage kopiert habe, incl. der Datenbankdatei.
Angehängte Dateien
Dateityp: zip dbdemo.zip (55,8 KB, 2x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:34 Uhr.
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