继续检索数据,即使结果为空C#

时间:2018-03-05 20:58:25

标签: c#

我有一个程序可以检索学生和班级信息。

我已经使用if (!reader.HasRows)检查学生是否存在,但问题并非所有学生都已在某个班级注册,我希望它继续检索数据,即使班级信息中的值为空。我是C#的新手,非常感谢任何帮助和推荐。

    private void btnstudsearch_Click_1(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection(@"data source = DELL-USER\SQLEXPRESS;integrated security = SSPI;database = Enrollment System");

        DataTable dt = new DataTable();
        con.Open();

        SqlDataReader reader = null;

        SqlCommand cmd = new SqlCommand("select tbl_studregs.fname, tbl_studregs.mname, tbl_studregs.lname, tbl_studregs.age, tbl_studregs.sex, 
        tbl_studregs.address, tbl_studregs.gname, tbl_studregs.gcnum, tbl_studregs.educlevel, tbl_class.yglevel, tbl_class.section from tbl_studregs 
            inner join tbl_class on tbl_studregs.classid = tbl_class.classid where tbl_studregs.studid = @id ", con);

        cmd.Parameters.AddWithValue("@id", txtstudsearch.Text);

        reader = cmd.ExecuteReader();

        if (!reader.HasRows)
        {
            MessageBox.Show("Student not found! Please recheck the student ID!", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
            ClearAllTextBox();
        }
        else 
        {
            while (reader.Read())
            {
                txtstudfname.Text = reader.GetValue(0).ToString();
                txtmname.Text = reader.GetValue(1).ToString();
                txtstudlname.Text = reader.GetValue(2).ToString();
                txtage.Text = reader.GetValue(3).ToString();
                cboxsex.Text = reader.GetValue(4).ToString();
                rtxtaddress.Text = reader.GetValue(5).ToString();

                txtgname.Text = reader.GetValue(6).ToString();
                txtgcnum.Text = reader.GetValue(7).ToString();
                cboxstudlevel.Text = reader.GetValue(8).ToString();
                txtstudyearlev.Text = reader.GetValue(9).ToString();
                txtstudsec.Text = reader.GetValue(10).ToString();
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

如果我理解正确,即使在tbl_class表上没有连接到类的类,也要检索学生的信息。我想大多数人都可以查看difference between different SQL join operations

看起来你想要的是left join而不是SQL查询中的inner join,尽管它可能取决于你的数据库是什么样的。