为什么我无法将数据库值加载到listview中?

时间:2017-12-14 08:23:15

标签: c# mysql listview

我有这段代码:

listView10.Items.Clear();
MySqlConnection con = new MySqlConnection("Server=166.62.27.186;Database=xxxx;Uid=xxxx;Pwd=xxxx;");

MySqlCommand cmd = new MySqlCommand("select * from appoint order by times asc", con);
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
con.Open();
DataTable dt = new DataTable();
da.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
    ListViewItem Item = new ListViewItem(dr["Customer"].ToString());
    Item.SubItems.Add(dr["Kind"].ToString());
    Item.SubItems.Add(dr["connum"].ToString() + "/" + dr["telnum"].ToString());
    Item.SubItems.Add(dr["times"].ToString());
    Item.SubItems.Add(dr["address"].ToString());
    Item.SubItems.Add(dr["type"].ToString());
    Item.SubItems.Add(dr["notes"].ToString());
    listView10.Items.Add(Item);
}
con.Close()

它应该加载表中的值,但它不会。 当我将数据库连接到Mysql Workbench时,似乎连接正常。在我的winform应用程序中,它可以插入数据库但它仍然没有加载。我正如我观察到的那样,我注意到执行后:

da.Fill(dt);

它只是停在那里,并没有执行foreach语句。什么似乎是我不明白的问题。 如果需要的话,我会提供更多的信息,明天有点匆忙是我们论文中的辩护。提前谢谢

调试时的图片

enter image description here

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以使用DataTable.Load()方法和MySqlDataReader.ExecuteReader()方法替代MySqlDataAdapter来检索此示例中的数据:

using (MySqlConnection con = new MySqlConnection("Server=166.62.27.186;Database=xxxx;Uid=xxxx;Pwd=xxxx;"))
{
    con.Open();
    using (MySqlCommand cmd = new MySqlCommand("select * from appoint order by times asc", con))
    {
        MySqlDataReader rdr = cmd.ExecuteReader();
        DataTable dt = new DataTable();
        dt.Load(rdr);
        foreach (DataRow dr in dt.Rows)
        {
            ListViewItem Item = new ListViewItem(dr["Customer"].ToString());
            Item.SubItems.Add(dr["Kind"].ToString());
            Item.SubItems.Add(dr["connum"].ToString() + "/" + dr["telnum"].ToString());
            Item.SubItems.Add(dr["times"].ToString());
            Item.SubItems.Add(dr["address"].ToString());
            Item.SubItems.Add(dr["type"].ToString());
            Item.SubItems.Add(dr["notes"].ToString());
            listView10.Items.Add(Item);
        }
    }
    con.Close();
}