![]() |
Datenbank: Steht noch nicht fest • Version: ?? • Zugriff über: ???
Welche DB soll ich verwenden ?
Ich brauche eine kleine Datenbank (wenig MB) , da ich nur eine kleine Tabelle erstellen will.
Eine reine Textdatei möchte ich aber nicht, weil dann die Daten sofort sichtbar sind. Möglichst ohne BDE ,und möglichst schlank, weil die Tabelle nur maximal ein paar hundert Einträge haben soll. Außerdem soll es keine Lizenz-Probleme geben, wenn man das ganze veröffentlicht. Wer kann mir einen Tip geben ? Vielleicht dBase ? |
Re: Welche DB soll ich verwenden ?
|
Re: Welche DB soll ich verwenden ?
|
Re: Welche DB soll ich verwenden ?
Bist Du sicher, dass Du überhaupt eine Datenbank brauchst?
Vielleicht bietet es sich an, einfach die Daten hintereinander zu speichern und ggf. eine Key mit Seeknummer... Mavarik :coder: |
Re: Welche DB soll ich verwenden ?
Zitat:
Soll aber nicht zu kompliziert werden, bin noch Anfänger Wie schauts mit dBase aus , braucht man da BDE ? Ich hab gelesen, dass dbase auch ohne BDE funktioniert |
Re: Welche DB soll ich verwenden ?
Finger weg von DBase, das stammt aus der Steinzeit... :zwinker:
Nutze bitte mal die Forensuche. Die Frage nach einer geeigneten Datenbank hatten wir hier schon 1000 mal. |
Re: Welche DB soll ich verwenden ?
Also wenn es nur um wenige Datensätze geht könntest du das ganze evtl. auch als 'Stream' speichern,
das Speichern und Laden geht recht flott. Texte sind zwar theoretisch lesbar in solch einer Datei aber ziemlich durcheinander, wenn du diese Datei mal im Editor öffnest. |
Re: Welche DB soll ich verwenden ?
Zitat:
"Variablenwerte in einem FileStream abspeichern" Das könnte ich probieren Da brauch ich ne StringGrid keine DBGrid, weil es keine richtige Datenbank ist, oder ? |
Re: Welche DB soll ich verwenden ?
Oder... und Schneller geht es nicht... (Wofür war die 713) ?
Delphi-Quellcode:
type Str6 = String[6]; Str20 = String[20]; Str60 = String[60]; Str80 = String[80]; TCooledaten = record Nachname : Str80; Vorname : Str80; Strasse : Str80; PLZ : Str6; Ort : Str60; frei : array[1..713] of byte; // Denksportaufgabe woher kommt die 713? end; TCoolerIDX = record Nachname : Str20; SeekNr : longint; end; TAlleDaten = array[0..1023] of TCooledaten; TAlleIDX = array[0..1023] of TCoolerIDX; var fd_dat : file of TCooledaten; fd_dat2 : file of TAlledaten; fd_idx : file of TCoolerIDX; fd_idx2 : file of TCoolerIDX; Path : array[0..Max_Path] of char; Cooldaten : TCooledaten; CoolIDX : TCoolerIDX; AlleDaten : TAlleDaten; AlleIDX : TAlleIDX; i : integer; begin SHGetFolderPath(0,CSIDL_PERSONAL,1,0,@Path[0]); // Vista! if {Alles im Speicher} then begin Assignfile(fd_dat2,Path+'\Meinprogramm\Daten\Coolbase.dat'); Assignfile(fd_idx2,Path+'\Meinprogramm\Daten\Coolbase.idx'); end; else begin Assignfile(fd_dat,Path+'\Meinprogramm\Daten\Coolbase.dat'); Assignfile(fd_idx,Path+'\Meinprogramm\Daten\Coolbase.idx'); end; {$I- } reset(fd_dat); if IOResult <> 0 then Rewrite(fd_dat); {$I+} if {Alles im Speicher} then begin Blockwrite(fd_Dat2,AlleDaten); Blockwrite(fd_idx2,AlleIDX); end else begin for i:=0 to 1023 do begin Blockwrite(fd_dat,Cooldaten); CoolIDX.Name := copy(Cooldaten,1,20); CoolIDX.SeekNr := i; Blockwrite(fd_idx,Coolidx); end; end; Closefile(fd_dat); Closefile(fd_IDX); |
Re: Welche DB soll ich verwenden ?
Ihr habt Recht, ich mach das ohne Datenbank
Soll nur ne kleine Tabelle werden, da brauch ich keine Datenbank |
Re: Welche DB soll ich verwenden ?
[OT] @Mavarik: Kann das sein, dass ich Dich bei den DevTracks in Offenbach gesehen habe? [/OT]
|
Re: Welche DB soll ich verwenden ?
Also du erstellst ein Record wo deine Daten drin stehen.
z.B.
Delphi-Quellcode:
Type
TMeineDaten = record Vorname : String[15]; Name : String[25]; Alter : Byte; End; var MeineDaten : Array[0..999] of TMeineDaten; Dann kannst du diese Daten wie folgt speichern und wieder laden ... Speichern:
Delphi-Quellcode:
Laden:
Stream := TFileStream.Create('Daten.dat', fmCreate);
try for i := 0 to 999 do Stream.WriteBuffer(MeineDaten[i], SizeOf(MeineDaten[i])); finally Stream.Free; end;
Delphi-Quellcode:
Stream := TFileStream.Create('Daten.dat', fmOpenRead);
try for i := 0 to 999 do Stream.ReadBuffer(MeineDaten[i], SizeOf(MeineDaten[i])); finally Stream.Free; end; Das ganze ist ungetestet, ich habs soweit aus dem Kopf herraus geschrieben. |
Re: Welche DB soll ich verwenden ?
Zitat:
|
Re: Welche DB soll ich verwenden ?
Ich hab noch eine andere Frage, betrifft jetzt nicht dieses Projekt.
Darf man MyBase auch in kommerzieller Software verwenden ? ? ? Ich hab bereits in der "Suche" nachgeschaut, aber nichts dazu gefunden. |
Re: Welche DB soll ich verwenden ?
Zitat:
|
Re: Welche DB soll ich verwenden ?
Finger weg von typisierten Dateien!
Das ist so ziemlich die grottigste Art Daten zu speichern. Ist es nicht viel und ein DBMS lohnt sich nicht? Dann nimm XML und meinetwegen den Databinding Wizzard, der dir die Klassen/Interfaces zum Auslesen der XML Struktur generiert. Es es mehr, dann nimm SQLite. Das ist dann keine richtige DB, das ist mehr ein Dokument. Aber das Format wird dir nicht bei der ersten Gelegenheit um die Ohren fliegen, wie es direktes Mapping von Daten records auf Dateien macht. (Nächstes Jahr kommt Delphi mit 64Bit ;-)) Binäre Daten zu speichern ohne einen wirklich triftigen Grund zu haben kein XML zu nehmen ist schon arg unprofessionell. XML ist ein sebstbeschreibendes Standardformat und man kann es mit allen möglichen Tools benutzen. Außerdem kann einem eine neue Compilerversion nicht die Daten zersägen... |
Re: Welche DB soll ich verwenden ?
Zitat:
Jeder sagt was anderes, die einen schreiben : "Nimm typisierte Dateien", die anderen schreiben : "Nimm ne Datenbank" Was denn nu ? |
Re: Welche DB soll ich verwenden ?
Zitat:
|
Re: Welche DB soll ich verwenden ?
In einer typisierten Datei speichert man aber nur Strings fester Länge, so dass in dieser Hinsicht Unicode kein Problem sein sollte. Auf der DevTracks wurde das sogar ausprobiert, das war auch der Grund, wieso ich mich an Mavarik erinnert habe, der hatte nämlich danach gefragt.
|
Re: Welche DB soll ich verwenden ?
Ich nehm typ. Dateien, jetzt hab ich schon damit angefangen :roll:
|
Re: Welche DB soll ich verwenden ?
Zitat:
XML und diese art der "New Wave" Programmierung sorgt dafür, dass mein Quadcore mit Vista fast so schnell ist wie ein 286er mit DOS aus dem Jahre 1990. Natürlich kann man auch für ein Tool das 2KB groß ist mit viel Datenbank und Komponenten ein Programm von 3MB erzeugen, aber darum ging es ja nicht... Mavarik |
Re: Welche DB soll ich verwenden ?
Zitat:
|
Re: Welche DB soll ich verwenden ?
Zitat:
Delphi-Quellcode:
Mach dann auch nix...
var
fd : File; begin assignfile... reset(Fd,1); Blockwrite(fd,AlleDaten,Sizeof(Alledaten)); Closefile(fd); end; Mavarik PS: BTW. Wir haben ja in Offenbach gesehen, wie viele da .Net programmieren -> NULL nur 1x ASP.NET |
Re: Welche DB soll ich verwenden ?
Zitat:
macht aber irgendwie dennoch keinen sinn, sich um alles selbst zu kümmern aber jeder so, wie er meint :roll: |
Re: Welche DB soll ich verwenden ?
Zitat:
|
Re: Welche DB soll ich verwenden ?
[OT]
Zitat:
[/OT] |
Re: Welche DB soll ich verwenden ?
Zitat:
Nur was passiert , wenn in einem String nichts drinsteht, also nur Leerzeichen ? (' ') Kanns da Probleme geben ? |
Re: Welche DB soll ich verwenden ?
Zitat:
|
Re: Welche DB soll ich verwenden ?
Zitat:
Die Anzahl der Einträge ? Bei einer Datenbank
Delphi-Quellcode:
Anzahl_eintraege := Tabelle.recordcount ;
|
Re: Welche DB soll ich verwenden ?
Vielleicht...
Delphi-Quellcode:
Anzahl:=Stream.Size div SizeOf(TMeineDaten);
|
Re: Welche DB soll ich verwenden ?
zu Beitrag #16: da muss ich Elvis voll recht geben; dieser Fehler wird immer wieder gemacht und ist kaum auszurotten.
Wenn XML und Datenbanken Overkill wären, sollte man zumindest ein CSV-Format schreiben und lesen. Angenommen ein Feld kommt hinzu oder ein Feld muss vergrössert werden - dann gibt es Verschiebungen und es kommt nur noch Müll raus. Man stelle sich vor: Musiksammlung mit 500 CDs eingepflegt. Und irgendwann welchselt man z.B. auf Linux und die wochenlange Arbeit ist für die Katz', weil es kein Programm mehr gibt, das mit der typisierten Datei umgehen kann. :wall: :wall: Bei einer CSV-Datei ist das kein Problem (gilt noch mehr für XML). CVS-Dateien können problemlos mit Excel oder anderen Tools verarbeiten werden. Daten sind wichtiger als Programme! Programme sind kurzlebig, Daten leben möglicherweise viele Jahre. Heute kräht z.B. kein Hahn mehr nach dem Programm Microsoft Word 2.0. Aber die Dokumente, die mit Word 2.0 erstellt wurden können auch heute noch einen hohen Wert haben. (Anklageschriften, Geheimdienstberichte,unveröffentlichte Romane,...) Typisierte Daten sind wie ein Datentresor mit nur einem Schlüssel, der auch noch eine Sollbruchstelle hat. |
Re: Welche DB soll ich verwenden ?
Zitat:
Wie kann ich einen Eintrag im Stream wieder löschen ? z.B. den Eintrag nummer 5 von 10 Einträgen löschen ? |
Re: Welche DB soll ich verwenden ?
Zitat:
Zitat:
Wenn der Platz nicht mehr reicht datenbank konvertieren, Update rausbringen. Geldverdienen! Zitat:
Und dann kommt ein Freeware-Kid und kann auch Dein Datenformat lesen... Supi :wall: :wall: :wall: Das ganze nennt sich Kundenbindung! Daher werden auch alles Daten zusätzlich verschlüsselt, damit keiner auf die Idee kommt sowas nach zu programmieren! Mavarik |
Re: Welche DB soll ich verwenden ?
Zitat:
Ich hab schon in der Hilfe nachgeschaut, auf diese Frage gibt es keine Antwort |
Re: Welche DB soll ich verwenden ?
Zitat:
Sowas nennt sich nicht Kundenbindung, sowas nennt sich lock-in. Kunden HASSEN das, IT'ler HASSEN es wenn irgendein Manager solche Software kauft. Entwickler für firmeninterne Software HASSEN das, weil diese Dateien praktisch nur MÜLL sind. Kundenbindung ist es gute Software zu schreiben, so dass der User sie mit einem guten Gefühl nutzt und kein Problem damit hat dir, als Entwickler auch ein Update zu zahlen, selbst wenn er es nicht dringend braucht. Jemandem beschissene, proprietäre Formate vorzulegen und ihn auf die Art an dich zu ketten sorgt doch nur dafür, dass er sich auf die Suche nach einem Ersatz macht. Das ist genau die Art von Verhaltne, dass unserer BRanche so einen beschissenen Ruf beschert hat. danke. Ich bin zum Beispiel schon seit langem am überlegen, ob es erfolgversprechend wäre, SAS vor der EU anzuzeigen. Denn sie pushen ihr binäres SAS7BDAT Format in allen Grämien und Standardisierungen zur Arzneimittelzulassung ohne das Format selbst zu veröffentlichen. |
Re: Welche DB soll ich verwenden ?
Zitat:
Wie kann ich einen Eintrag im Stream wieder löschen ? z.B. den Eintrag nummer 5 von 10 Einträgen löschen ?[/quote] Ganz simpel! Entwerder im Datensatz ein Flag... (Ist_geloescht:boolean) und beim nächsten neuen Datensatz diesen Platz belegen oder Datei umkopieren und gelöschte datensätze auslassen! Mavarik :coder: |
Re: Welche DB soll ich verwenden ?
Ich habs , so müßte es gehn
Delphi-Quellcode:
procedure TForm2.Datensatz_loeschen;
var Position_Datensatz,K , Anzahl_datensaetze : Integer ; begin for k:= Position_Datensatz to Anzahl_datensaetze do daten[K] := daten[K+1]; end; |
Re: Welche DB soll ich verwenden ?
Das glaube ich nicht, Position_Datensatz und Anzahl_datensaetze sind ja nicht initialisiert.
|
Re: Welche DB soll ich verwenden ?
Also ich sehe hier keinen Grund eine DBMS zu nehmen und alles selber zu machen
|
Re: Welche DB soll ich verwenden ?
Zitat:
Den Satz hab ich nicht verstanden :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:37 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