2013-06-25 3 views
1

J'ai le code suivant que quand je remplis un nom ou quoi que ce soit, il va chercher dans la base de données MySQL et me montrer tous les noms qui ont ce que vous avez entré il.Obtenir la zone de texte pour afficher les enregistrements de la même rangée de MySQL

MySqlConnection connection2 = new MySqlConnection("Server=" + server + ";" + "Port=" + port + ";" + "Database=" + database + ";" + "Uid=" + uid + ";" + "Password=" + password + ";"); 


      connection2.Open(); 
      string query = @"SELECT DISTINCT name2 FROM childDatabase WHERE name2 Like '%" + childSearch.Text + "%'"; 
        MySqlCommand cmd = new MySqlCommand(query, connection2); 

       cmd.ExecuteNonQuery(); 

       MySqlDataAdapter da = new MySqlDataAdapter(query, connection2); 
       DataTable dt = new DataTable(); 
       da.Fill(dt); 


       childSearchCombo.DataSource = dt; 
       childSearchCombo.ValueMember = dt.Columns[0].ColumnName; 
       connection2.Close(); 

Maintenant, ce code est très bien et il est utilisé pour ma comboBox. La chose dont j'ai besoin est que lorsque vous appuyez sur le bouton (disons ... btnShow) il est censé afficher le reste de l'extrait de la db dans la même rangée. En ce moment, il affiche actuellement l'index à [0] qui n'est évidemment pas dynamique pour chaque enregistrement et est la faille évidente dans le code que même je comprends.

C'est le code pour elle:

 MySqlConnection connection2 = new MySqlConnection("Server=" + server + ";" + "Port=" + port + ";" + "Database=" + database + ";" + "Uid=" + uid + ";" + "Password=" + password + ";"); 

     connection2.Open(); 
     string query = @"SELECT DISTINCT name2, age, gender FROM childDatabase"; 
     MySqlCommand cmd = new MySqlCommand(query, connection2); 

     cmd.ExecuteNonQuery(); 

     MySqlDataAdapter da = new MySqlDataAdapter(query, connection2); 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 


     firstNameDisp.Text = dt.Columns[0].ColumnName; 
     ageDisp.Text = dt.Columns[1].ColumnName; 
     genderDisp.Text = dt.Columns[2].ColumnName; 

Donc, fondamentalement, les 3 dernières lignes de ce code devrait afficher le nom, l'âge et le sexe dans la même ligne que celle sélectionnée dans la liste déroulante.

J'ai cherché longtemps et ma connaissance ne semble pas encore être à la hauteur. Toute aide est appréciée!

Répondre

2

Vous devez utiliser une instruction using pour disposer correctement vos objets MySQL.

Ceci est un extrait de code pour vous aider à démarrer.

DataTable dt = new DataTable(); 
string _CS = "Server=" + server + ";Port=" + port + ";Database=" + database + ";Uid=" + uid + ";Password=" + password; 
using (MySqlConnection connection2 = new MySqlConnection(_CS)) 
{ 
    connection2.Open(); 
    string query = @"SELECT DISTINCT * FROM childDatabase"; 
    using (MySqlCommand cmd = new MySqlCommand(query, connection2)) 
    { 
     // cmd.ExecuteNonQuery(); There's no need to execute this. da.Fill() will 
     // execute your command. 
     using (MySqlDataAdapter da = new MySqlDataAdapter(cmd)) 
      da.Fill(dt); 
    } 
    // connection2.Close(); No need to close either. The using statement does that. 
} 

foreach (var st in dt.AsEnumerable()) 
{ 
    if (st.Field<string>("name2").Contains(childSearch.Text)) 
    // or .Contains(yourComboBox.SelectedItem.ToString()) 
    { 
     childSearchCombo.Items.Add(st.Field<string>("name2")); 
     firstNameDisp.Text = st.Field<string>("your column name"); 
     ageDisp.Text = st.Field<string>(0); // or by index 
     genderDisp.Text = st.Field<string>("column name or index"); 
     // Note that st.Field<T> also can be a decimal, a bool, an int etc.. 
    } 
} 

De cette façon, vous n'avez pas besoin d'effectuer une requête pour chaque bit. Je ne suis pas non plus sûr à 100% que cela fonctionnera entièrement, je pense que vous devrez faire un bug autour d'un peu.

Quoi qu'il en soit, il existe probablement beaucoup de meilleures façons d'effectuer cela. Mais je pense que c'est une bonne courbe d'apprentissage. Bonne chance!

+0

Avec un peu de tweeking, cela a fonctionné. Merci beaucoup mec! – ScorpioBlue

+0

@ScorpioBlue Content de vous aider :) – DeMama

Questions connexes