C#如何从mysql数据库表中获取行头

时间:2017-06-24 20:59:58

标签: c# mysql

好日子先生和女士。我打算获取所有行标题,如“column_id和first_name,last_name等”,并使用mysql数据库表中的行标题填充我的列表框。请赐教我怎么做。我不知道如何使用MySqlDataAdapter或MySqlDataReader。我是初学者,愿意学习。

        using (MySqlConnection conns2 = new MySqlConnection(connString)) 
        {
            conns2.Open();
            MySqlCommand comm2 = new MySqlCommand("SELECT * FROM table1", 
            conns2);
            MySqlDataAdapter add2 = new MySqlDataAdapter(comm2);
            DataTable dt2 = new DataTable();
            add2.Fill(dt2);
            foreach(DataColumn column in dt2.Columns)
            {
                columnlistbox.Items.Add(dt2.Columns); 
                //it shows "collection" and exactly the number of row header 
                //but it doesn't show like "First name, client_id and last 
                //name"
            }
            conns2.Close();
        }

3 个答案:

答案 0 :(得分:1)

用于从DataTable获取列名

如果您需要数据库中的数据,并将其加载到DataTable中(使用DbDataAdapter或DbDataReader),您可以从DataTable.Columns集合属性中了解列名称:

foreach (DataColumn col in dt2.Columns)
    columnlistbox.Items.Add(col.ColumnName);

仅从MySql db(表,列等)获取模式

但如果您不需要来自数据库的任何数据,只需要其结构,则可以使用DbDataReader。为了由读者加载这些数据,必须对查询进行模拟"到数据库:

using (MySqlConnection conns2 = new MySqlConnection(connString))
{
    conns2.Open();
    MySqlCommand comm2 = new MySqlCommand("SELECT * FROM table1", conns2);

    using (var reader = MySqlCommand.ExecuteReader(CommandBehavior.SchemaOnly))
    {
        reader.Read();
        var dtSchema = reader.GetSchemaTable();

        foreach (DataRow row in tableSchema.Rows)
            columnlistbox.Items.Add(row["ColumnName"]);

    }
}

表格https://stackoverflow.com/a/7159610/1271037

答案 1 :(得分:0)

使用MySqlDataAdapter是基于您提供的示例代码的合适选择,因为您正在填充DataTable,而在ADO.NET中,DataAdapter传统上用于填充DataTable。 DataAdapter填充或“填充”您的DataTable对象。

您还可以使用DataReader填充DataTable:

var dataReader = cmd.ExecuteReader();
var dataTable = new DataTable();
dataTable.Load(dataReader);

DataAdapters和DataReader是ADO.NET的核心设计概念,无论是使用Sql Server还是MySQL数据库。 DataReader是一个前向,轻量级和更快的数据库查询助手。 DataAdapter比DataReader重一点,并且比DataReader做的更多,DataAdapter可能在后台使用DataReader。

以下是如何使用MySQL数据库中的数据,您需要使用DataGrid,而不是ListBox

     using (MySqlConnection conn = new MySqlConnection(connString)) 
    {
        conn.Open();
        MySqlCommand cmd = new MySqlCommand("SELECT * FROM table1", 
        conn);
        MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        adapter.Fill(dt);

        //display your dataset in a ASP.NET Web Forms DataGrid
        dataGrid.DataSource = dt;
        dataGrid.DataBind();

        //conn.Close();// you do not need this, your using statements call Dispose and Dispose will release the connection back to the connection pool
    }

答案 2 :(得分:0)

您可以从此代码中获取指针。总之,GetName正是您所寻找的。

using (Common.DbCommand cmd = conn.CreateCommand()) {
    cmd.CommandText = "SELECT * FROM table1";
    dynamic dr = cmd.ExecuteReader();
    int index = 0;
    List<string> columns = new List<string>();

    for (index = 0; index <= dr.FieldCount - 1; index++) {

        columns.Add(dr.GetName(index));
    }

}