SSH.NET 라이브러리를 사용하여 .NET에서 MySQL에 연결
문제:
An ASP.NET/C# 웹 페이지가 Renci.SshNet 및 mysql-connector-net 라이브러리를 사용하여 SSH 연결을 통해 원격 서버의 MySQL 데이터베이스를 쿼리하려고 합니다. 그러나 코드는 데이터베이스에서 데이터를 검색하지 않습니다.
코드 조각:
제공된 C# 코드는 SSH 연결 설정, 포트 전달 및 그런 다음 MySQL 데이터베이스에 연결하십시오. 그러나 데이터베이스에서 데이터를 검색하는 데 실패합니다.
<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>
해결책:
문제를 해결하려면 코드를 다음과 같이 수정하면 됩니다.
MySqlConnectionStringBuilder connBuilder = new MySqlConnectionStringBuilder(); connBuilder.AllowBatch = true; connBuilder.Server = "portal.RemoteServer.edu"; connBuilder.Port = 3306; connBuilder.UserID = "RemoteServerUsername"; connBuilder.Password = "RemoteServerPassword"; connBuilder.Database = "DatabaseName";
수정된 코드:
<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>
위 내용은 다음은 기사 내용과 일치하는 몇 가지 영어 질문과 답변 제목입니다. * SSH.NET을 통해 MySQL 데이터베이스에서 데이터를 검색할 수 없는 이유는 무엇입니까? * SSH.NET을 사용한 MySQL 연결 문제 해결: 사례 연구 * Rem에 올바르게 연결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!