如何打印从SQL Server数据库中检索的2列

时间:2016-10-17 10:44:57

标签: c# sql-server

代码遗漏了一些东西(我猜)。我想在列表框中显示学生ID和姓名。但我明白这一点:

enter image description here

我无法弄清楚问题,尤其是内部联接。

private void button1_Click(object sender, EventArgs e)
{
    string strName = "";

    connect.Open();
    SqlCommand command = new SqlCommand(" Select Student_tbl.StudentName, Student_tbl.StudentID, Module_tbl.ModuleID FROM[Course-Student] INNER JOIN Student_tbl ON [Course-Student].SID = Student_tbl.StudentID INNER JOIN Module_tbl ON[Course-Student].CID = Module_tbl.ModuleID WHERE(Module_tbl.ModuleID = '" + tbCourse.Text+"')",connect);

    command.ExecuteNonQuery();

    SqlDataReader reader = command.ExecuteReader();

    while (reader.Read())
    {
       strName = reader[1].ToString();
       listBox1.Items.Add(strName);
    }

    connect.Close();
}

1 个答案:

答案 0 :(得分:2)

您正在从阅读器仅打印StudentID字段。按如下所示更改while循环以检索两个字段并连接值:

while (reader.Read())
{
   var name = reader[0].ToString();
   var id = reader[1].ToString();
   listBox1.Items.Add(id + " " + name);
}

您还可以使用String Interpolationstring.Format的C#6语法糖),如下所示:

while (reader.Read())
{
   listBox1.Items.Add($"{reader[1].ToString()} {reader[0].ToString()}");
}

另外,对于sql语句:不要使用字符串连接来创建语句。这适用于SQL注入。请改用Parameterized Queries