代码之家  ›  专栏  ›  技术社区  ›  MrFox

c mysql连接找不到主机

  •  0
  • MrFox  · 技术社区  · 14 年前

    我有一个连接到MySQL数据库的Java程序,它工作得很好。 现在,我想把它转换成C程序,但我一直收到错误“无法连接到任何指定的主机”。

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

    1. Connect to MySql with C#
    2. C# MySqlConnector
    3. Configure the ODBC DNS
    4. 并将对mysql.data的引用添加到项目中。

    下面是连接到数据库的代码:

    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 connection string=string.format(“server=0 database=1 port=2 uid=3 password=4”,host,dbname,port,username,password));

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

    2 回复  |  直到 14 年前
        1
  •  1
  •   Alex Paven    14 年前

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

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

        2
  •  1
  •   ChrisBD    14 年前

    连接字符串错误。

    尝试:

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