Announcement

Collapse
No announcement yet.

Auslesen einer Datenbank / Suche

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Auslesen einer Datenbank / Suche

    Hallo zusammen,

    folgende Situation (eigentlich ist es viel umfangreicher, aber um meine Frage beantworten zu können müsste es eigentlich reichen, was ich jetzt schreibe )

    Ich hab eine Form erstellt mit einer Textbox.
    In dieser Textbox soll eine Zahl eingegeben werden.
    Wenn ich diese Zahl dann eigegeben habe und auf einen OK-Button klicke, soll eine neue Form aufgehen. Soweit noch alles easy, jetzt sind aber in der nächsten Form diverse andere Textboxen, eine für einen Titel, eine für Beispielsweise Name, eine für Vorname etc.

    Diese Textboxen sollen gefüllt werden. Hinter dem ganzen steht eine Datenbank, in der ID´s vergeben wuden für jeden "Mitarbeiter". Diese Daten (Name etc.) sollen anhand der in der vorherigen Form eingegebenen Zahl in der Datenbank gesucht und in die Textboxen der 2. Form gesteckt werden.
    Ich hab nur garkeinen Plan, wie ich das machen kann

    Ich hoffe mein Problem ist klar geworden, über rege Antworten würde ich mich sehr freuen.

    MfG

    Florian B.

  • #2
    Na Gott sei Dank fehlen Informationen wie

    - DB System
    - Anbindung
    - Tabellenaufbau


    usw.
    Christian

    Comment


    • #3
      an sich ist das DB-System dahinter ja egal, solang du weißt, wie du eine Verbindung bekommst.
      Wenn du die Verbindung hast, lädst du die angeforderten Daten in ein Dataset und bindest die entsprechende Textbox an die entsprechende Column im Dataset.
      Genauer kann ich es dir jetzt leider auch nicht sagen, aber so als schubs in die rchtige Richtung sollte es reichen

      Comment


      • #4
        Hallo Andreas!
        Da ich selber noch ein Anfänger auf dem Gebiet VB.Net bzw. SQL bin, mich aber gerade dort hinein arbeite, wollte ich mal Fragen wofür er denn ein Dataset braucht?

        Ich meine er übergibt ja einen ID Wert von einer Form an eine andere. Mithilfe dieser ID kann er ja, nachdem er eine Verbindung zum Server hergestellt hat, einfach eine Abfrage like

        SELECT [Mitarbeitername] FROM [tblMitarbeiter] WHERE [ID] = ÜbergebeneID

        zu Server schicken und das entsprechende Result dann an die Eetsprechende Textbox übergeben. Und das halt für jede Textbox machen.

        Comment


        • #5
          schon, aber wenn er jetzt für jedes Feld eine neue Datenbankanfrage macht, dann wird der Traffic zwischen DB und Anwendung ein wenig viel.
          Wenn also viele Felder zu füllen wären, wäre es doch sicherlich performanter, die DB nur einmal nach ihren Daten zu fragen und dann mit einem Dataset oder vllt auch einer Datatable weiter zu arbeiten.
          Das ist zumindest mein erster Gedanke bei sowas.
          Aber verzeiht mir wenn ich da falsch liege, ich mach sowas auch nur selten

          Comment


          • #6
            Hmmmm, okay.....hab ich in der Hektik die ich hier habe vollkommen vergessen.

            Es handelt sich um eine Access-DB.
            Tabellenaufbau kann erstmal unbeachtet lassen, gehen wir davon aus, dass es sich um eine Tabelle handelt, die eine ID als Schlüssel hat, dazu 3 Spalten mit den Namen "Titel", "Name" und "Vorname".

            Ein OleDbAdapter, DbConnection & DataSet sind schon erstellt, in den Textboxen wird auch schon ein Mitarbeiter angezeigt, nur nicht der, dessen ID ich ein der vorherigen Form eingegeben habe.

            Und was du mit der Anbindung meinst, weiss ich jetzt nicht so genau.....bin auch noch Neuling auf dem Gebiet
            Aber falls du das hier meinst (Microsoft.Jet.OLEDB.4.0), dann bitteschön

            Comment


            • #7
              Wie fragst du den Mitarbeiter aus der Datenbank ab? (Select)
              Wann fragst du ihn ab?
              Wenn du ihn in der neuen Form abfragst, wie und wo übergibst du die ID?

              Comment


              • #8
                Der Mitarbeiter wird über das Select aus dem OleDbDataAdapter abfragt.
                Dort steht drin "Select ID, Titel, Name, Vorname From Mitarbeiter".
                Jetzt muss ich dem ja aber noch irgendwas sagen mit "Where ID = xxx".
                Und da bleibts dann hängen, weil ich nicht weiss, wie ich die Zahl, die ich in der vorherigen Form eingegeben habe, in dieses SQL Statement packen muss/soll.

                Comment


                • #9
                  Code:
                  "SELECT ID, Titel, Name, Vorname From Mitarbeiter WHERE ID="+ UebergebeneId.ToString
                  So sollte es am einfachsten gehen. Birgt aber natürlich noch das Risiko einer SQL-Injection.
                  Ansonsten schau dir mal das Command-Objekt vom OleDBCommand an. Dort kannst du Parameter definieren, was die Gefahr einer SQL-Injection verringern sollte.

                  Comment


                  • #10
                    Andreas hat schon gewarnt, dass sein Vorschlag nicht gut genug ist. Besser ist:
                    Code:
                    "SELECT ID, Titel, Name, Vorname From Mitarbeiter WHERE ID=?"
                    Dazu gehört dann:
                    Code:
                    myCommand.Parameters.AddWithValue("ID", UebergebeneId);
                    Abschließend musst Du noch sicherstellen, dass im "neuen" Formular die richtigen Daten angezeigt werden. Dazu gibt es (wie fast immer unter NET) mehrere Möglichkeiten: Du kannst die DataTable vor dem neuen Fill-Befehl löschen; Du kannst eine BindingSource benutzen und diese an das neue Formular binden und dort den gewünschten Datensatz auswählen.

                    Allgemein gibt es eine Einführung z.B. unter den VB-Büchern der OpenBooks.

                    Jürgen

                    Comment


                    • #11
                      Oh man, das wird mir zu krass ^^


                      @Jürgen:
                      Ich hab jetzt das SQL-Statement im OleDbDataAdapter geändert, wie dus mir gesagt hast

                      Allerdings weiss ich nicht, wie iund wo ch das andere Stück Coding einfügen soll!

                      Ich blick langsam echt nimmer durch

                      Comment


                      • #12
                        Hat denn keiner für mich hier ein bisschen Hilfe anzubieten ....

                        Comment


                        • #13
                          also ich biete dir eine live hilfe über ICQ an, 244 032 476.
                          Aber zuerst mal machst du dich schlau! ;-)

                          An sich ist das mit vb.net ein Kinderspiel weil viele automatismen dir die Arbeit abnehmen.
                          Ich erklärs jetzt mal aus dem stegreif da ich hier daheim keine Datenbank hab, sorry.

                          Öffne Visual Studio und dein Projekt, gehe oben im Menü auf
                          Daten -> Neue Datenquelle hinzufügen
                          Der Assistent sollte selbsterklärend sein.

                          So damit verbindest du dich automatisch zur Datenbank,
                          bist du Fertig geh im Menü auf
                          Daten -> Datequelle anzeigen

                          Jetzt kannst du per Drag & Drop die gewünschte Tabelle in dein Programm ziehen.
                          Das alles ist noch über Gridview. Die kannst du aber löschen genauso wie die Toolbar.
                          Es wird dir nämlich schon viel von selbst eingefügt und das sehr komfortabel

                          Der Rest liegt an dir. Willst du es individuell (manuell) gestalten würd ich mir mal den Import von
                          System.Data.SqlClient

                          anschauen.

                          Da gibt es genügend Objekte über die du dich schlau machen kannst!
                          http://msdn.microsoft.com/en-us/libr...qlcommand.aspx

                          mit der SQLConnection baust du über den sog. Connectionstring
                          eine Verbindung auf, und über Das Objekt SQLCommand kannst du einen
                          SELECT/INSERT etc. Befehl absetzten und über den SQLReader auslesen!!

                          Wie gesagt die live Hilfe biete ich dir an, aber ich bin sicher du bist stolzer wenn du es dir selbst erarbeitest!

                          P.S. Ich hoffe ich hab nicht am Thema vorbeigeredet haha ;-DD
                          Zuletzt editiert von jesus.online; 27.08.2008, 14:35.

                          Comment


                          • #14
                            Okay, hab dich geadded, hab hier auf der Arbeit ein bisschen Probleme, mich ins ICQ einzuloggen.....meine ICQ ist 223484436....

                            Wenn du dann online bist, dann meld dich einfach mal, werde versuchen, solang wie möglich online zu bleiben

                            MfG

                            Flo

                            Comment

                            Working...
                            X