【问题标题】:Using Listview to Show Information Saved in the Database使用 Listview 显示保存在数据库中的信息
【发布时间】:2011-10-08 05:57:07
【问题描述】:

我是 Visual Studio 2010 C# 和 MySQL 的新手。我正在创建一个应用程序,其中有一个部分将在 c# 中的 listview 中显示数据库(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);
        }

【问题讨论】:

  • @sean,我的意思是你是否检查过是否有任何数据返回,这意味着数据表的行数应该不为零。尝试在您的原始代码处设置一个断点并在tbl.Rows 快速查看。如果返回任何行,请检查其.Count 属性。

标签: c# mysql visual-studio-2010 listview


【解决方案1】:

这就是我所做的,它正在工作。

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

【讨论】:

  • 真的不想做“SELECT *”然后索引到所有这些结果。第一次更改表结构时,该代码将中断。最好只选择你想要的列。
  • 选择 1, 2, 28, 29 并使其无 sql 注入先生。
【解决方案2】:

以安全的方式进行

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

【讨论】:

    【解决方案3】:

    设置listview属性查看详情

    listView.View = View.Details;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多