未访问数据库

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

第一个是我调用的函数。第二个是显示已经存储在数据库中的数据的代码。现在,当我从txtno输入许可证号码,并从combox cbonumber中选择许可证号码并按下btnsearch时,即使存在的许可证号码和号码类型是数据库,也不会显示找到记录的消息

功能

 public DataTable CheckExistingLicenseNo(string LicenseNumber, string Numbertype)
    {
        SqlConnection con = new SqlConnection("Data Source=(LocalDB)''MSSQLLocalDB; Integrated Security=True; Initial Catalog=tprojectDB;");
        string sql = "select *from tblDDDDDriver where LicenseNumber=@LicenseNumber and Numbertype=@Numbertype";
        SqlCommand cmd = new SqlCommand(sql, con);
        cmd.Parameters.AddWithValue("@LicenseNumber", LicenseNumber);
        cmd.Parameters.AddWithValue("@Numbertype", Numbertype);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataTable db = new DataTable();
        da.Fill(db);
        return db; ;
    }

btnsearch 中的代码

 private void btnsearch_Click(object sender, EventArgs e)
    {
        DataTable db = dc.CheckExistingLicenseNo(txtno.Text,cbonumbertype.Text);
        if (db.Rows.Count > 0)
        {
            if (cbonumbertype.Text == "LicenseNumber")
            {
                txtlicenseno.Text = db.Rows[0]["LicenseNumber"].ToString();
                txtlicensecategory.Text = db.Rows[0]["LicenseCategory"].ToString();
                txtissuedate.Text = db.Rows[0]["IssueDate"].ToString();
                txtrenewdate.Text = db.Rows[0]["RenewDate"].ToString();
                txtfullname.Text = db.Rows[0]["FullName"].ToString();
                txtdob.Text = db.Rows[0]["DOB"].ToString();
                txtaddress.Text = db.Rows[0]["Address"].ToString();
                string gender = db.Rows[0]["Gender"].ToString();
                if (gender == "Male")
                {
                    txtgender.Text = " MALE";
                }
                else
                {
                    txtgender.Text = "FEMALE";
                }
                txtvehicleno.Text = db.Rows[0]["VehicleNumber"].ToString();
                txthealthstaus.Text = db.Rows[0]["HealthStatus"].ToString();
                txtdrivertype.Text = db.Rows[0]["DriverType"].ToString();
                Image img;
                byte[] bytimg = (byte[])db.Rows[0]["Image"];
                //convert byte of imagedate to Image format
                using (MemoryStream ms = new MemoryStream(bytimg, 0, bytimg.Length))
                {
                    ms.Write(bytimg, 0, bytimg.Length);
                    img = Image.FromStream(ms, true);
                    pictureBox1.Image = img;
                }
            }
            DataTable dd = dc.GetMaxDeathNo(Convert.ToDecimal(txtlicensenumber.Text));
            if (dd.Rows.Count > 0)
            {
                txtdeathaccidentno.Text = dd.Rows[0]["DeathNumber"].ToString();
            }
            DataTable dM = dc.GetMaxMajorNo(Convert.ToDecimal(txtlicensenumber.Text));
            if (dM.Rows.Count > 0)
            {
                txtmajoraccidentno.Text = dM.Rows[0]["MajorNumber"].ToString();
            }
            DataTable dm = dc.GetMaxMinorNo(Convert.ToDecimal(txtlicensenumber.Text));
            if (dm.Rows.Count > 0)
            {
                txtminoraccidentno.Text = dm.Rows[0]["MinorNumber"].ToString();
            }
            DataTable dtrb = dc.GetTrafficRuleBroken(Convert.ToDecimal(txtlicensenumber.Text));
            {
                dataGridView1.DataSource = dtrb;
            }
        }
        else
        {
            MessageBox.Show("No RECORD IS FOUND");
        }
    }
}

未访问数据库

我唯一怀疑可能导致问题的是cbonumbertype的值。文本更改为cbonumbertype。选择Value,看看这是否有帮助。

更改

DataTable db = dc.CheckExistingLicenseNo(txtno.Text,cbonumbertype.Text);

DataTable db = dc.CheckExistingLicenseNo(txtno.Text,cbonumbertype.SelectedValue);

我怀疑Bayeni的解决方案是正确的。您可能输入的是组合框SelectedItem.Text值,而不是SelectedItem.Value值。

检查这一点的最简单方法是在这行中添加一个断点:

DataTable db = dc.CheckExistingLicenseNo(txtno.Text,cbonumbertype.Text);

在Visual Studio中,选择"调试">"开始调试",然后检查cbonumbertype中的值是否为。文本是您期望看到的内容。