Eigene Datenbank

gerd87

Erfahrenes Mitglied
Hallo,

Ich versuche ein Programm zu schreiben, wo man Daten speichern, bearbeiten und löschen kann.
Diese Daten müssen irgendwo gespeichert werden. Da der Rechner kein Internet hat muss die Datenbank lokal sein.
Ich habe gedacht, dass man die Daten einfach in einer CSV-Datei abspeichert und aufruft.
Gibt es da Vor- und Nachteile? Oder gibt es auch eine bessere Möglichkeit, ohne dass man was großes installieren muss?

Gruß
 
Hi,

Wenn du nur einfache Daten hast, ist CSV vielleicht noch ausreichend. Bei strukturierten Daten (z.B. mehrere Tel-Nummer oder E-Mail-Adressen für eine Person) stöst du mit CSV schnell an deine Grenzen.
Einige DBMS bieten die Möglichkeit die Datenbank zu embedden, so dass du nur die Datei mit den Daten auf dem Filesystem liegen haben musst. Ein extra installiertes DBMS ist dafür nicht notwendig.
Beispiele dafür sind zum Beispiel Access, worauf du mit dem Microsoft.Jet-Provider zugreifen kannst oder Firebird.
 
Habe es jetzt etwas mit csv versucht. Komme da aber nicht wirklich weiter.
Ich versuche eine csv-Datei zu öffnen und in ein Data-Grid anzuzeigen.
Kann mir da jemand weiterhelfen?
 
Genau da komme ich nicht weiter.
Ich weiss nicht, wie man die CSV-Datei in den Speicher lädt und an das Grid weitergibt.
 
Ok, da würde ich einfach eine unsichtbare TMemo-Komponente in das Formular legen, dann die Lines mittels LoadFromFile(<name>) einlesen und dann die einzelnen Zeilen mit einem IndexOf abarbeiten und die Feldwerte an das DBGrid übergeben.
Ich meine - wozu dick mit FileStreams rumärgern, wenn es Komponenten gibt, die alle gewünschten Funktionalitäten bereits beinhalten? :)
 
Danke für die Antwort.
Ich habe die Datei jetzt ins Memo geladen.
Jetzt weiss ich aber nicht, wie ich das in Grid bekomme. Hast du da ein Beispiel?

Gruß, Gerd
 
Ich hoffe, ich werde hier jetzt nicht gesteinigt, andererseits denke ich, es schadet gar nichts, wenn der Fragesteller auch ein bißchen selber knobeln muß, dadurch lernt man das Programmieren. ;-)

Derzeit arbeite ich an einem Delphi-Projekt und da du kein Wort verloren hast, welches Framework und welche IDE du benutzt, denke ich, macht es wenig Sinn, wenn ich dir jetzt irgendeine Lösung einfach auf den Tisch knalle, die dann in deiner IDE und mit deinem Framework nicht funktioniert, aber sehr nach C++ aussieht.

Ergo:
Ich habe kurz eine Delphi (Object Pascal)-Lösung mit der VCL zusammengefrickelt, die aber die generelle Vorgehensweise klar machen sollte, wenn man sich bemüht. An dem Source ist nichts besonderes, was sich nicht so ohne weiteres in C++ nachbilden ließe und auf Pascal-spezifische Sachen (with Memo1.Lines[i] do) habe ich auch verzichtet:

Code:
procedure TfmDebugTest.Button1Click(Sender: TObject);
var
  i: Integer;
  Zeile, Titel, Wert: String;
  
begin
  Memo1.Lines.LoadFromFile('testdata.csv');

  for i := 0 to Memo1.Lines.Count - 1 do
  begin
    Zeile := Memo1.Lines[i];
    Titel := Zeile.Substring(0, Zeile.IndexOf(','));
    Wert := Zeile.Substring(Zeile.IndexOf(',') + 1);
    StringGrid1.Rows[i + 1].Add(Titel);
    StringGrid1.Rows[i + 1].Add(Wert);    
  end;
end;

Damit (und mit der Hilfe in deiner IDE) solltest du dann eigentlich dein Problem lösen können.
 
Komme da jetzt nicht mehr weiter.
Habe es jetzt soweit, dass es in die Schleife reingeht.

Code:
  Memo1->Lines->LoadFromFile("db/buecher.csv");

  for(int i=0; i<Memo1->Lines->Count;i++){


  }

Ich weiss jetzt aber nicht, wie man die Zeile dem DBGrid hizufügt.
In der Hilfe habe ich auch nichts gefunden.

Derzeit arbeite ich an einem Delphi-Projekt und da du kein Wort verloren hast, welches Framework und welche IDE du benutzt, denke ich, macht es wenig Sinn, wenn ich dir jetzt irgendeine Lösung einfach auf den Tisch knalle, die dann in deiner IDE und mit deinem Framework nicht funktioniert, aber sehr nach C++ aussieht.

Habe nicht viel Ahnung von C++. Wo kann ich das nachschauen, welches Framework und welche IDE benutzt wird?

Gruß
 
gerd87 hat gesagt.:
Habe nicht viel Ahnung von C++. Wo kann ich das nachschauen, welches Framework und welche IDE benutzt wird?
Ööööhhhmmm...
Also das sollte man normalerweise schon wissen. IDE = Integrated Developer Environment, auf deutsch die Entwicklungsoberfläche, mit der du arbeitest. Und da solltest du eigentlich schon wissen, was du aufreisst, wenn du deine C++-Programme schreibst, also ob das Microsoft Studio ist oder Borland Developer Studio, Borland CBuilder, Eclipse oder etwas ganz anderes.
Das Framework ist die Routinensammlung, die du verwendest, um irgendetwas unter Windows darzustellen. Wenn du nach "Framework" suchst, findest du hier im Forum sicherlich auch genügend Threads, in denen genau erklärt wird, was Frameworks sind und welche derzeit die gängisten darstellen. Welches davon du nun benutzt - das kannst du nur selber wissen. Bei meinem Projekt hier, habe ich gaaanz am Anfang gesagt ich will ein "Projekt für .net mit VCL-Unterstützung". Was du gewählt hast, kannst du nur selber wissen.
 
Zurück