代码遗漏了一些东西(我猜)。我想在列表框中显示学生ID和姓名。但我明白这一点:
我无法弄清楚问题,尤其是内部联接。
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();
}
答案 0 :(得分:2)
您正在从阅读器仅打印StudentID
字段。按如下所示更改while
循环以检索两个字段并连接值:
while (reader.Read())
{
var name = reader[0].ToString();
var id = reader[1].ToString();
listBox1.Items.Add(id + " " + name);
}
您还可以使用String Interpolation(string.Format
的C#6语法糖),如下所示:
while (reader.Read())
{
listBox1.Items.Add($"{reader[1].ToString()} {reader[0].ToString()}");
}
另外,对于sql语句:不要使用字符串连接来创建语句。这适用于SQL注入。请改用Parameterized Queries