Verbindung zu einer MySQL Datenbank

  • VB.NET (ASP)

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Nofear23m.

    Verbindung zu einer MySQL Datenbank

    Guten Tag,

    ich möchte seit Tagen eine Verbindung zu meiner Datenbank herstellen, welche nicht auf dem selben Webhost liegt, wie das ASP.net Programm. Das ist der exakte Code, der genutzt wird:


    VB.NET-Quellcode

    1. Imports MySql
    2. Imports MySql.Data
    3. Imports MySql.Data.MySqlClient
    4. Imports System.IO
    5. Imports System.Text
    6. Imports System.Runtime.InteropServices
    7. Imports System.Text.RegularExpressions
    8. Imports System.Net
    9. Public Class WebForm1
    10. Inherits System.Web.UI.Page
    11. Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    12. End Sub
    13. Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    14. Dim con As New MySqlConnection
    15. Dim cmd As New MySqlCommand
    16. Dim reader As MySqlDataReader
    17. Dim dbip As String = "XXX.XXX.XXX.XXX"
    18. Dim dbu As String = "'7654321'"
    19. Dim dbp As String = "'1234567'"
    20. Dim dbport As String = "'3306'"
    21. con.ConnectionString = "Server=" & dbip & "; UID=" & dbu & "; Password=" & dbp & "; Port=" & dbport & "; Database=kunden; Convert Zero Datetime=True"
    22. cmd.Connection = con
    23. cmd.CommandText = "Select * FROM kunden where name = 'Max'"
    24. Try
    25. con.Open()
    26. reader = cmd.ExecuteReader()
    27. reader.Read()
    28. TextBox1.Text = reader("surname")
    29. reader.Close()
    30. con.Close()
    31. Catch ex As Exception
    32. Label1.Text = ex.ToString
    33. End Try
    34. End Sub
    35. End Class


    Und so sieht die Form im Browser aus:


    Wenn ich denn Button drücke, sollte eigentlich der Nachname von "Max" aus der Datenbank aus der Kunden.Kunden Tabelle rausgefischt werden. Der Label ist einfach für eine Exception gedacht, damit ich schnell reparieren kann.

    Exception:

    HTML-Quellcode

    1. MySql.Data.MySqlClient.MySqlException (0x80004005): Unable to connect to any of the specified MySQL hosts. ---> System.Net.Sockets.SocketException (0x80004005): An attempt was made to access a socket in a way forbidden by its access permissions XXX.XXX.XXX.XXX:3306 at System.Net.Sockets.Socket.InternalEndConnect(IAsyncResult asyncResult) at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult) at MySql.Data.Common.MyNetworkStream.CreateSocketStream(MySqlConnectionStringBuilder settings, IPAddress ip, Boolean unix) at MySql.Data.Common.MyNetworkStream.CreateStream(MySqlConnectionStringBuilder settings, Boolean unix) at MySql.Data.Common.StreamCreator.GetStream(MySqlConnectionStringBuilder settings) at MySql.Data.MySqlClient.NativeDriver.Open() at MySql.Data.MySqlClient.NativeDriver.Open() at MySql.Data.MySqlClient.Driver.Open() at MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings) at MySql.Data.MySqlClient.MySqlPool.CreateNewPooledConnection() at MySql.Data.MySqlClient.MySqlPool.GetPooledConnection() at MySql.Data.MySqlClient.MySqlPool.TryToGetDriver() at MySql.Data.MySqlClient.MySqlPool.GetConnection() at MySql.Data.MySqlClient.MySqlConnection.Open() at AspNET_VB_Test.WebForm1.Button1_Click(Object sender, EventArgs e) in C:\Users\Sekki\source\repos\AspNET VB Test\AspNET VB Test\Default.aspx.vb:line 39


    Genutzt wird der MySQL Connector für .net: mysql.com/products/connector/
    Local beim Debuggen funktioniert alles wunderbar, aber auf der Homepage nicht. Gehostet wird auf myASP.net, Free Plan.

    Was ich bisher herausgefunden habe:
    - Es könnte an den Rechten liegen. Wie verteile ich Administrative Rechte auf meiner Homepage? Kein Beitrag im Internet hilft mir.
    -

    *Topic verschoben*
    Wenn ich eine Frage stelle, habe ich sie bereits gegooglet. Ja, es kommt vor, dass ich die Antwort übersehe. Ja, es kommt vor, dass ich sie nicht verstehe. Deshalb bin ich hier. Wenn dies eure Frage war, dann antwortet bitte nicht. Es stiehlt sämtliche Motivation.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Wo liegt denn die Datenbank?
    Evtl. liegt es da an den Rechten das der Benutzer von der IP des Webspace´s nicht verbinden kann.
    Oder aber an den Rechten des Webspace´s aber da müsstest du dann den Hoster mal anschreiben und nachfragen
    ob Verbindungen zu externen Mysql Server erlaubt sind oder geblockt werden.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    @xChRoNiKx
    Sehr interessante Idee. Ich nutze myASP.net, eventuell könntest du recht haben. Ich vermute nun auch, dass der Hoster eine Verbindung zur externen Datenbank nicht zulässt. Die Datenbank wird auf Necror gehostet. Ich werde mich mal erkundigen.
    Wenn ich eine Frage stelle, habe ich sie bereits gegooglet. Ja, es kommt vor, dass ich die Antwort übersehe. Ja, es kommt vor, dass ich sie nicht verstehe. Deshalb bin ich hier. Wenn dies eure Frage war, dann antwortet bitte nicht. Es stiehlt sämtliche Motivation.

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

    Sekki schrieb:

    dass der Hoster eine Verbindung zur externen Datenbank nicht zulässt.

    Lässt aber fast keiner zu so weit ich weis. Ausser man hat bei dem Anbieter einen eigenen Server aber bei normalem Hosting eher sehr selten.
    Wobei das die schönere lösung sowieso ein Webservice wäre welches die Daten zur Verfügung stellt. Mit einem Rest kann man sogar so arbeiten das man gar nicht alle Fälle abdecken muss sondern über IQueryable sogar direkt beeinflussen kann was genau abgerufen wird und wie. Sehr elegant.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##