如何仅显示 SQL 数据库中 DataGrid 中的某些列?
Posted
技术标签:
【中文标题】如何仅显示 SQL 数据库中 DataGrid 中的某些列?【英文标题】:How to only display certain columns in DataGrid from SQL database? 【发布时间】:2016-02-01 17:56:32 【问题描述】:假设我在 SQL 数据库中有一个名为 Table_T
的表,它包含 6 列(column1
、column2
、...、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 和 column5 并将它们填充到 dataGridview1
中?
【问题讨论】:
SqlCommand cm = new SqlCommand("SELECT column3,column5 FROM Table_T"); 【参考方案1】:SELECT column3, column5 FROM Table_T
为什么不行?
【讨论】:
@naouf 太棒了!请按答案旁边的勾号将其标记为正确答案:) @naouf 当帖子回答您的问题时,您可以点击答案附近的复选标记以使其被接受。这样以后对用户的帮助会更大。虽然您只能将一个答案标记为已接受,但当您的声誉得分达到 15 时,您可以投票给您认为有帮助的尽可能多的答案,包括已接受的答案。您也可以为好的问题投票。 :)【参考方案2】:如果你不需要从表中返回所有东西,你应该使用
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])
----编辑----
重新审视您的问题,如果您将其绑定到 gridview 并且只需要某些信息,您应该将这些值添加到新数据表中,然后仅显示新数据表
所以你需要做类似的事情
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;
【讨论】:
【参考方案3】:[这个答案最初是由@capricorn 发表的评论]
SqlCommand cm = new SqlCommand("SELECT column3,column5 FROM Table_T")
这段代码运行良好。感谢大家的帮助 。所有的尊重和问候。
【讨论】:
既然有帖子回答了你的问题,你可以删除这个帖子并接受this answer :)以上是关于如何仅显示 SQL 数据库中 DataGrid 中的某些列?的主要内容,如果未能解决你的问题,请参考以下文章
使用 vb.net 根据 SQL 数据库中存在的记录动态显示/隐藏 DataGrid 按钮列时遇到问题