Datenbank in das fertige Projekt übernehmen

  • VB.NET
  • .NET 4.5

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Philipp.

    Datenbank in das fertige Projekt übernehmen

    Guten Abend,

    ich habe mich vor einiger Zeit in die Programmierung von VB mit dem Visual Studio eingearbeitet und auch schon gute Fortschritte erzielt. Jetzt habe ich eine Frage zu der ich keine richtige Antwort finden konnte. Ich befürchte ich habe nicht die richtigen Begriffe genutzt und hoffe, dass ihr mir auf den richtigen Weg bringt.

    Also ich habe ein Projekt mit einer Datenbank die ich mit einem DataSet sehr schön umsetzen konnte. Damit kann ich dann perfekt arbeiten.

    Wenn ich das Projekt nun veröffentliche ist das DataSet natürlich leer. Ich würde dem Nutzer allerdings eine Stange Daten mitgeben wollen, sprich das DataSet ist schon (teilweise) gefüllt.

    Wie ist die Vorgehensweise um eine Reihe von Daten (eine Datenbank / ein DataSet) in das fertige Projekt zu übernehmen?

    Vielen Dank schonmal,

    Grüße

    Philipp
    Willkommen im Forum.
    Sobald Du Dein Programm gestartet hast, prüfst Du, ob bestimmte Tabellen des tDS oder das komplette tDS leer sind. Wenn ja: Default-Daten reinladen. Entweder sind jene Daten fest im Code verankert (unflexibel, aber ggf. ausreichend, wenn klar ist, was gebraucht wird) oder Du lässt sie per Dateiladen (Stichwort DataSet.ReadXML) in Dein Programm (flexibel, aber ggf. kritisch, wenn der User auf die Idee kommt, die Daten vor dem Erststart zu manipulieren; ggf. behebbar durch Verschlüsselung der Default-Daten).

    Alles davon ausgehend, dass Du zwar den Zugang zur DB bereitstellst, aber keinen direkten Einflussauf die DB hast.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Danke für die Antwort,

    im Code fest verankert fände ich unpraktisch / unflexibel wie du es schon sagtest. Das Mittel der Wahl wäre dann eine xml Datei einzulesen. Dann muss ich mir nur mal überlegen wie ich das aufbaue, habe mit xml files noch nicht so viele Berührungspunkte gehabt, das erste mal jetzt im Zusammenhang mit dem Dataset. Da muss ich mal schauen, dass ich das möglichst komfortabel hinbekomme, denn diese Daten werden definitiv noch variieren (vom Inhalt, nicht von der Struktur).

    Aber nochmal zum Verständnis, diese xml Datei kann ich auch in das Projekt integrieren und sie wird mit "installiert" (oder muss ich diese zum Programm extra "dazu" liefern...?) Da weiß ich noch nicht wie ich das anstellen müsste...

    Viele Grüße

    Philipp


    EDIT: Ich schätze ich konnte mir die Frage schon selbst beantworten. Wenn ich ein XML Dokument zum Projekt hinzufüge wird er es ja wohl mit kompilieren...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Philipp“ ()

    Philipp schrieb:

    Ich schätze ich konnte mir die Frage schon selbst beantworten. Wenn ich ein XML Dokument zum Projekt hinzufüge wird er es ja wohl mit kompilieren...
    Du denkst viel zu kompliziert...
    Wenn dein Dataset steht und funktioniert, brauchst du jetzt nur beim Dataset die 2 Member .ReadXml("myDataFile.xml") und .WriteXml("myDataFile.xml") anwenden.
    Beim Laden deiner Daten musst du halt zuerst prüfen, ob die Datei("myDataFile.xml") bereits vorhanden ist. Sonst erst einmal Daten eingeben und danach abspeichern.
    Die Daten werden dabei in einem Rutsch in das Dataset geschrieben bzw. geladen. (man kann's auch verschlüsseln)
    Das ist natürlich eine primitive Datenhaltung - aber, wenn du damit dein Auslangen hast?
    Danke, das funktioniert wunderbar. Ich kann ganz toll Daten importieren - solange ich im Debug Modus bin. Dort habe ich die Datei im Debug Ordner und sie wird auch direkt gefunden:

    VB.NET-Quellcode

    1. Dim _DataFile As New FileInfo("DB.xml")
    2. Dim ds As New DataSetDB
    3. Dim _input As New FileInfo("Input.xml")
    4. ds.ReadXml(_input.FullName)
    5. ds.WriteXml(_DataFile.FullName)


    Ich habe das xml Dokument im Debug ordner zum Projekt hinzugefügt und bei "ins Ausgabeverzeichnis" auf "immer kopieren" gesetzt. Es wird dann auch eine Datei exportiert die Input.xml.deploy genannt wird. Aber wie behandle ich diese Datei nun richtig? und wie referenziere ich richtig darauf?
    Dankeschön :)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Philipp“ ()

    Es funktioniert in der Debug version, also im Visual Studio. Sobald ich sie "veröffentliche" kommt eine Fehlermeldung "die Datei kann nicht gefunden werden" und dann die Angabe eines absoluten Pfads c/meinBenutzername/.../.../... < Er weiß plötzlich nichts mehr von der Datei.
    ah - du verwendest das "veröffentlichen"-Feature.
    Damit habich keine praktische Erfahrung, aber wenn den genauen Pfad angibst, der da nicht gefunden wird, kann man vlt drauf schliessen, wo er die Datei erwartet.
    Es gibt da so allerlei Windows-Verzeichnisse, es könnte das appdata-Verzeichnis deines Pcs sein oder lokalAppdata oder sowas.

    vlt kennt sich ja jmd aus mittm "Veröffentlichen", wie man da konfiguriert, dass Daten-Files dann auch zu liegen kommen, wo sie erwartet werden.
    C:\Users\Philipp\AppData\Local\Apps\2.0\NYMEM00C.J2M\XEC8CXBJ.RJR\verf..tion_7cc9ddfcf8cae79b_0000.0001_27727c8e84605cf9\Input.xml

    An dieser Stelle ist die Datei auch erwartungsgemäß tatsächlich nicht zu finden. Im Publish ordner wird - wie gesagt eine Input.xml.deploy Datei erzeugt.

    So wie du von dem Veröffentlichen Feature schreibst hört es sich an als wäre es gar nicht empfehlenswert... Falls du da Tipps hast bin ich da auch offen, wie gesagt ich bin noch nicht all zu lange im Thema...

    Grüße
    Na es "veröffentlicht" das Programm. Gibt eine installierbare version aus und bietet darüber hinaus - wenn ich es richtig verstanden habe - auch die Möglichkeit Updates nachzureichen usw. Da ich selbst noch nicht so viel damit gemacht habe kann ich dir auch nicht viel darüber erzählen, ausser das es das gemacht hat was ich wollte -> Bis jetzt. ;)

    Philipp schrieb:

    C:\Users\Philipp\AppData\Local\Apps\2.0\NYMEM00C.J2M\XEC8CXBJ.RJR\verf..tion_7cc9ddfcf8cae79b_0000.0001_27727c8e84605cf9\Input.xml
    An dieser Stelle ist die Datei auch erwartungsgemäß tatsächlich nicht zu finden.
    Klingt so, als ob du so einen vorgeschlagenen Pfad auch nicht willst...
    Leg den Pfad einfach per Code im Arbeitsverzeichnis deiner App an:

    VB.NET-Quellcode

    1. Dim myDataPath = Application.StartupPath
    Da kannst du dir auch ein festes Unterverzeichnis zu diesem Verzeichnis dazu anlegen. Wie du möchtest.
    Wo er die Datei am Ende speichert ist mir relativ egal - wenn er sie mit der angegebenen Deklaration findet . Der angegebenen Pfad ist ja das Verzeichnis des Programms, dort sind die anderen Programmdaten auch zu finden.

    Nur eben das xml dokument nicht...
    Ich probiere das mit dem mydatapath mal aus..

    Philipp schrieb:

    Na es "veröffentlicht" das Programm. Gibt eine installierbare version aus
    was ist "installierbar"?
    Bei Kleinkram, den ich verteilen will, zippe ich einfach das bin\debug\-Verzeichnis und gebe das weiter. Kann man entpacken, wo immer man will, und da läuft es dann auch.
    Natürlich nur, wenn keine Abhängigkeiten zu Dateien in anneren Ordnern noch bestehen - wie das bei dem veröfflichten Teil der Fall zu sein scheint.

    jdfs. bei meine "Primitiv-Verteilung" zu "Installieren" gibts gar nix.

    zB die SolutionExplorerExe in SolutionExplorer - OpenSource habich so veröffentlicht
    also beim Veröffentlichen wird das Programm zusammengeschnürt auf alle wichtigen Teile und dann kann man es mittels einer .exe datei auf dem lokalen Computer installieren, z.B. von einer CDROM (gibts die noch? :p) Ohne, dass man mit einem gezippten Ordner hantieren muss. Es bietet darüber hinaus die Möglichkeit Updates für sein Programm bereitzustellen die automatisch heruntergeladen werden können / müssen (dafür ist natürlich ein webserver notwendig).

    Wie gesagt, ich bin selbst alles andere als ein Profi. Habe den Teil aber hinbekommen, ich musste nur ankreuzen, dass die Datei in das Projekt übernommen werden soll (das war nochmal extra anzukreuzen in den Einstellungen der .xml Datei).