【发布时间】:2020-07-21 20:55:51
【问题描述】:
else if (listBox1.SelectedIndex == 1)
{
String sql2 = "SELECT FirstName, LastName FROM Players WHERE Team = 'Milwaukee Bucks'" +
"AND Number < 24";
// command statement
command = new SqlCommand(sql2, cnn);
SqlDataReader reader = command.ExecuteReader();
// Get table values
if (reader.Read())
{
textBox1.Text = reader.GetString(0).ToString() + " " + reader.GetString(1).ToString();
}
cnn.Close();
command.Dispose();
}
上面是我的代码的一部分。我有一个列表框,其中包含供用户选择的选项,根据选择的项目,显示按钮将运行查询并将结果返回到文本框。
但是,当我运行代码时,我只能得到一个结果。该查询返回了在雄鹿队中人数小于 24 的球员。应该有多个,但我在 C# 应用程序中只得到一个。
【问题讨论】:
-
您需要执行
while(reader.Read()),但这会在每次循环迭代时覆盖 textBox1,所以我认为这不是完整的解决方案。 -
SqlDataReader 会进行连续读取,因此每次调用
reader.Read()都会返回下一条记录 -
这个答案 (How do I fill a DataTable using DataReader) 给出了加载所有数据的替代方法的示例
-
顺便说一句,如果您对列表中的每个项目都有一个
if else,那么您做错了。您可以动态获取所选列表项并将其值用作查询中的参数。 -
我确实有多个 if else's。我不知道如何更有效地做到这一点,你能解释一下吗?
标签: c# sql sql-server