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

.NET连接器只返回第一条记录

  •  4
  • joell  · 技术社区  · 11 年前

    我有一个奇怪的“错误/错误”,在.NET连接器上,只有5条或更多条记录返回给我。MySQL命令行也返回1。以下是我真正陷入困境的代码,我试图制作一个客户端服务器,并让客户端从服务器计算机上的数据库登录:

    Proof

    Weird bug

    代码:

    string strConnect = "server=localhost;user=root;password=xxxx;database=MoopleDEV";
    string query = "SELECT name FROM accounts;";
    
    using (MySqlConnection connection = new MySqlConnection(strConnect))
    using (MySqlCommand command = new MySqlCommand(query, connection))
    using (MySqlDataReader reader = command.ExecuteReader())
    {
        connection.Open();
    
        while (reader.Read())
        {
            Console.WriteLine(reader.GetString("name"));
        }
    
        connection.Close();
    }
    

    注: 它还在MySQL命令行客户端只返回“iVision”。有人知道该怎么办吗? 附言: 它不会崩溃或返回任何异常。

    2 回复  |  直到 11 年前
        1
  •  1
  •   MethodMan    11 年前

    IVision我希望这能给你一个想法

    为什么要使用reader.GetString我看到了太多的问题,为什么不使用 (string)reader["name"] 此外,当您运行查询时,手动运行查询时返回的行数也要确保您真正看到的是正确的DB数据库=MoopleDEV可能不正确,或者指向物理机器上的不同IP地址或位置。我还将本地数据库实例命名为实际的 Name 也会减少混乱

        2
  •  1
  •   tgolisch    11 年前

    创建阅读器后,您将重新打开连接。在创建命令对象之前,请移动连接打开语句。

    请尝试以下操作:

    using (MySqlConnection connection = new MySqlConnection(strConnect))
    {
        connection.Open();
        using (MySqlCommand command = new MySqlCommand(query, connection))
        using (MySqlDataReader reader = command.ExecuteReader())
        {
    
            while (reader.Read())
            {
                Console.WriteLine(reader.GetString("name"));
            }
        }
        connection.Close();
    }