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」の列を表示しようとしました。多分メッセージボックスに?ヘルプはありますか?ありがとう。

4

2 に答える 2

2

まず、クエリ'の一部で列名を呼び出すときに、列名に単一引用符 ( )を使用する必要はありません。SELECT文字値で使用する必要があります。

第二に、MySqlDataReader.GetStringメソッドは、ゼロベースの列番号intであるパラメーターとして受け取ります。つまり、列をとで指定して、必要に応じて表示できます。12

KEYはMySQLの予約語です。文字で引用する必要があります`ただし、最善の解決策は、名前を予約語以外に変更することです。

あなたの発言ExecuteNonQueryは無意味です。それはまったく何もSELECTしません。

andを破棄するには、usingステートメントを使用する必要があります(書くときも)。MySqlCommandMySqlDataReaderMySqlConnection

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)));
      }
}

@ソナーに感謝します。できます。5 つの結果すべてを MessageBox に表示するにはどうすればよいですか? 5 つの異なる MessageBox ではありませんか?

次に、 while ステートメント内で行を 1 つの文字列に連結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 に答える