0
    public void ShowFirstFiveHighScore()
    {
        string query = "SELECT 'key', 'PlayerName', 'HighScore' FROM PlayerPoints ORDER BY HighScore DESC LIMIT 5";

        if (this.OpenConnection() == true)
        {
            MySqlCommand cmd = new MySqlCommand(query, _connection);

            MySqlDataReader reader = cmd.ExecuteReader();

            while (reader.Read())
            {
               MessageBox.Show(reader.GetString(...);
            }

            cmd.ExecuteNonQuery();
            this.CloseConnection();
        }
    }

我尝试显示列“PlayerName”和“HighScore”。也许在 MessageBox 中?有什么帮助吗?谢谢。

4

2 回答 2

2

首先,当您在查询的一部分中'调用列名时,您不需要在列名中使用单引号 ( )。SELECT您需要将其与字符值一起使用。

其次,MySqlDataReader.GetString方法从零开始的列号int作为参数。这意味着您可以使用 and 指定列并根据需要显示它们。12

KEY是 MySQL 中的保留字。你需要用` 字符引用它。但是,最好的解决方案是将名称更改为非保留字。

你的陈述ExecuteNonQuery毫无意义。SELECT它根本没有做任何事情

您需要使用using语句来处理您的MySqlCommandand MySqlDataReader(也在MySqlConnection您编写时)。

string query = "SELECT `key`, PlayerName, HighScore FROM PlayerPoints ORDER BY HighScore DESC LIMIT 5";
using(MySqlCommand cmd = new MySqlCommand(query, _connection))
using(MySqlDataReader reader = cmd.ExecuteReader())
{
      while (reader.Read())
      {
           MessageBox.Show(string.Format("PlayerName: {0} HighScore: {1}",
                                          reader.GetString(1),
                                          reader.GetString(2)));
      }
}

谢谢@Soner。有用。如何在 MessageBox 中显示所有五个结果?不在五个不同的 MessageBox 中?

然后,您可以在 while 语句5中将行连接到一个字符串中,并在while语句之外显示。喜欢;

string s = "";
while (reader.Read())
{
    s += string.Format("PlayerName: {0} HighScore: {1}\n",
                        reader.GetString(1),
                        reader.GetString(2)));
}
MessageBox.Show(s);
于 2014-06-27T08:13:23.150 回答
0
public void ShowFirstFiveHighScore()
{
    string query = "SELECT 'key', PlayerName, HighScore FROM PlayerPoints ORDER BY HighScore DESC LIMIT 5";

    if (this.OpenConnection() == true)
    {
        MySqlCommand cmd = new MySqlCommand(query, _connection);

        MySqlDataReader reader = cmd.ExecuteReader();

        while (reader.Read())
        {
           MessageBox.Show(string.Format("{0}-{1}"),reader.GetString(1),
                                      reader.GetString(2));
        }

        cmd.ExecuteNonQuery();
        this.CloseConnection();
    }
}
于 2014-06-27T08:09:09.303 回答