【发布时间】:2020-11-01 17:48:42
【问题描述】:
在这里进行分配时,我可以查看从数据库到网格视图的所有数据,但数据似乎是 unsorted 并且它显示了我只想在 DataGridView 代码中显示的所有数据 display the result of a query 我有试过的是:
private void btnmeritbsit_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(dbpath);
string query = "select Applicant_no,A_Name,Father_Name,T_Matric,O_Matric,M_Percentage,T_Inter ,O_Inter ,I_Percentage from applicantinfo order by I_Percentage desc";
con.Open();
dataGridView1.ColumnCount = sdr.FieldCount;
SqlCommand cmd = new SqlCommand(query, con);
SqlDataReader sdr = cmd.ExecuteReader();
while (sdr.Read())
{
dataGridView1.Rows.Add(sdr["Applicant_no"], sdr["A_Name"], sdr["Father_Name"], sdr["T_Matric"], sdr["O_Matric"], sdr["M_Percentage"], sdr["T_Inter"], sdr["O_Inter"], sdr["I_Percentage"]);
}
con.Close();
}
我通过datatable 和dataAdapter 获得了全部价值,但没有任何效果!!卡住了!!
// DataTable dtbl = new DataTable();
// sda.Fill(dtbl);
// dataGridView1.DataSource = dtbl;
【问题讨论】:
-
我通过 datatable 和 dataAdapter 获取整个值,这将是正常的方式。更改为 datareader 时(为什么?)您需要更多代码。你有,但所有的顺序都错了。再看一遍:为什么在打开连接之前执行 ExecuteReader,为什么在之后立即关闭以及为什么在循环之外添加行?也可以将datatable和reader.Load结合起来实现数据绑定。
-
问题的根本原因是您的查询缺少 WHERE 子句。将数据集添加到您的项目,在其中配置一个带有参数化 where 子句的 tableadapter,然后将网格的表示拖出数据源窗口并拖到您的表单上,这将在 0 行 c# 代码和一个 SQL 中解决所有问题,由你。目前我没有足够的时间将其写成答案,但您可以查看 stackoverflow.com/questions/62543864/… 中的项目符号列表
-
@CaiusJard 你能解释一下吗
-
@TaW 你会通过在我的代码中添加一些编辑来告诉我吗?
-
将 con.Open 向上移动一行,在循环之后将 con.close 和 rows.add 移动到循环中。报告结果..!更多更改:您需要自己添加列,可能像这样:
dataGridView1.ColumnCount = sdr.FieldCount;或一一添加。您还需要像这样访问数据:`dataGridView1.Rows.Add(sdr["Applicant_no"], sdr["A_Name"], .....);`
标签: c# sql winforms datagridview