4

我有一个奇怪的“错误/错误”,在 .NET 连接器上只返回一条记录,而有 5 条记录。MySQL 命令行也返回 1。这是我真正坚持的代码,我尝试创建一个客户端-服务器并让客户端从服务器计算机上的数据库登录:

证明

奇怪的错误

代码:

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”。有谁知道该怎么做? Ps:它不会崩溃或返回任何异常。

4

2 回答 2

1

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

试试这个:

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();
}
于 2013-04-05T15:24:13.757 回答
1

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

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

于 2013-04-05T15:27:57.317 回答