Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用列表在DataGridView中显示查询结果<;T>;_C#_Mysql_Visual Studio - Fatal编程技术网

C# 如何使用列表在DataGridView中显示查询结果<;T>;

C# 如何使用列表在DataGridView中显示查询结果<;T>;,c#,mysql,visual-studio,C#,Mysql,Visual Studio,我目前正在学习如何用C语言编写代码。我第一次能够连接MySQL数据库实例!在我的代码中,我进行了SQL查询并将数据放入列表中。我想将列表中存储的数据显示到DataGridView中 我在网上找到了几种不同的方法,但都不管用。我尝试使用foreach循环来显示结果 我在类中的代码: public List<string>[] Select() { string query = "SELECT * FROM users"; //Creat

我目前正在学习如何用C语言编写代码。我第一次能够连接MySQL数据库实例!在我的代码中,我进行了SQL查询并将数据放入列表中。我想将列表中存储的数据显示到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;
        }
    }

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

如果您可以使用
DataTable
direclty,您可以将其分配给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()
返回数据表,然后在按钮单击中仅设置数据源。

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