C#MySql连接找不到主机

时间:2010-08-26 10:27:35

标签: c# mysql

我有一个连接到MySql数据库的java程序,它工作正常。 现在我想将它转换为C#程序,但我不断收到错误“无法连接到任何指定的主机”。

我已经遵循以下解决方案:

  1. Connect to MySql with C#
  2. C# MySqlConnector
  3. Configure the ODBC DNS
  4. 并且已将对MySql.Data的引用添加到项目中。
  5. 以下是连接数据库的代码:

    string connectionString = string.Format(
     "SERVER={0}; DATABASE={1}; UID={2}; PASSWORD={3};",
     "jdbc:mysql://" + host + ":" + port, dbName, userName, password);
    
    // Prepare connecting to the database.
    myConn = new MySqlConnection(connectionString);
    
    MySqlCommand command = myConn.CreateCommand();
    command.CommandText = @"SELECT * FROM table_name";
    
    myConn.Open(); // <- MySqlException: Unable to connect to any of the specified MySQL hosts.
    MySqlDataReader reader = command.ExecuteReader();
    
    List<string> exampleStore = new List<string>();
    while (reader.Read())
    {
        // Just an example for storing data.
        exampleStore.Add(reader.GetString(0));
    }
    

    java版本使用与此处使用的相同的值连接到同一服务器,因此请不要建议检查服务器是否在线。 所以问题必须在我的C#代码中,我注意到Class.forName("com.mysql.jdbc.Driver").newInstance ();

    在java代码中。好像驱动程序在这里处于活动状态,也许C#需要做类似我缺少的事情?

    编辑:所以连接字符串应为:string connectionString = string.Format(“SERVER = {0}; DATABASE = {1}; Port = {2}; UID = {3}; PASSWORD = {4}; “,host,dbName,port,userName,password));

    使用了java版本中的一些额外元素,不要认为它们会导致这些问题。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

标准连接字符串是: Server=myServerAddress;Port=1234;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

请注意,端口是单独指定的,Port = 1234,不在Server字段中。另外,从服务器字段的开头消除jdbc:mysql:,因为它特定于JDBC驱动程序;使用普通的URI字符串。不需要任何其他东西。

答案 1 :(得分:1)

您的连接字符串错误。

尝试:

string connectionString = string.Format("SERVER={0}; DATABASE={1}; Port={2}; UID={3}; PASSWORD={4};", host, dbName, port, userName, password));