MySQL Zugriff per Code funktioniert, Databinding per Dataset nicht

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Radinator.

    MySQL Zugriff per Code funktioniert, Databinding per Dataset nicht

    huhu liebe Gemeinde :)


    Ich habe etwas mit MySQL Zugriffen rumgespielt und kann bereits Daten laden, speichern und hochladen, sowie abfragen.

    Spaßeshalber habe ich sehr große Tabellen gemacht und wollte quasi ein Programm schreiben, welches zur Laufzeit ständig überprüft, ob die Datenbank neue Einträge hat. Vereinfacht gesagt überprüft ein separater Thread in einer Schleife und lädt den Inhalt der Datenbank herunter und gleicht mit dem letzten Stand der heruntergeladenen Datenbank.

    Dies führte dazu, dass das Programm ruckelt, bzw. eben alle ein paar Sekunden einfriert und die gesamte Control somit nicht nutzbar wird, als ob man gar kein Multithreading betreiben würde. (je nachdem, wie die Pausenzeit in der Schleife war)


    Hinweis:

    Die Zeile mit .FILL sorgt dafür, dass die gesamte Form ruckelt, unabhängig sogar davon, wie gefüllt die Database ist, habe ich vor kurzem festgestellt.

    VB.NET-Quellcode

    1. da = New MySqlDataAdapter("SELECT * FROM `tabelle`", Conn)
    2. Invoke(Sub() da.Fill(test))


    Ich habe den Assistenten zum Konfigurieren von Datenquellen benutzt und ganz gewöhnlich die Zugangsdaten für die MYSQL Datenbank angegeben. Ich habe da MySQL ausgewählt (InnoDB o.ä. werden nicht genutzt, eine ganz gewöhnliche MySQL Datenbank)

    Nahdem ich eine Testverbindung mache, bekomme ich folgende Fehlermeldung bei DEFAULT-Einstellungen:

    Error 40 - Named Pipes Provider

    Stelle ich unter Erweiterten Optionen die Network Library auf TCP, bekomme ich den Fehler Error 0 TCP Connection refused

    Ich kann mittels Code allerdings problemlos einen Zugriff erlangen. Externe Zugriffe sind über phpmyadmin auch problemlos möglich

    Ich nutze XAMPP v3.2.2 und phpmyadmin 4.5.1
    Visual Studio Community 2015 Version 14.0.XXXX Update 1

    Weiß jemand Bescheid ob der Fehler einer Inkompatibilität sein könnte?
    Wie gesagt, Zugangsdaten sind identisch mit dem ausführbaren Code.

    MfG
    Sala

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

    Vielen Dank, der Code hat zumindest dafür gesorgt, dass die Datagridview gefüllt werden kann, ohne, dass es Freezes verursacht.

    Ein unschöner Nebeneffekt: Sobald bsp. bei Form1 der Befehl ausgeführt wird, bleibt die Datagridview unsichtbar (trotz Zuweisung der Datasource)

    Sobald man nun auf die Collumns klickt, wird die Liste erst sichtbar.

    Ein .Refresh hat dabei nichts gebracht.

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

    Also ich hab mal dein Problem gegooglet und hab da folgendes gefunden:
    stackoverflow.com/questions/44…ynchronously-in-win-forms
    social.msdn.microsoft.com/Foru…ad?forum=adodotnetdataset
    support.microsoft.com/de-de/kb/318607

    Alle laufen darauf hinaus, dass du im Hintergrund (neuen Task/Thread) ein DataSet lädst (also die Daten von der DB abholst) und wenn das fertig ist, die Daten aus dem Background DataSet in dein UI-DataSet füllst

    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell