Rumah > Artikel > pangkalan data > Berikut ialah beberapa tajuk soalan dan jawapan bahasa Inggeris yang sepadan dengan kandungan artikel: * Mengapa Saya Tidak Dapat Mendapatkan Data daripada Pangkalan Data MySQL Melalui SSH.NET? * Menyelesaikan Masalah Sambungan MySQL dengan SSH.NET: Kajian Kes * Cara Menyambung dengan Betul ke Rem
Sambungan ke MySQL dari .NET menggunakan Perpustakaan SSH.NET
Isu:
An Halaman web ASP.NET/C# cuba menanyakan pangkalan data MySQL pada pelayan jauh melalui sambungan SSH menggunakan perpustakaan Renci.SshNet dan mysql-connector-net. Walau bagaimanapun, kod itu tidak mendapatkan sebarang data daripada pangkalan data.
Coretan Kod:
Kod C# yang disediakan cuba untuk mewujudkan sambungan SSH, memajukan port dan kemudian sambung ke pangkalan data MySQL. Walau bagaimanapun, ia gagal mendapatkan sebarang data daripada pangkalan data.
<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>
Penyelesaian:
Untuk menyelesaikan isu ini, pengubahsuaian berikut boleh dibuat pada kod:
MySqlConnectionStringBuilder connBuilder = new MySqlConnectionStringBuilder(); connBuilder.AllowBatch = true; connBuilder.Server = "portal.RemoteServer.edu"; connBuilder.Port = 3306; connBuilder.UserID = "RemoteServerUsername"; connBuilder.Password = "RemoteServerPassword"; connBuilder.Database = "DatabaseName";
Kod Diubah Suai:
<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>
Atas ialah kandungan terperinci Berikut ialah beberapa tajuk soalan dan jawapan bahasa Inggeris yang sepadan dengan kandungan artikel: * Mengapa Saya Tidak Dapat Mendapatkan Data daripada Pangkalan Data MySQL Melalui SSH.NET? * Menyelesaikan Masalah Sambungan MySQL dengan SSH.NET: Kajian Kes * Cara Menyambung dengan Betul ke Rem. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!