2013-07-22 34 views
0

我嘗試連接到我的一位朋友創建的服務器上的MySQL數據庫,但它仍然表示它無法連接到服務器!用C連接到MySQL網絡服務器#

這裏是我的代碼:

 String connectionString = "Persist Security Info=False;database=qwertyui;server=www.qwertyuiop.com;Uid=asdfghj;Pwd=qazwsxedc;Connect Timeout=30"; 
     using (SqlConnection connection = new SqlConnection(connectionString)) 
     { 
      SqlCommand cmd = new SqlCommand("INSERT INTO etc.... "); 
      cmd.CommandType = CommandType.Text; 
      cmd.Connection = connection; 
      cmd.Parameters.AddWithValue(etc....); 
      connection.Open(); 
      int r = cmd.ExecuteNonQuery(); 
     } 

它failes在connection.Open()指令拋出異常 - >無法連接到服務器。

有什麼想法嗎?

+0

'www.qwertyuiop.com'連接到端口80,這是公共端口。您需要確定MySQL實例正在偵聽的端口,並在連接字符串中指定該端口。 – PoweredByOrange

回答

1
  • 首先下載MySQL Connector

  • 確保您添加reference到DLL(集抄本地+到真正!)

  • 在你的類的頂部添加using MySql.Data.MySqlClient;

  • 對於Connection String,server前面加httpwww。因爲它會嘗試連接到Apache(端口80),而不是MySQL。默認端口MySQL3306

    string connectionString = "Persist Security Info=False;database=qwertyui;server=qwertyuiop.com;Uid=asdfghj;Pwd=qazwsxedc;port=3306"; 
    using (MySqlConnection connection = new MySqlConnection(connectionString)) 
    { 
        string query = "INSERT INTO table VALUES (@parameter)"; 
        connection.Open(); 
        using (MySqlCommand cmd = new MySqlCommand(query, connection)) 
        { 
         cmd.Parameters.AddWithValue("@parameter", parameter); 
         cmd.ExecuteNonQuery(); 
        } 
    } 
    

如果這是行不通的。確保MySQL允許遠程訪問,如果不是這種情況,您可以繼續嘗試,而沒有任何結果。

+0

感謝您提供清晰的分步說明!像一個魅力的作品 –

+0

很高興幫助:) – DeMama

2

SqlConnection是一個SQL Server客戶端。

您需要從NuGet下載MySql客戶端。

0

如果以上所有都不起作用嘗試獲得授予所有特權(GRANT Syntax)!

基本上,它會是這樣的:

GRANT ALL PRIVILEGES ON DBname.* to 'username'@'IPadress' IDENTIFIED BY 'password';