C# mysql запрос с выбранным отдельным столбцом

Я пытаюсь поместить строки DISTINCT (это небольшая строка) в строковую переменную, предназначенную для текстового поля, но он возвращает только некоторые строки с различным содержанием в столбце. Я использовал похожий код, но нацелен на просмотр данных и работает нормально. Я пробовал разные подходы, где я не прав?

stConsulta = "SELECT distinct symbol from ticks";
MySqlCommand MyCmd = new MySqlCommand(stConsulta,cnn);
MyCmd.Connection = cnn;
MyCmd.CommandText = stConsulta;
MySqlDataReader myreader = MyCmd.ExecuteReader();
if (myreader.HasRows)
{
    while (myreader.Read())
    {
        myreader.Read();
        stSymbols = stSymbols +  myreader.GetString("symbol") + " ";
    }
}                        
cnn.Close();
textBox1.Text = stSymbols;

3 ответа

Решение

Не звони myReader.Read() дважды, для начала. Вы пропускаете каждый второй ряд.

Вы указали, что строк не так много, но вы также можете использовать StringBuilder для эффективности.

...
var stSymbols = new StringBuilder();

while (myreader.Read())
    stSymbols.Append(myreader.GetString("symbol") + " ");

...
textBox1.Text = stSymbols.ToString();

Просто игнорируйте эту строку внутри цикла

myreader.Read();

когда вы используете это в состоянии while(myreader.Read()), оно начинает читать. так что не называйте это снова в сторону цикла. вот в чем твоя ошибка.

if (myreader.HasRows)
{
    while (myreader.Read())
    {
        stSymbols = stSymbols +  myreader["symbol"].ToString() + " ";
    }
} 

И ты хорош идти

if (myreader.HasRows)
{
    while (myreader.Read())
    {
        stSymbols = stSymbols +  myreader["symbol"].ToString() + " ";
    }
} 
Другие вопросы по тегам