2015-12-21 96 views
0

第一個是我打電話的功能。第二個是顯示已經存儲在數據庫中的數據的代碼。現在,當我輸入來自txtno許可證號,然後從下拉框cbonumber許可證號碼,然後按btnsearch,也顯示沒有記錄中發現的消息,即使licensenumber和numbertype存在是數據庫未訪問數據庫

功能

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 [email protected] and [email protected]"; 
     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"); 
     } 
    } 
} 
+2

它出錯了?輸入的值是什麼?數據庫的內容是什麼? –

+0

您還應該在SQL執行代碼中添加try-catch語句。這將有助於突出顯示該代碼中的錯誤,並且會告訴您,您沒有打開連接,如@MitchWheat提到的那樣 – Takarii

+1

@MitchWheat由於Op正在使用'SqlDataAdapter',因此不需要「打開」連接。 – Mairaj

回答

1

我懷疑唯一可以導致一個問題是cbonumbertype.Text的價值。更改爲cbonumbertype.SelectedValue,看看是否會幫助。

變化

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

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

我懷疑Bayeni的解決方案是正確的。您可能輸入組合框SelectedItem.Text值而不是SelectedItem.Value值。

檢查這個最簡單的方法是將斷點添加到該行:

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

在Visual Studio中,選擇調試>開始調試和檢查,如果在cbonumbertype.Text值是你所期望的一個查看。