2011-07-19 96 views
0

我是新來Visual Studio 2010 C#和MySQL。我正在創建一個應用程序,其中有一部分內容將顯示數據庫中的所有信息(MySQL),其中包括c#中的列表視圖。我已經在數據庫中創建了數據的添加部分。我在這裏有一些代碼,但它不起作用,沒有信息顯示在我的列表視圖中。使用ListView顯示保存在數據庫中的信息

這是代碼:

 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,我的意思是,你是否檢查是否任何數據回來,這意味着數據表中的行數應不爲零。嘗試在原始代碼中放置一個斷點,並快速觀看'tbl.Rows'。如果返回任何行,請檢查它的'.Count'屬性。 –

回答

0

這是我做的,它的工作。

   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

你真的*不想做「SELECT *」,然後索引所有這些結果。當你第一次改變你的表格結構時,這段代碼就會中斷。更好地選擇你想要的列。 – Grammarian

+0

選擇1,2,28,29,並使其免費SQL注入先生。 –

1

使它在安全的方式

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