Autor Beitrag
HoPPeL
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: Fr 14.10.11 09:37 
Hi,

kann mir jemand ein gutes Tutorial oder ähnliches empfehlen, wo einfach erklärt wird, wie ich mein Programm mit ner kleinen Datenbank hinterlegen kann. Also kein SQL oder sowas. Habe leider nix passendes gefunden bis jetzt. Wichtig wäre auch eine gute Beschreibung, wie die daten manipuliert, ausgegeben werden können.

mfg
mats74
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189
Erhaltene Danke: 26

Win 10
VS 2017/19, C++, C#
BeitragVerfasst: Fr 14.10.11 09:57 
Hallo HoPPeL

Ich weiss nicht genau, was Du mit einer "kleinen" Datenbank meinst.
Die Verbindungsstrings von einem Programm zu einem Datenbanktyp findest du hier.
Mit dieser Connection String Reference kannst Du die üblichen DB's ansprechen.

Ansonsten müsstest Du dich ein Bisschen genauer ausdrücken (DB-Typ etc.).

_________________
Gruss
mats74
HoPPeL Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: Fr 14.10.11 10:04 
Habe gehofft, dass sich einfache Datenbanken über so ein dataset.xsd erstellen ließen?
Oppi35
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95
Erhaltene Danke: 3



BeitragVerfasst: Fr 14.10.11 10:33 
Schau Dir mal bitte das folg. Buch ab Kapitel 20 an:
openbook.galileocomp.../visual_csharp_2010/

Eine einfache Möglichkeit, Daten in einer Datenbank zu verwalten, ist der SQL-Server Compact. Die Daten werden hier in einer Datei gespeichert (.sdf). Für einfache Zwecke optimal.
Für einfache Zwecke bedeutet:
Du kannst Tabellen darin verwalten, aber z.B. keine Views oder Stored Procedures etc. speichern, wie Du es in einem richtigen SQL-Server kannst. Eine solche Datenbank kannst Du mit Visual Studio 2010 Express einfach anlegen über:
Extras-> Mit Datenbank verbinden
mats74
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189
Erhaltene Danke: 26

Win 10
VS 2017/19, C++, C#
BeitragVerfasst: Fr 14.10.11 10:39 
Hallo HoPPeL

Eine Möglichkeit zu einem flexiblen Datenspeicher zu kommen ist sicherlich die Verwendung von XML-Dateien.
Du lädst das Dataset aus der XML-Datei und speicherst die manipulierten Daten wieder in die XML-Datei zurück.
Natürlich mit all seinen Vor- und Nachteilen.

_________________
Gruss
mats74
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 14.10.11 10:50 
Definiere 'einfach' oder 'klein' in Bezug auf deine Daten. Wenn wir eine Vorstellungen haben was für Daten (insbesondere deren Struktur) du persistieren willst lässt sich auch eine entsprechende Methode vorschlagen.
HoPPeL Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: Fr 14.10.11 11:05 
naja handelt sich um einfache Daten wie ymin, xmax oder ob eine cbox makiert war oder nicht.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 14.10.11 11:16 
Das letztere hört sich mehr nach Anwendungseinstellungen als nach Daten (im klassischen Sinn) an. Dafür könnte/sollte man dann auch die ApplicationSettings verwenden.

ymin, xmax ist jetzt ein bißchen arg elementar. In einem OO System brauchen wir wohl hier über nichts kleineres als Klassen nachdenken;) Was ich wissen wollte war mehr was für eine Struktur von Daten du hast insbesondere wie du die im Speicher darstellst also z.B als simple Liste(n), als Tabelle(n), als einen Graph von Klassen etc.
HoPPeL Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: Fr 14.10.11 11:23 
Ah okay :oops:

Naja gespeichert werden sollen Tabellen, die auch über relationen miteinander verbunden werden sollen.
Bis jetzt werden Daten in selbst angelegenten Strukturen gespeichert.
Aber das speichern in diesen Datasets schien einfachc und unkompliziert, weswegen ich mich darüber informieren wollte
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 14.10.11 11:32 
Zitat:
Bis jetzt werden Daten in selbst angelegenten Strukturen gespeichert.

Also einfach in einer simplen Klasse beziehungsweise einem Verbund von simplen Klassen (Mit simpel meine ich keine Datasets/DataTables oder ähnliches)? Dann kannst du diese einfach per XMLSerialiser auf die Platte serialisieren und wieder deserialisieren.
mats74
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 189
Erhaltene Danke: 26

Win 10
VS 2017/19, C++, C#
BeitragVerfasst: Fr 14.10.11 11:45 
Hallo Ralf

Deine Lösung finde ich tip top.
Dies ist sicher eine gute und flexible Variante für seine Speicherproblematik zu lösen.

_________________
Gruss
mats74
HoPPeL Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: Fr 14.10.11 12:01 
also nochmal für mich laien:

lieber die finger von den dataset.xsd und lieber per XMLSerialiser arbeiten?

mfg
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 14.10.11 12:05 
Hallo,

um trotzdem auf die Ursprungsfrage zurückzukommen.
Für den MS SQL Server (Express) gibt es ein Tool namens XSD2DB

Und um die Zugriffsfunktionen für Linq-to-SQL auf die DB als Code zu erzeugen, gibt es das Tool SqlMetal (welches unter "Microsoft SDK\Windows" zu finden ist).
Und es gibt sogar ein GUI-Tool hierfür: SqlMetalBuilder

P.S. Und selbst für die SQL Server Compact Edition gibt es einen Trick, um Linq-to-SQL damit zu nutzen: code-inside.de/blog/...inq-to-sql-verwenden
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 14.10.11 12:15 
Zitat:
lieber die finger von den dataset.xsd und lieber per XMLSerialiser arbeiten?


Das wäre zu einfach. Wenn du im Speicher bereits ein Dataset verwendest dann würde ich einfach ReadXml/WriteXml verwenden wenn du das Dataset ohne Datenbank benutzen willst. Wenn man im Speicher schon eine Klassenstruktur hat würde ich eher einen der Serializer nehmen (eben z.b den XMLSerializer oder einen für JSON oder Binär oder oder ...). Kommt aber auch drauf an welche 'Features' du brauchst. Bei einem Serializer bekommst du sozusagen einfach einen Snapshot. Am Dataset würde, wenn man das will, würde noch der Bearbeitungszustand hängen. Wirklich dumm wäre nur wenn man im Speicher irgendeine Klassenstruktur hat und die nur um die mal schnell lokal irgendwo abzulegen in eine Dataset überführt um das dann zu serialisieren. Und letztlich ist es auch nicht wirklich schwerer eine embedded Datenbank dafür zu verwenden auch wenn man dann mit SQL zu tun hat. Wie z.B. den erwähnten SqlServer Compact. Wenn SQL stört kann immer noch einen der gängigen Objectrelationen Mapper dazwischen schalten und verwenden.