【问题标题】:How to display query results in DataGridView using list<T>如何使用 list<T> 在 DataGridView 中显示查询结果
【发布时间】:2019-09-07 14:04:01
【问题描述】:

我目前正在学习如何用 C# 编写代码。我第一次能够连接 MySQL 数据库实例!在我的代码中,我进行了 SQL 查询并将数据放入列表中。我想将存储在 List 中的数据显示到 DataGridView 中。

我尝试了几种我在网上找到的不同方法,但似乎都没有奏效。我尝试使用 foreach 循环来显示结果。

我在课堂上的代码:

    public List<string>[] Select()
    {
        string query = "SELECT * FROM users";

        //Create a list to store the result
        List<string>[] list = new List<string>[3];
        list[0] = new List<string>();
        list[1] = new List<string>();
        list[2] = new List<string>();

        //Open connection
        if (this.OpenConnection() == true)
        {
            //Create Command
            MySqlCommand cmd = new MySqlCommand(query, _connection);
            //Create a data reader and Execute the command
            MySqlDataReader dataReader = cmd.ExecuteReader();

            //Read the data and store them in the list
            while (dataReader.Read())
            {
                list[0].Add(dataReader["user_id"] + "");
                list[1].Add(dataReader["user_name"] + "");
                list[2].Add(dataReader["user_lastname"] + "");
            }

            //close Data Reader
            dataReader.Close();

            //close Connection
            this.CloseConnection();

            //return list to be displayed
            return list;
        }
        else
        {
            return list;
        }
    }

这是表单内的代码:

private void Button1_Click(object sender, EventArgs e)
        {
            DBConnect test = new DBConnect();
            foreach (var item in test.Select())
            {
                dataGridView1.DataSource = item;
            }

        }

当我尝试显示结果时,我得到一个只显示“长度”的表格,每个表格都填充了一个数字。

【问题讨论】:

  • 这是 WinForms 还是 Webforms?
  • 您正在多次更新 dataGridView1.DataSource。您应该删除 foreach 循环并将代码更改为 dataGridView1.DataSource = test.Select();。让我知道它是否对您有帮助
  • 类是为了防止这种繁琐的代码,DataTable 也可以很好地显示数据。您还需要了解 DBProvider 对象的工作原理,因为打开和关闭一个连接是次优的

标签: c# mysql visual-studio


【解决方案1】:

如果您可以直接使用DataTable,您可以将其分配给Gridview 的Datasource

if (this.OpenConnection() == true)
{     

  SqlCommand sqlCmd = new SqlCommand();
  sqlCmd.Connection = con;
  sqlCmd.CommandType = CommandType.Text;
  sqlCmd.CommandText = "SELECT * FROM users";
  SqlDataAdapter sqlDataAdap = new SqlDataAdapter(sqlCmd);

  DataTable dtRecord = new DataTable();
  sqlDataAdap.Fill(dtRecord);
  dataGridView1.DataSource = dtRecord;
}

如果你想填写按钮点击事件,从Select()返回DataTable并在按钮点击中设置datasouce。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多