2012-09-13 21 views
6

Mi problema es que no puedo imprimir todos los datos de la tabla en mi base de datos mysql. Salí de la última fila de la tabla "docente". ¿Hay alguien que pueda ayudarme a encontrar el error?Cómo leer e imprimir datos de mysql en 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

usted tiene poner un punto de quiebre en el ciclo while? Sus campos de texto se completarán con todos los valores que devuelve la consulta y se establecerán en el último valor cuando vuelva el ciclo while. – Liron

Respuesta

1

Obviamente su código muestra los últimos valores de fila de la tabla maestra en sus campos de texto en su form.Because se recorre el throught datareader y asignar los valores a textfiled.So cada iteración se overwright los valores anteriores en cuadro de texto .

+0

¿qué debo hacer para leer todos los datos? –

7

Su problema es que está sobreescribiendo data2txt.Text y datatxt.Text en cada fila de datos. Si quieres ver todos los datos de los campos, algo como esto debería hacer lo que necesita:

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

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

esta debería ser la respuesta aceptada :) – Imdad

1

Usted está asignando el valor de cada campo en lugar del valor del texto del control existente y el nuevo valor. Agregue un punto de interrupción para asegurarse de que está obteniendo varias filas, pero a medida que se escribe su código, solo verá el resultado de una fila en su formulario porque está sobreescribiendo en cada iteración a través del ciclo.

0

Usted debe enviar los datos antes de volver a escribir en él:

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

O utilizar una var para almacenar todos los datos de cada 'leer' y luego salida que var

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