数据库未被访问,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");
}
}
正如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");
}
}