1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Eigene Datenbank

Dieses Thema im Forum "C/C++" wurde erstellt von gerd87, 31. August 2006.

  1. gerd87

    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ß
  2. Nico Graichen

    Nico Graichen aka gemballa Moderator

    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.
  3. gerd87

    gerd87 Erfahrenes Mitglied

    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?
  4. CSANecromancer

    CSANecromancer Erfahrenes Mitglied

    Kriegst du die CSV-Daten in den Speicher?
    Werden die Daten an das DBGrid übertragen?
    Sprich: Wo genau liegt der Hund begraben? :)
  5. gerd87

    gerd87 Erfahrenes Mitglied

    Genau da komme ich nicht weiter.
    Ich weiss nicht, wie man die CSV-Datei in den Speicher lädt und an das Grid weitergibt.
  6. CSANecromancer

    CSANecromancer Erfahrenes Mitglied

    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? :)
  7. gerd87

    gerd87 Erfahrenes Mitglied

    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
  8. CSANecromancer

    CSANecromancer Erfahrenes Mitglied

    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 do) habe ich auch verzichtet:

    Code (Text):
    1.  
    2. procedure TfmDebugTest.Button1Click(Sender: TObject);
    3. var
    4.   i: Integer;
    5.   Zeile, Titel, Wert: String;
    6.  
    7. begin
    8.   Memo1.Lines.LoadFromFile('testdata.csv');
    9.  
    10.   for i := 0 to Memo1.Lines.Count - 1 do
    11.   begin
    12.     Zeile := Memo1.Lines[i];
    13.     Titel := Zeile.Substring(0, Zeile.IndexOf(','));
    14.     Wert := Zeile.Substring(Zeile.IndexOf(',') + 1);
    15.     StringGrid1.Rows[i + 1].Add(Titel);
    16.     StringGrid1.Rows[i + 1].Add(Wert);    
    17.   end;
    18. end;
    19.  
    Damit (und mit der Hilfe in deiner IDE) solltest du dann eigentlich dein Problem lösen können.
  9. gerd87

    gerd87 Erfahrenes Mitglied

    Komme da jetzt nicht mehr weiter.
    Habe es jetzt soweit, dass es in die Schleife reingeht.

    Code (Text):
    1.   Memo1->Lines->LoadFromFile("db/buecher.csv");
    2.  
    3.   for(int i=0; i<Memo1->Lines->Count;i++){
    4.  
    5.  
    6.   }
    Ich weiss jetzt aber nicht, wie man die Zeile dem DBGrid hizufügt.
    In der Hilfe habe ich auch nichts gefunden.

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

    Gruß
  10. CSANecromancer

    CSANecromancer Erfahrenes Mitglied

    Öööö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.

Diese Seite empfehlen