Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo zusammen!

Ich kenne es bei delphi bisher nur so, das man halt auf SQL-basierende Programme schreibt. Aber geht das nicht auch irgendwie "einfacher", d.h. ohne dass jeder der mit dem Programm arbeiten will, sich nicht gleich SQL-Server usw installieren muss?

Auf welchen datenbanken kann man noch arbeiten, bzw. wie ist das bei den großen Programmen, wo werden die ganzen Eingaben gespeichert, wenn es ncht auf ner datenbank basiert? Oder sind diese Programme dann nicht in Delphi geschrieben?

mfg

Geschrieben

du kannst in delphi (und das gilt für die meisten windows-basierten umgebungen) prinzipiell fast überall daten speichern und abgreifen, sei es

- in der windows-registry

- im dateisystem als plain text

- im dateisystem als binäre dateien

- in INI-dateien

- in XML-dateien

- in proprietären dateiformaten (ZIP, RAR, ...)

- in einer beliebigen datenbank (mysql, oracle, access, sqlserver/MDE, BDE, paradox, dbase, ...)

- über eine beliebige datenbankschnittstelle (ADO, ODBC, ...)

- über andere schnittstellen (webservice, http, ...)

einzige überlegung sollte sein, welche art der speicherung für die vorhandenen bzw. zu speichernden daten die optimalste ist. so wird man programmeinstellungen eher in XML oder der registry ablegen und umsatzdaten in einer client-server-datenbank.

s'Amstel

Geschrieben

Hallo!

Aber was ist denn die einfachste Methode? Das Programm sollte halt auf anderen Rechnern laufen, ohne dass noch was zusätzliches installiert werden muss.

Das sollen keine großen Programme werden, halt nur kleine Verwaltungs-tools usw. ...

mfg

newbie

Geschrieben

Ich kenne es bei delphi bisher nur so, das man halt auf SQL-basierende Programme schreibt. Aber geht das nicht auch irgendwie "einfacher", d.h. ohne dass jeder der mit dem Programm arbeiten will, sich nicht gleich SQL-Server usw installieren muss?

Das es um ein kleines Verwaltungstool geht ist hier weniger wichtig. Wichtig ist, wo und wie du die Daten speichern willst ;)

Wenn die Daten nur für den, der das Programm benutzt von interesse sind, dann werden die Daten meist lokal gespeichert. Wenn auf die Daten auch noch andere zugreifen sollen/müssen, bietet sich je nach Daten eine Datenbank an.

Eine Datenbank kann irgendwo im Netz installiert werden und andere Programme können die Daten dort abrufen oder abspeichern. Client/Server-Programme nennt man sowas. Der Server ist der DB-Server, der u.U. auch noch mehr Funktionalitäten als nur die Datenspeicherung besitzt, und der Client ist dein Programm. DB-Server gibt es eine Menge, manche kostenlos, andere kosten was. Je nach dem welche Delphi Version du hast, greifst du anders auf die Server zu. Bis Delphi 6 machst du das, wenn du keine extra Komponenten installierst, über die BDE (Borland Database Engine). Das geht mit der standard Delphi Installation und wird auch in eigentlich allen Büchern zu Delphi (auch in späteren leider noch) benutzt und erklärt. Du musst dann aber immer noch die BDE auf dem Zielrechner zusammen mit deinem Programm installieren. Seit Delphi 7 benutzt du für den DB-Zugriff dbExpress. Dabei handelt es sich um einen Nativ-Zugriff auf die Datenbank. Installieren musst du dazu nichts, lediglich eine entsprechende DLL mit deinem Programm mitliefern.

Wenn du keinen DB-Server verwenden willst (oder zusätzlich zu einem Server, als "Aktenkoffer-Modell" o.ä.) kannst du auch auf eine dateibasierte "DB" zugreifen. Dem TClientDataSet kannst du als Quelle eine Datei geben und ansonsten aber wie mit einer Datenbank arbeiten. Das ClientDataSet gibt es AFAIK ab Delphi 4, oder zumindest kann es da nach installiert werden). Diese Datei kann entweder im Binärformat sein, oder als XML-Datei. Das ist eigentlich der einfachste Weg, um auf Daten zuzugreifen, wenn es sich nicht nur um 2-3 Einträge irgendwo handelt.

Natürlich könntest du das auch mit mit Text- oder Binärdateien selber machen. Dazu musst du dir aber selber eine Struktur "ausdenken" und die Daten in eine DAtei schreiben und sie daraus lesen.

Wenn es sich nur um eine bestimmte, kleine und feste Anzahl Daten handelt, geht es auch über eine Ini-Datei oder über die Registry. Dazu werden von Delphi auch fertige Methoden angeboten.

