如何获取2列的内容并显示?

时间:2014-06-27 08:06:39

标签: c# mysql mysqldatareader

    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中?任何帮助?感谢。

2 个答案:

答案 0 :(得分:2)

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

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

KEY是MySQL中的reserved word。您需要使用`字符引用它。 ,最佳解决方案是将名称更改为非保留字。

SELECT语句对ExecuteNonQuery毫无意义。它根本没有任何

您需要使用using statement来处理MySqlCommandMySqlDataReader(写作时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。有用。如何在a中显示所有五个结果   MessageBox的?不是在五个不同的MessageBoxes?

然后,您可以在 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);

答案 1 :(得分: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();
    }
}