数据库未被访问,c#中没有输出

本文关键字:输出 访问 数据库 | 更新日期: 2023-09-27 18:27:49

前两个是类中的函数,第二个是代码。这里我有一个文本框,即txtlicense和combobox cboacident type,combobox由两个选择项组成,即Death和Major。现在,如果我在txtlicexe中输入licensenumber,并从数据库中的combobox中选择Death选项,它将根据需要显示输出,但问题是,如果我在文本框中输入licensenumber,并从数据库中已经存在的组合框中选择major选项,然后按下按钮,它不会显示任何major的输出。

public DataTable Checkdeathaccident(string LicenseNumber, string PhysicalStatus)
{
    SqlConnection con = new SqlConnection("Data Source=(LocalDB)''MSSQLLocalDB; Integrated Security=True; Initial Catalog=tprojectDB;");
    string sql = "select DeathNumber,ReportNumber,Date from tblAccident  where LicenseNumber=@LicenseNumber and PhysicalStatus=@PhysicalStatus";
    SqlCommand cmd = new SqlCommand(sql, con);
    cmd.Parameters.AddWithValue("@LicenseNumber", LicenseNumber);
    cmd.Parameters.AddWithValue("@PhysicalStatus", PhysicalStatus);
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable dan = new DataTable();
    da.Fill(dan);
    return dan;
}
public DataTable Checkmajoraccident(string LicenseNumber, string PhysicalStatus)
{
    SqlConnection con = new SqlConnection("Data Source=(LocalDB)''MSSQLLocalDB; Integrated Security=True; Initial Catalog=tprojectDB;");
    string sql = "select DeathNumber,ReportNumber,Date from tblAccident where LicenseNumber=@LicenseNumber and PhysicalStatus=@PhysicalStatus";
    SqlCommand cmd = new SqlCommand(sql, con);
    cmd.Parameters.AddWithValue("@LicenseNumber", LicenseNumber);
    cmd.Parameters.AddWithValue("@PhysicalStatus", PhysicalStatus);
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable dl = new DataTable();
    da.Fill(dl);
    return dl;
}    
private void button10_Click_1(object sender, EventArgs e)
{
    DataTable dan = pac.Checkdeathaccident(txtlicense.Text, cboaccidentype.Text);
    if (dan.Rows.Count > 0)
    {
        if (cboaccidentype.Text == "Death")
        {
            dataGridView2.DataSource = dan;
        }
        else
        {
           DataTable dl = pac.Checkmajoraccident(txtlicense.Text, cboaccidentype.Text);
            if (dl.Rows.Count > 0)
            {
                if (cboaccidentype.Text == "Major")
                {
                    dataGridView2.DataSource = dl;
                }                               
            }
        }
    }
    else
    {
        MessageBox.Show("No Record Found");
    }
}

数据库未被访问,c#中没有输出

正如Paul所提到的,你有相同的函数在运行,用相同的选择查询填充相同的网格视图,你可以重构到这个,它应该可以工作,我测试这不是一个想法。

public DataTable checkAccident(string LicenseNumber, string PhysicalStatus)
{
    SqlConnection con = new SqlConnection("Data Source=(LocalDB)''MSSQLLocalDB; Integrated Security=True; Initial Catalog=tprojectDB;");
    string sql = "select DeathNumber,ReportNumber,Date from tblAccident where LicenseNumber=@LicenseNumber and PhysicalStatus=@PhysicalStatus";
    SqlCommand cmd = new SqlCommand(sql, con);
    cmd.Parameters.AddWithValue("@LicenseNumber", LicenseNumber);
    cmd.Parameters.AddWithValue("@PhysicalStatus", PhysicalStatus);
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable dl = new DataTable();
    da.Fill(dl);
    return dl;
}    
private void button10_Click_1(object sender, EventArgs e)
{
    DataTable dan = pac.checkAccident(txtlicense.Text, cboaccidentype.Text);
    if (dan.Rows.Count > 0)
    {
        dataGridView2.DataSource = dan;
    }
    else
    {
        MessageBox.Show("No Record Found");
    }
}