Wert aus MySQL-Tabelle als String auselesen

  • VB.NET

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von 0luca0.

    Wert aus MySQL-Tabelle als String auselesen

    Moin Leute

    Ich hab ein wenig gesucht und war verblüfft, dass ich da fast nichts gefunden habe. Ich möchte in der Tabelle "test_tabelle" jede Zeile suchen, in der in der Spalte "test_spalte" (Primärschlüssel) den Wert "test" haben. Dann möchte ich in der selben Zeile den Wert aus der Spalte "zweite_spalte" auslesen und mir als String ausgeben lassen..
    Klingt ja eigentlich nicht wirklich schwierig, aber irgendwie schaff ich es selber nicht und im Internet finde ich auch nichts schlaues.

    Kann mir hier jemand helfen?

    LG Luca
    Ah, hat dein Primärschlüssel mehrfach den selben Wert?
    Abgesehen davon gehört dass zu den SQL Grundlagen

    SELECT zweite_Spalte FROM test_tabelle
    WHERE test_Spalte = 'test'

    Sorry für die fehlende Formatierung. Gesendet vom Handy
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
    Öhm, du bekommst, u.U., mehrere Werte zurück. Ein einfaches ToString reicht da nicht.

    Schau dir noch mal die MSDN zum SQLDataReader an
    msdn.microsoft.com/de-de/libra…cs-lang=vb#code-snippet-2
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
    Am Besten wäre es jedoch sich den DbDataReader durchzulesen, da beide(SqlDataReader und MySqlDataReader) Konform mit diesem sind.

    Ein DataReader beinhaltet das Ergebnis aus einer Abfrage. Irgendeiner. Der DataReader kennt jedoch weder die Anzahl der Spalten noch deren Namen, noch deren Datentypen, ohne dass man ihn dazu auffordert diese auszugeben. Auch die Zahl der Rows ist erst einmal unbekannt.

    Das einfachste ist es eine While-Schleife zu nehmen, deren Bedingung das Ergebnis der Read() Methode darstellt.
    Die Read() Methode gibt true zurück, wenn ein weiterer Datensatz gefunden wurde. False wenn nicht. Damit man auf den ersten Datensatz kommt, muss Read() einmal aufgerufen werden.

    Bist du nun auf einem Datensatz, so musst du nun die GetIrgendwas() Methode aufrufen, die zum Datentyp der Spalte passt. Hast du nen Varchar Text oder sonst einen typen, der mehrere charachter umfasst, nimmst du GetString(). Für Zahlentypen greifst du auf die MEthoden GetInt32(), GetDouble(), usw. zurück.

    Für einzelne Zeilen oder einfache Aufrufe ist der DataReader ein praktisches Tool, doch gewöhne es dir bitte nicht an damit zu arbeiten.
    Was du in Zukunft lernen solltest ist die Arbeit mit DataAdapter, an die Controls dann gebunden werden können, die sich dann die Daten "selbst" besorgen.
    Der Sinn dahinter ist, dass du nicht für jeden Pups händisch die daten abfragst und ausliest, sondern das Framework für dich arbeiten lässt.

    Und dank dem System.Data.Common Namespace ist es unglaublich einfach Anwendungen zu schreiben, die nichts/nicht mehr viel von der darunter ligenden Datenbank wissen müssen.
    Aber das ist ein Kapitel für spätere Tage ;)
    Eine Methode die ich jetzt gefunden habe und extrem einfach zu benutzern ist, ist MySqlCommand.ExecuteScalar. Allerdings so nur zu gebrauchen falls man genau einen Wert zum auslesen hat.

    @EaranMaleasi Ich habe aber leider die schlechte Angewohntheit ein Minimalist zu sein, darum wollte ich das so umgehen.. :whistling:

    Ich danke euch :)

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

    Dann gebe ich dir einen Tipp:
    Wenn du mal verschiedene Datenbankserver in deinem Programm unterstützen willst, wirst du schnell merken, dass der Quellcode sich zwischen den verschiedenen Provider (MySql, SqlServer, Oracle) nur darin unterscheiden wird, dass z.B. ein Command eben so lautet:
    MySqlCommand, SqlCommand, OracleCommand

    Wenn du also den "Verbindungscode" nicht 3 mal oder öfters schreiben willst, dann benutzt du in deiner Anwendung die DbCommand, DbConnection, usw Klassen, die Datenbank unabhängig sind. Danach brauchst du nur noch eine winzige "Providerklasse" die mit 6-7 Zeilen Code die Verbindung aufbaut und dir Transaktionen, Commands usw. ausgibt. Der Rest der Logik für selects, inserts usw. ist dann größtenteils Datenbank unabhängig. Damit sollte deine Anwendung kleiner werden, was deinem "minimalismus" entgegen kommen sollte. ;)
    ich denke, bei @0luca0 fehlen massiv Grundlagen. Mache ich daran fest, wenner zB meint, DbReader.ToString() würde schon irgendwie verstehen, welche Werte er aus der Datenbank abrufen möchte.
    Oder wenn er "Select" als Attribut bezeichnet - da denke ich, er weiß weder was ein Attribut ist, noch kann er erklären, wasser in dem Zusammenhang wohl mit "Select" meint.
    Mir scheint er düst eifrig im INet herum und probiert alles mögliche gefundene aus, aber mangels Grundlagen ohne was zu verstehen.

    Und so kann man ab einer bestimmten Komplexität einfach nicht mehr weiter-programmieren.

    Du empfiehlst ihm eine winzige "Providerklasse" zu schreiben, aber ich möchte wetten, er kann noch überhaupt keine Klasse schreiben, vermutlich wird er nichtmal eine einzelne Methode hinkriegen, weiler garnet richtig weiß, was das ist.

    @ @0luca0: Ich will dich nicht kränken, aber's hat so kein' Wert. Ich sag einfach was mir als Tatsache erscheint, weil wenn man die Tatsachen nicht wahrnimmt, hat man keine Chance, sie zu ändern.
    @EaranMaleasi Ich frage mal ganz doof zu welchem Zweck man sein Programm mit mehreren verschiedenen Datenbanken verbinden sollte?
    @ErfinderDesRades Ich nehme das jetzt mal nicht als einen persönlichen Angriff. Ein Attribut ist übrigens eine Eigenschaft grob gesagt. ;) Ist ja das eine mir vorzuwerfen ich wäre ein schlechter Programmierer, aber etwas total anderes mir zu sagen ich könne kein Deutsch. Nur weil ich nicht alles erklären kann heisst es nicht, dass ich es nicht weiss. Das noch nebenbei.

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

    hab nix über dein Deutsch gesagt, und hab an deim Deutsch nix auszusetzen.
    Nur Select als Attribut (alias "Eigenschaft") zu bezeichnen kann eiglich falscher nicht sein.
    Also Attribut kann man als Eigenschaft verstehen, ja. Aber Select als Attribut zu bezeichnen ergibt überhaupt keinen Sinn.
    "Select" im hiesigen Zusammenhang ist ein Schlüsselwort der Sprache Sql.

    Wie gesagt, dir fehlen massiv Grundlagen, denn das mit MySqlReader.toString ergibt (jetzt in der Sprache VB.Net) auch keinen Sinn.

    Übrigens deine Frage an EaranMaleasi finde ich hingegen ganz berechtigt und sinnhaltig: Wenn du solch nicht vorhast, brauchst du dich darum erstmal auch nicht zu kümmern, schon garnet im jetzigen Stadium.

    Worum du dich kümmern könntest, wären die allgemeinen Grundlagen von vb.net zu erlernen, Datentypen, Methoden, Eigenschaften, Schlüsselworte, Klassen, Objekte und so Zeug.
    An Datenbanken solltest du dich meiner Meinung nach erstmal noch garnet ranmachen.

    Edit:
    Ich will da nicht weiter rum-rechten. Wie gesagt: Ich meins nicht als Angriff, sondern ich sage dir einfach nur, was ich meine, was du brauchst, um dein Prob lösen zu können.
    Was du damit machst ist deine Sache, ich kann auch nicht verhindern, dass du dich deswegen angegriffen fühlst, nur wär mir lieber, du würdest es nicht in diesen Hals kriegen.

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

    Wenn man mir sagt ich wisse nicht was das Wort Attribut heisst sehe ich das schon so, dass man etwas gegen meine Deutschkenntnisse sagt.
    Und Select kann jedoch ein Attribut des SQL-Querys sein.
    Ausserdem würde ich Datenbankkommunikation nicht zu den Grundlagen von VB.Net zählen, auch wenn man heutzutage kaum mehr darum kommt.
    Datentypen? Ich denke das war jetzt nicht dein ernst..
    Wie schon gesagt kann ich vielleicht nicht immer rüberbringen was in meinem Kopf rumschwirrt und drücke mich öfters unglücklich aus, das heisst jedoch noch lange nicht dass ich es nicht kann. Auch braucht man nicht zwingend die Fachsprache lernen, das ist zwar von grossem Nutzen, da man so besser seine Probleme rüberbringen kann und nicht von anderen Leuten aus banalen Gründen angegriffen wird.

    0luca0 schrieb:

    sein Programm mit mehreren verschiedenen Datenbanken verbinden sollte?

    Es geht nicht darum, dass du deine Software gleichzeitig mit nem MySQL Server, nem MSSQL Server und nem Oracle Server verbindest, es geht darum, dass deine Software unabhängig vom unterliegenden Datenbanktyp ist.

    Folgendes Beispiel:
    Firma A entwickelt eine Software, die eine Datenbank benötigt. Die Entwicklungsdatenbank ist MySQL. Diese Software wird nun an alle möglichen Betriebe verkauft. Nun sind dies jedoch nicht nur kleine Betriebe mit 10 Hanseln, sondern teilweise auch global Player, mit 120 Standorten weltweit, die ihre eigene IT hat mit allem drum und dran. Nun schreibt diese Firma vor, dass die Datenbank auf einem Microsoft SQL Server liegen muss. MySql kommt denen nicht ins Haus. Nun handelt es sich hier erst mal nur um einen Standort, und man könnte Argumentieren, dass man sich für einen Standort nicht die mühe macht, aber man hat die Reele chance, dass diese Anwendung, sollte sie allen Anforderungen entsprechen, auf das gesamte Unternehmen ausgeweitet wird. Da Firma A jedoch nun nur MySql unterstützt, und ein umschrieben, dank der internen Struktur sehr lange dauert, entscheidet sich das Unternehmen mit seinen 120 Standorten für einen Konkurrenten, der durch den Auftrag dann in der Lage ist, seine Entwicklungsabteilung zu vergrößern, sodass neue Features sowie Kundenwüsche schneller eingebaut und beachtet werden können. Zudem verlassen immer wieder Mitarbeiter dieses Unternehmen und bringen durch Mund zu Mund propaganda dann andere Unternehmen dazu die Software des Konkurrenten zu kaufen. Und Firma A sitzt mit ihrer Software, die bis zu diesem Zeitpunkt gleichauf mit dem Konkurrenten war, nun da und ist überflügelt. Und das Nur weil die Software nicht mit einem MSSQL Server sprechen konnte.
    Dass die Software verschiedene Datenbanken unterstützt und Cloud hat wenig miteinander zu tun.
    Denn auch da gibt es verschiedene Dienste und verschiedene Datenbanken.
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.

    0luca0 schrieb:

    "Rundumpaket"
    Das ist nicht sonderlich ratsam. Im Falle dessen, dass irgendetwas passiert, hängt die gesamte Verantwortung bei dir. Du must dich um Backups kümmern, Ausfallsicherheit garantieren, und viel in redundante Hardware investieren. Zudem ist der Programmieraufwand wesentlich größer, wenn du quer durchs Web Daten abfragst. Da kannste nicht einfach ne DB direkt am Internet hängen haben. Da ist die Lösung, dass die DB im lokalen Netzwerk des Kunden liegt, VIEL angenehmer für beide Seiten. Die Firma selbst kann ihre eigene Datensicherheitspolitik anwenden, es werden keine eventuell kritische Daten quer durchs Internet verschifft, die Abfragegeschwindigkeit ist oftmals um ein vielfaches höher und du selbst bist fein raus, wenn die ihre Daten vermasseln.
    Ich wäre mal arg für Back To Topic!
    Ich würde gerne mal sehen (Quellcode) was bislang programmiert wurde um überhaupt einschätzen zu können, welcher Wissens-/Programmstand herrscht.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D