Come leggere e stampare i dati da mysql in c #

Il mio problema è che non riesco a stampare tutti i dati dalla tabella nel mio database mysql, ho tirato fuori solo l’ultima riga nella tabella “insegnante”. c’è qualcuno che può aiutarmi a trovare l’errore?

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

Il tuo problema è che stai sovrascrivendo data2txt.Text e datatxt.Text su ogni riga di dati. se vuoi vedere tutti i dati in quei campi, qualcosa del genere dovrebbe fare quello che ti serve:

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

Ovviamente il tuo codice mostra i valori dell’ultima riga della tabella dell’insegnante nei tuoi campi di testo sulla forma. Perché stai eseguendo il ciclo attraverso il datareader e assegnando i valori a textfiled. Ogni iterazione sovrascriverà i valori precedenti nella casella di testo.

Stai assegnando il valore di ogni campo anziché il valore del testo del controllo esistente più il nuovo valore. Aggiungi un breakpoint per assicurarti di ottenere più righe, ma man mano che il tuo codice viene scritto, vedrai solo il risultato di una riga nel tuo modulo perché stai sovrascrivendo su ogni iterazione attraverso il ciclo.

Dovresti inviare i dati prima di scrivere nuovamente in esso:

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

Oppure usa una var per archiviare tutti i dati in ogni ‘lettura’ e poi emetti quella var

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