Welche Methode für dein Programm jetzt die geeignete ist, musst du selbst entscheiden. Was genau soll dein Programm denn tun und können?

Geschrieben

Hallo!

@JesterDay:

Erstmal Danke für die Antwort.

Also mit BDE und Datenbanken kenn ich mich relativ gut aus, aber so merkwürdig das jetzt vielleicht klingt, ich hab keine Ahnung wie ich ohne z.b. überall die BDE zu instalieren meinen Daten speichern könnte...

Mit SQL kenn ich mich auch aus, aber ich will wie gesagt ohne jegliches Zusatzprogramm die Daten abfragen können (falls das überhaupt geht).

Also das mit der XML, ini oder Text-Datei hört sich doch schon mal gut an. Welche Methode ist die einfachste, welche würdet Du empfehlen?

Das Programm sollte halt wie gesagt Verwaltungsfunktionen erfüllen (z.b. eine Verwaltung der CD-Sammlung oder so ähnlich),

Oder es gibt soweit ich weiß auch die Möglichkeit mit Access-Datenbanken zu arbeiten, aber da muss dann sicher auf jedem Recher, der das Programm benutzen will, MS Access installiert sein, oder?

mfg

Geschrieben

bei simplen text-dateien besteht die problematik, dass du hier nur sequentiellen zugriff hast, d.h. die datei wahrscheinlich vollständig einlesen musst, bevor du die daten darin verwalten kannst.

ini-dateien kannst du über die bestehenden api-aufrufe oder über eine wrapper-klasse auslesen, diese bieten dir einen wahlfreien zugriff, d.h. du musst sie nicht sequentiell auslesen.

das verwalten von hierarchischen daten (interpret / album / lied) kannst du z.b. über XML lösen, wobei hier natürlich ein basiswissen über den aufbau von XML-dateien da sein muss.

zum zugriff auf access-datenbanken brauchst du nur einen entsprechenden datenbanklayer, z.b. ADO oder DAO.

s'Amstel

Geschrieben

Hallo!

Ich hab mich für die Variante einer Access-Datenbank entschieden.

Nun meine Frage:

Ich kenn es bisher nur so, dass ich in der BDE die Access-Datenbank eintrage und dann anhand einer Query auf diese DB zugreife. Aber wie muss ich es anstellen, wenn ich ohne die BDE-Verwaltung arbeiten will. D.h. ich würde dann das Programm und die dazugehörige Datenbank einfach in den selben Ordner packen. Wie kann ich ohne die BDE-Verwaltung auf diese DB zugreifen? Wie muss ich den Pfad einstellen?

Und muss auf jedem Rechner dann Acces installiert sein, oder ist das nicht notwendig?

Danke im Vorraus.

mfg

Geschrieben

du kannst z.b. über ADO arbeiten. verwende dazu TADOConnection und definiere die datenquelle (wahlweise datei oder connectionstring mit dem jet 4 OLE DB anbieter). dann die datenbankdatei mit dem programm mitliefern oder auf einem netzwerkshare ablegen. und nein, du musst kein access mitliefern.

edit: würde mich trotzdem rein interessehalber interessieren, welche art von daten du verwalten willst - ist ja auch nicht unerheblich. noch 'n edit: ok, cd-sammlung, hab ich überlesen :floet:

s'Amstel

Geschrieben

Hallo nochmal!

Danke erstmal für die Antwort.

Ich kenn das bei SQL-Datenbanken nur so:

- DBGrid mit DataSource verbinden

- diese DataSource mit ner Query verbinden

- und diese Query mit dem jeweiligen BDE-Alias verbinden

Aber wie funktioniert das mit Access Datenbanken?

Womit verbinde ich das DBGrid?

Ich hab auch schon in der Hilfe nachgeschaut, ist alles sehr verwirrend und z.T. nur von Profis zu vertshene, wenn man in der Richtung noch nie was gemacht hat...

Muss das Programm dann am Ende immer in das selbe Verzeichnis bei jedem Rechner gepackt werden? Weil wenn ich für die DB nen Pfad angebe, ist der ja auf jedem PC unterschiedlich...

mfg

newbie

Geschrieben

relative pfadangaben bei connectionstrings sind nicht möglich - du kannst in delphi aber den pfad mit Application.ExeName ermitteln und von dort aus weg deinen connectionstring bauen

ADOConection.ConectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;[B]Data Source=' +   

  ExtractFilePath(Application.ExeName) +   

  'Datenverzeichnis\Kundendaten.mdb;[/B]Mode=ReadWrite;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password=qx99;Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';  

ADOConection.IsConnected := TRUE; 

dem dg kannst du eine quelle geben, in etwa dieser art:
DBGrid1.DataSource.DataSet = TADODataSet

s'Amstel

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...