2011-07-19 36 views
0

私はVisual Studio 2010 C#およびMySQLを初めて使用しています。私は、C#でリストビュー内のデータベース(MySQLの)内のすべての情報が表示されますそこに部分があるアプリケーションを作成しています。私はすでにデータをデータベースに追加しています。私はここにいくつかのコードがありますが、それは動作しません、私のリストビューに表示される情報はありません。リストビューを使用してデータベースに保存された情報を表示

これはコードです:

 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 injection free sirにします。 –

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); 
      } 
     } 
} 
関連する問題