2011-07-19 4 views
0

Je suis nouveau sur Visual Studio 2010 C# et MySQL. Je crée une application où il y a une partie qui montrera toutes les informations dans la base de données (MySQL) dans un listview dans C#. J'ai déjà créé l'ajout d'une partie des données dans la base de données. J'ai quelques codes ici mais ça ne marche pas, aucune information n'est montrée dans ma listview.Utilisation de Listview pour afficher les informations enregistrées dans la base de données

Voici le code:

 listViewCompany.Items.Clear(); 
     string cmd = "select company_name, company_other_names, company_contactperson, company_contactperson_position from company"; 
     DBConn db = new DBConn(); 
     DataTable tbl = db.retrieveRecord(cmd); 
     int x = 0; 
     foreach (DataRow row in tbl.Rows) 
     { 
      ListViewItem lv = new ListViewItem(row[0].ToString()); 
      lv.SubItems.Add(row[1].ToString()); 
      lv.SubItems.Add(row[2].ToString()); 
      lv.SubItems.Add(row[3].ToString()); 
      listViewCompany.Items.Add(lv); 
     } 
+1

@sean, je voulais dire si vous avez vérifié si des données sont revenus, ce qui signifie que le nombre de lignes de la table de données doit être non nulle. Essayez de mettre un point d'arrêt sur votre code d'origine et faites un petit tour sur 'tbl.Rows'. Vérifiez sa propriété '.Count' s'il y a des lignes retournées. –

Répondre

0

C'est ce que je l'ai fait et cela fonctionne.

   string query = "SELECT * FROM company where company_name Like '" + textBoxSearchCompany.Text + "%'"; 
       listViewCompany.Items.Clear(); 
       DBConn db = new DBConn(); 
       DataTable tbl = db.retrieveRecord(query); 
       int x = 0; 
       foreach (DataRow row in tbl.Rows) 
       { 
        ListViewItem lv = new ListViewItem(row[1].ToString()); 
        lv.SubItems.Add(row[2].ToString()); 
        lv.SubItems.Add(row[28].ToString()); 
        lv.SubItems.Add(row[29].ToString()); 
        listViewCompany.Items.Add(lv); 
       } 
+3

Vous * ne * voulez vraiment pas faire "SELECT *", puis indexer tous ces résultats. La première fois que vous modifiez la structure de votre table, ce code se casse. Beaucoup mieux de sélectionner seulement les colonnes que vous voulez. – Grammarian

+0

sélectionnez 1, 2, 28, 29 et rendez-le sql sans injection monsieur. –

1

Faire en toute sécurité

DataTable tbl = new DataTable(); 

using (var con = new MySqlConnection { ConnectionString = conn.config }) 
{ 
     using (var command = new MySqlCommand { Connection = con }) 
     { 
      if (con.State == ConnectionState.Open) 
       con.Close(); 

      con.Open(); 

      command.CommandText = @"SELECT * FROM company where company_name Like Concat(@search,'%')"; 
      command.Parameters.AddWithValue("@search", textBoxSearchCompany.Text); 
      tbl.Load(command.ExecuteReader()); 
      foreach(DataRow row in tbl.Rows) 
      { 
       ListViewItem lv = new ListViewItem(row[1].ToString()); 
       lv.SubItems.Add(row[2].ToString()); 
       lv.SubItems.Add(row[28].ToString()); 
       lv.SubItems.Add(row[29].ToString()); 
       listView1.Items.Add(lv); 
      } 
     } 
} 
Questions connexes