Verbindung zu MySQL von .NET über die SSH.NET-Bibliothek
Problem:
An Die ASP.NET/C#-Webseite versucht, eine MySQL-Datenbank auf einem Remote-Server über eine SSH-Verbindung mithilfe der Bibliotheken Renci.SshNet und mysql-connector-net abzufragen. Der Code ruft jedoch keine Daten aus der Datenbank ab.
Codeausschnitt:
Der C#-Code stellte Versuche bereit, eine SSH-Verbindung herzustellen, einen Port weiterzuleiten usw Stellen Sie dann eine Verbindung zur MySQL-Datenbank her. Es können jedoch keine Daten aus der Datenbank abgerufen werden.
<code class="csharp">using(var client = new SshClient("ssh server id", "sshuser", "sshpassword")) // establishing ssh connection to server where MySql is hosted { client.Connect(); if (client.IsConnected) { var portForwarded = new ForwardedPortLocal("127.0.0.1", 3306, "127.0.0.1", 3306); client.AddForwardedPort(portForwarded); portForwarded.Start(); using (MySqlConnection con = new MySqlConnection("SERVER=127.0.0.1;PORT=3306;UID=someuser;PASSWORD=somepass;DATABASE=Dbname")) { using (MySqlCommand com = new MySqlCommand("SELECT * FROM cities", con)) { com.CommandType = CommandType.CommandText; DataSet ds = new DataSet(); MySqlDataAdapter da = new MySqlDataAdapter(com); da.Fill(ds); foreach (DataRow drow in ds.Tables[0].Rows) { Console.WriteLine("From MySql: " + drow[1].ToString()); } } } client.Disconnect(); } else { Console.WriteLine("Client cannot be reached..."); } }</code>
Lösung:
Um das Problem zu beheben, können die folgenden Änderungen am Code vorgenommen werden:
MySqlConnectionStringBuilder connBuilder = new MySqlConnectionStringBuilder(); connBuilder.AllowBatch = true; connBuilder.Server = "portal.RemoteServer.edu"; connBuilder.Port = 3306; connBuilder.UserID = "RemoteServerUsername"; connBuilder.Password = "RemoteServerPassword"; connBuilder.Database = "DatabaseName";
Geänderter Code:
<code class="csharp">using(var client = new SshClient("portal.RemoteServer.edu", "RemoteServerUsername", "RemoteServerPassword")) // establishing ssh connection to server where MySql is hosted { client.Connect(); if (client.IsConnected) { var portForwarded = new ForwardedPortLocal("127.0.0.1", 3306, "127.0.0.1", 3306); client.AddForwardedPort(portForwarded); portForwarded.Start(); using (MySqlConnection con = new MySqlConnection(connBuilder.ConnectionString)) { using (MySqlCommand com = new MySqlCommand("SELECT * FROM Clients", con)) { com.CommandType = CommandType.CommandText; DataSet ds = new DataSet(); MySqlDataAdapter da = new MySqlDataAdapter(com); da.Fill(ds); foreach (DataRow drow in ds.Tables[0].Rows) { Console.WriteLine("From MySql: " + drow[1].ToString()); } } } client.Disconnect(); } else { Console.WriteLine("Client cannot be reached..."); } }</code>
Das obige ist der detaillierte Inhalt vonIm Folgenden finden Sie mehrere englische Frage- und Antworttitel, die zum Inhalt des Artikels passen: * Warum kann ich über SSH.NET keine Daten aus einer MySQL-Datenbank abrufen? * Fehlerbehebung bei MySQL-Verbindungsproblemen mit SSH.NET: Eine Fallstudie * So stellen Sie eine korrekte Verbindung zu einem Rem her. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!