vorhandene Datenbanken auflisten

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    vorhandene Datenbanken auflisten

    Hy Leute,

    zur Zeit baue ich ein Programm, um eine Datenbank auszulesen und zu ändern.

    Hier mal mein Code zur Verbindung:

    Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim con As New MySqlConnection
    3. Dim cmd As New MySqlCommand
    4. Dim reader As MySqlDataReader
    5. con.ConnectionString = "Data Source=127.0.0.1;database=Kunden;UID=Benutzer;pwd=Passwort"
    6. cmd.Connection = con
    7. cmd.CommandText = "SELECT * FROM Stammdaten"
    8. Try
    9. con.Open()
    10. reader = cmd.ExecuteReader
    11. Do While reader.Read
    12. ListBox1.Items.Add( _
    13. reader("Nummer") & " " & _
    14. reader("vorname") & " " & _
    15. reader("Nachname"))
    16. Loop
    17. reader.Close()
    18. con.Close()
    19. Catch ex As Exception
    20. MsgBox(ex.Message)
    21. End Try


    Jetzt möchte ich aber sowas wie ein Anmelde-Fenster.
    Benutzer und Passwort sollte kein Problem sein,

    Aber wie Liste ich alle vorhande Datenbanken auf?!
    Später hab ich nach einigen Test sicher nicht nur "Stammdaten" sondern auch weitere.
    Man sollte wählen können, sofern diese Datenbanken unabhängig von dem Programm sein können.

    Vielen Dank und Grüße
    Bemme
    Nimm doch für jede Spalte eine eigene Listbox

    Wenn ich mich nicht vertu liest deine Datenbank immer nur den Letzten teil aus.
    Und nicht jeden erste. und in eine Listbox kannst du soviel ich weiß nur 1 Spalte eintragen

    So ganz allgemein ist das sehr unüblich, weil um alle Datenbanken zu listen, nimmt man besser ein fertiges DB-Verwaltungs-Tool, statt selbst eines zu schreiben.
    Ich frage mich auch, ob du wirklich alle Datenbanken listen willst, oder nur alle Tabellen einer bestimmten Datenbank.
    Aber auch hier nimmt man besser ein geeignetes Tool.
    Was ihr alle mit der Listbox wollt, das war lediglich ein Test, ob er eine Verbindung findet und diese auswerten kann.
    Diese Variante ist noch nicht ausgearbeitet...mir geht es ja um die Wahl der Tabelle.

    So ganz allgemein ist das sehr unüblich, weil um alle Datenbanken zu listen, nimmt man besser ein fertiges DB-Verwaltungs-Tool, statt selbst eines zu schreiben.
    Ich frage mich auch, ob du wirklich alle Datenbanken listen willst, oder nur alle Tabellen einer bestimmten Datenbank.
    Aber auch hier nimmt man besser ein geeignetes Tool.


    Ja, ich weiß schon...ich möchte ja auch nur die Tabellen auflisten.

    SQL-Abfrage

    1. [b]Beispiel:[/b]
    2. Ich habe eine Datenbank "Kunden".
    3. Dahinter stecken 2 Tabellen "Strom" und "Gas".
    4. Jetzt soll man bei meiner Anmeldung halt wählen dürfen, ob man Gas oder Strom-Kunden möchte...
    5. Dazu muss er eben die Datenbank "Kunden" öffnen und alle Tabellen auflisten.


    Gruß

    bemme90 schrieb:

    Jetzt soll man bei meiner Anmeldung halt wählen dürfen, ob man Gas oder Strom-Kunden möchte... Dazu muss er eben die Datenbank "Kunden" öffnen und alle Tabellen auflisten.

    nö, muß man nicht.
    Wenn du eine Anwendung zur Gas/Strom - Kundenverwaltung schreibst, dann hast du die entsprechende DB ja selbst designed, und wenn du Daten abfragst, solltest du die TabellenNamen in der DB bereits kennen - hardcodet gewissermaßen.

    Aber ich bin mir immer noch nicht sicher, ob du zwischen Datenbank und Datenbank-Tabelle richtig unterscheidest.

    Oder hast du wirklich eine Anwendung, die Gas und Strom-Kunden verwaltet, und die verteilt ihre Daten auf 2 Datenbanken?
    Ja, ich könnte die Datenbank auch hart als Code eintragen.

    Mir ging es einfach um die Möglichkeit.

    Ich hab eine Datenbank mit zwei Tabellen:

    Datenbank "Kunden" → Datenbank-Tabelle "Strom" → Datensätze
    "-" → Datenbank-Tabelle "Gas" → Datensätze

    Ich dachte halt, dass es möglich wäre, dass VB alle Datenbank-Tabellen der Datenbank "Kunden" auflistet und man dann wählen kann.

    Ich kann natürlich sagen "wenn Auswahl = Gas, dann nimm Tabelle "Gas".
    Aber ich wollte es halt flexibel halten...vllt. kommt später mal eine Tabelle "Wärme" dazu, dann brauch man das Programm nicht mehr umschreiben.

    PS: Das "Programm" ist bloß zum testen, damit ich in SQL und VB einsteige.
    Somit sollte einige Ausführungen nicht ganz so kritisch beäugt werden. Ich will testen, was geht und was geht nicht.
    Was ich vor allem kritisch beäuge ist, dass du fortgesetzt die Begriffe "Datenbank" und "DatenbankTabelle" durcheinanderwirfst.
    Mit so konfusen Begriffen kann man nicht kommunizieren - ja man kann nicht mal vernünftig denken, wenn man so denkt.

    Und die Vorstellung, "Strom"-Daten, "Gas"-Daten, und später noch "Wärme"-Daten in getrennten Tabellen zu verwahren, aber auf einheitliche Weise verarbeiten zu können, kannstedir gleich aus dem Kopf schlagen.
    Allein schon wegen der unterschiedlichen Maßeinheiten wird das nix.

    Najaa - unter Umständen ist das doch möglich, nur musst du dafür ganz anders modellieren. Dann kann es sich erübrigen, nachträglich eine zusätzliche Tabelle für "Wärme" einzuführen.

    Derzeit sieht dein Datenmodell ja so aus:
    Kunde->StromMenge
    Kunde->GasMenge

    (soll später hinzukommen: Kunde->WärmeMenge)

    Ein anderes Datenmodell könnte später hinzukommendes mit Leichtigkeit einschließen, auch ohne dass die DB-Struktur dafür zu ändern wäre.
    Mach dir eine Tabelle "MengenTyp", und da kannst du Datensätze anlegen, die einen MengenTyp spezifizieren, etwa:

    Quellcode

    1. Typname MassEinheit EinheitsPreis
    2. Strom Kwh 1.2
    3. Gas m^3 5
    4. Wärme KJ 0.04


    Und dann das Datenmodell so aufziehen:
    Kunde->Menge
    Mengentyp->Menge

    Also jede MengenAblesung verweist auf einen Kunden, aber zusätzlich auf einen MengenTyp.

    Dafür kannst du ein einheitliches Gui bauen, wo man einen Kunden anwählt, einen MengenTyp vorgibt, und dann kann man seine Strom/Gas/Wärme-Rechnung bearbeiten.
    Und um später noch WasserRechnungen zu bearbeiten ist nur ein weiterer MengenTyp-Datensatz anzulegen :) - ohne jede Änderung der DB-Struktur oder des Codes.

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

    Wenn meine Begriffe so verwirrend ist, dann klär mich doch auf, wie es richtig heißt.

    Bin recht neu in der Materie.
    Und ich bin jetzt von den Bezeichnungen in phpMyAdmin ausgegangen.

    Da gibt es Datenbanken...zu jeder Datenbank gibt es Datenbank-Tabellen und in jeder Tabelle dann Datensätze.

    Wie soll es denn deiner Meinung richtig heißen?!


    Aber trotzdemvielen Dank für deine Hinweise...dank deiner Hilfe hab ich jetzt ungefähr eine Vorstellung, wie ich das aufbaue.
    Das probier ich einfach heut Abend aus...wird schon klappen.

    bemme90 schrieb:

    Da gibt es Datenbanken...zu jeder Datenbank gibt es Datenbank-Tabellen

    Dassis schoma richtig.

    Nur

    bemme90 schrieb:

    Datenbank "Kunden" → Datenbank-Tabelle "Strom"
    ist halt begrifflicher Unfug, denn Kunde und Strom sind Tabellen in ein und derselben DB.

    Wir befinden uns hier auf der konzeptionellen Ebene einer Datenbank, und da ist auch dieses

    bemme90 schrieb:

    zu jeder Datenbank gibt es Datenbank-Tabellen und in jeder Tabelle dann Datensätze.
    verwirrend, denn auf konzeptioneller Ebene hat eine Datenbank-Tabelle keine Datensätze, sondern da gehts höchstens um die Tabellen-Spalten, die zu konzipieren sind.

    Dass inne Praxis natürlich Datensätze in einer Tabelle sind, und dass so ein Datensatz für jede Spalte einen Wert aufweist steht gewissermaßen auf einem anneren Blatt - damit hast du dann im Code zu tun.