2012-09-13 12 views
6

Mój problem polega na tym, że nie mogę wydrukować wszystkich danych z tabeli w mojej bazie danych mysql, wydostałem właśnie ostatni wiersz w tabeli "nauczyciel". czy jest ktoś, kto może mi pomóc znaleźć błąd?Jak czytać i drukować dane z mysql w C#

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using MySql.Data.MySqlClient; 

namespace ReadDataFromMysql 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      string sql = " SELECT * FROM teacher "; 
      MySqlConnection con = new MySqlConnection("host=localhost;user=root;password=859694;database=projekt;"); 
      MySqlCommand cmd = new MySqlCommand(sql, con); 

      con.Open(); 

      MySqlDataReader reader = cmd.ExecuteReader(); 

      while (reader.Read()) { 
       data2txt.Text = reader.GetString("id"); 
       datatxt.Text = reader.GetString("userId"); 
      } 

     } 

     private void btnclose_Click(object sender, EventArgs e) 
     { 
      Close(); 
     } 
    } 
} 
+0

Mają cię umieścić punkt przerwania w pętli while? Twoje pola tekstowe zostaną wypełnione przez wszystkie wartości zwracane przez zapytanie i zostaną ustawione na ostatnią wartość, gdy pętla while powróci. – Liron

Odpowiedz

1

Oczywiście kod pokazuje ostatnio wartości wierszu tabeli nauczyciela w polach tekstowych na form.Because Twój są zapętlanie bezpo¶rednio datareader i przypisanie wartości do textfiled.So każdej iteracji będzie overwright wcześniejsze wartości w polu tekstowym .

+0

co powinienem zrobić, aby odczytać wszystkie dane? –

7

Twoim problemem jest nadpisywanie danych2txt.Tekst i datatekst. Tekst w każdym wierszu danych. jeśli chcesz zobaczyć wszystkie dane w tych dziedzinach, coś jak to powinien robić to, czego potrzebujesz:

data2txt.Text = string.Empty; 
datatxt.Text = string.Empty; 

while (reader.Read()) 
{ 
    data2txt.Text += reader.GetString("id"); 
    datatxt.Text += reader.GetString("userId"); 
} 
+0

to powinna być zaakceptowana odpowiedź :) – Imdad

1

Ty przypisując wartość każdego pola zamiast wartości tekstu istniejącego formantu plus nowy wartość. Dodaj punkt przerwania, aby upewnić się, że dostajesz wiele wierszy, ale w trakcie pisania kodu zobaczysz tylko wynik jednego wiersza w formularzu, ponieważ nadpisujesz każdą iterację w pętli.

0

Należy wyjściowe dane zanim znowu pisanie w nim:

data2txt.Text = reader.GetString("id"); 
      datatxt.Text = reader.GetString("userId"); 

Albo użyć var ​​do przechowywania wszystkich danych z każdym „czytać”, a następnie wyjście że var

varexample.Text += reader.GetString("id");