2016-04-14 3 views
0

У меня проблема с этим кодом. Я хочу показать все данные из столбца, но он показывает только первую строку, что я могу сделать?Показать все колонки из DataReader

 try{ 
      mcon.Open(); 
      s = "select* from login.biblia where carte='"+Carte.Text+"'"; 
      mcd = new MySqlCommand(s, mcon);  
      mdr = mcd.ExecuteReader(); 

      if (mdr.HasRows) 
      { 
       while (mdr.Read()) 
       { 
        richTextBox1.Text = mdr[0].ToString(); 
       } 

      }else 
       MessageBox.Show("NO DATA"); 

    }catch (Exception ex)  
     {MessageBox.Show(ex.Message);} 
     finally{ 
      mdr.Close();     
      mcon.Close();} 
    } 

ответ

2

Стройте StringBuilder со всеми записями, и присвоить результат вашей RichTextBox.

var sb = new StringBuilder(); 

while (mdr.Read()) 
    sb.AppendLine(mdr[0].ToString()); 

richTextBox1.Text = sb.ToString(); 
2

Вы устанавливаете Text свойство RichTextBox каждый раз, когда вы используете эту строку

richTextBox1.Text = mdr[0].ToString(); 

Вместо этого вы должны добавить возврат на конец и добавить его вместо этого. Есть два способа сделать это

richTextBox1.Text += mdr[0].ToString() + "\r\n"; //Version 1 
richTextBox1.Text = richTextBox1.Text + mdr[0].ToString() + "\r\n"; //Version 2 

Вместо "\r\n" вы также можете использовать Environment.NewLine который добавит новую строку для вас. Примеры:

richTextBox1.Text += mdr[0].ToString() + Environment.NewLine; //Version 1 
richTextBox1.Text = richTextBox1.Text + mdr[0].ToString() + Environment.NewLine; //Version 2 
+1

Кажется слишком сложным, когда вы могли бы просто использовать 'StringBuilder' – dcreight

+0

@dcreight Может быть и так, но у каждого есть свой способ делать вещи, я просто пытаюсь помочь вопрос Аскер понять свою ошибку,«использовать StringBuilder»является не помогая им понять их ошибку. Мой ответ указывает на ошибку и объясняет правильный способ делать то, что они пытались сделать, а не альтернатива этому. –

Смежные вопросы