Simple Datenbank mit VC++ auslesen
-
Hallo,
ich bin noch Programmieranfänger und möchte eine kleine Datenbank erstellen und mit VC++ auslesen.
In der Datenbank selbst soll über eine Artikelnummer auf bestimmte Produktdaten zugegriffen werden,
also eigentlich nicht mehr als eine 2D-Matrix.Erst hatte ich mir überlegt, die Daten in Excel abzulegen, wovon aber in mehreren Foren abgeraten wurde.
Die Daten in ein Ini-File zu schreiben ist mir zu umständlich, weil ich über 100 Datensätze habe und mir nicht vorstellen kann, sie dort einigermaßen komfortabel auslesen zu können.Im Moment denke ich darüber nach, die Daten in ein xml-File zu schreiben und sie mit VC++ auszulesen...Problem: ich finde nur Dokumentationen zu Java, C#, usw.
Vielleicht hat ja jemand eine Idee, wie ich sich die Aufgabe ohne großen Aufwand erledigen lässt. Zu jeder Artikelnummer sind ca. 5-8 Daten vorgegeben, die ich in einem Dialogfeld ausgeben möchte. Dürfte doch eigentlich kein großes Problem darstellen, oder?!
Danke für eure Hilfe,
Krommi
-
Hallo!
Auf Excel kann man afair auch per ODBC zugreifen.
Oder auch auf andere Datenbanken. Wenn du dich dafür entscheidest, hast du dort einiges zu lesen.Zu XML weiß ich leider nichts.
Eine Ini wäre wirklich nix, da fänge ich eine einfache CSV-Datei schon besser.
Die könntest du mit CStdioFile bearbeiten.
Oder du arbeitest mit CArchive.So, nun hast du was zum Nachlesen. :xmas1:
-
Kleine Standalonedatenbank vielleicht. Kann da nur www.sqlite.org empfehlen.
-
Hallo,
ich würde es mit XML versuchen, da gibt es einen sehr guten freien und plattformübergreifenden Parser namens libxml, zu finden unter http://www.xmlsoft.org .
-
Die besten Optionen sind meiner Meinung nach:
* ADODB + Datenbank (JET Engine und SQL Server Express sind z.B. gratis)
* SQLite
* XMLVon ODBC würde ich dir eher abraten, das ist etwas umständlich zu verwenden. Plus du kannst über ADODB auf alle ODBC Treiber zugreifen, von daher hast du also keinen Nachteil wenn du ADODB stattdessen verwendest.
Was ADODB angeht, ADODB ist mit Visual Studio sehr einfach zu verwenden, du holst dir einfach die typelib mit #import rein, und der nette Visual C++ macht dir die nötigen Headers dazu. Auf die Art ist die Verwendung in C++ echt sehr einfach, verglichen mit dem IDispatch gemurks mit dem man sich sonst herumschlagen müsste. Und mit ADODB hast du wie gesagt Zugriff auf ODBC Datenquellen, sowie auf den SQL Server Express und einige andere DBMSs für die es native ADODB Treiber gibt. Ich glaube mich zu erinnern dass man mit ADODB auch XML Files verwenden kann, bloss hab ich das nie verwendet - keine Ahnung wie gut das geht.
SQLite ist eine kleine schnelle DB-Engine mit SQL Parser. An und für sich ein tolles Teil, relativ einfach zu verwenden, kann dafür aber nicht viel. z.B. kannst du während du eine Abfrage offen hast im selben Table nicht schreiben, was störend sein kann. Soweit ich mich erinnere kannst du in der ganzen DB nicht schreiben während du eine Abfrage offen hast, sondern bloss in temporären Tables.
XML schliesslich wäre eine gute Möglichkeit wenn du nicht unbedingt die Funktionen einer "echten Datenbank" brauchst, dafür aber die Daten als einfache Textfiles vorliegen haben willst. Hier kann ich dir nicht wirklich eine Engine empfehlen, da ich mit XML DB Engines keine Erfahrung habe. Was ich im Google schnell gefunden habe ist "Berkeley DB XML" - die ist frei für Open Source Projekte bzw. welche die nicht an dritte weitergegeben werden, also quasi "in house" Projekte.
p.S.: für SQLite gibts einige gute Tools, also nicht dass du dich schreckt und denkst du kannst dann nurmehr mit deinem eigenen Programm auf die Daten zugreifen. Gibt nen Haufen Browser und Konverter für SQLite files. Und der riesen Vorteil von SQLite ist eben dass du 0 Abhängigkeiten zu deinem Programm hinzufügst, den SQLite Code kannst du als statische Library linken, das Programm wird dadurch um ein paar K grösser, und das wars. Speicher (RAM) braucht das Teil auch so gut wie keinen, und schnell isses und ich fange an mich zu wiederholen und geshalb Schluss
-
Hallo,
schau in der Hilfe nach CDatabase und/oder CDaoDatabase.
Da gibt es Beispiele wie man mit den beiden Klassen der MfC
auf eine Datenbank zugreift.
-
Nochmal: ich würde von CDatabase (ODBC) abraten. Und von CDaoDatabase auch. Dringend. MS selbst rät davon ab DAO noch irgendwo zu verwenden. DAO != ADO. DAO böse, ADO gut
-
Hast du denn mal Link zu ein oder mehreren netten Tutorials dazu?
Ich verwende aktuell zar viel ODBC, aber bei neuen Projekten kann man sich ja auch mal umgucken.
-
Tutorials gibts viele, such einfach nach "adodb tutorial c++" im Google. Die meisten machen das #import aus dem "c:\program files\..." Ordner, ich kopiere mir die TLB aber immer in ein Unterverzeichnis von meinem Projekt.
Wie man dann Connections aufmacht und Queries lostritt steht in den Tutorials die man wie gesagt schnell über Google findet ganz gut beschrieben, wie man auf Felder zugreift eigentlich auch.
Wenn du dann mal ein funktionierendes Sample hast kannst du dir einfach die Doku in der MSDN angucken, die meisten Sachen sind sehr straight-forward.