如何在SQL数据库的DataGrid中只显示某些列

本文关键字:显示 DataGrid SQL 数据库 | 更新日期: 2023-09-27 18:20:12

假设我在SQL数据库中有一个名为Table_T的表,它包含6列(column1column2、…、column6)。

以下代码将数据库中的所有列填充到dataGridView:中

private void button1_Click(object sender, EventArgs e)
{
    SqlConnection cn = new SqlConnection(
        "Data Source=PCN-TOSH;Initial Catalog=mydb;Integrated Security=True");
    cn.Open();
    SqlCommand cm = new SqlCommand("SELECT *FROM Table_T");
    cm.Connection = cn;
    SqlDataAdapter da = new SqlDataAdapter(cm);
    DataTable dt = new DataTable();
    da.Fill(dt);
    cn.Close();
    dataGridView1.DataSource = dt;
}

但是我怎么能只选择column3&列5并将它们填充到dataGridview1中?

如何在SQL数据库的DataGrid中只显示某些列

SELECT column3, column5 FROM Table_T

为什么不起作用?

如果您不需要从表中返回所有内容,则应使用

select col1, col2 from table 

如果您需要条件,请使用where条款

然而,如果确实需要获取所有数据,但在特定时间只显示特定信息,我会使用类似的foreach循环

foreach(var item in dt.Rows)
{
  var colValue0 = item[0].ToString()
  var colValue1 = item[1].ToString()
  var colValue2 = Convert.ToIn16(item[2])
}

----编辑----

重新审视你的问题,如果你将其绑定到一个网格视图,并且只想要某些信息,你应该将这些值添加到一个新的数据表中,然后只显示新的数据表格

所以你需要做一些类似的事情

var bindableDt = new Datatable();
bindableDt.Columns.Add("colName1")
bindableDt.Columns.Add("colName2")
foreach(var item in dt.Rows)
{
    bindableDt.Row.Add(dt.Rows[0], dt.Rows[1]);
}
gridview.Datasource = bindableDt;

[此答案最初由@caricorn]作为评论发布

SqlCommand cm = new SqlCommand("SELECT column3,column5 FROM Table_T")

这个代码运行得很好。谢谢大家的帮助。所有的尊重和问候。