2016-05-12 58 views
1

我得到第一WHERE條款,但第二 條款是沒有的。雙人和條款

private void LoadOrders() 
    { 
     con.Open(); 
     cmd = new SqlCommand(@"Select quo_product,quo_address 
          FROM JobQuotations 
          WHERE quotationId = @id 
          AND quo_product = @product 
          AND quo_verified = 'yes';",con); 

     cmd.Parameters.AddWithValue("@id", GridView1.SelectedRow.Cells[1].Text); 
     cmd.Parameters.AddWithValue("@product", GridView1.SelectedRow.Cells[2].Text); 

      rdr = cmd.ExecuteReader(); 
      while(rdr.Read()) 
      { 
       lblProductName.Text = rdr["quo_product"].ToString(); 
       lblAddress.Text = rdr["quo_Address"].ToString(); 
      } 

     con.Close(); 
    } 

我應該收到輸出,所有quo_verified這列值= ,但我也recieving列值,該值= 沒有

+2

什麼是數據庫中的quo_verified數據類型?另外,你可以刪除分號,我認爲';' – Ian

+0

你可以通過讀'quo_verified'並從'rdr'讀取時打印它來仔細檢查'quo_verified ='no''行嗎?你不應該在該專欄中獲得任何東西,除了「是」。 – dasblinkenlight

回答

1

請檢查quo_verified數據類型數據庫。由於數據類型與數據庫表格列不匹配導致的某些轉換可能會導致此問題。

也就是說,您可能希望參數化所有參數,以確保C#端沒有任何錯誤。您也可以刪除分號;

private void LoadOrders() 
{ 
    con.Open(); 
    cmd = new SqlCommand(@"Select quo_product,quo_address 
         FROM JobQuotations 
         WHERE quotationId = @id 
         AND quo_product = @product 
         AND quo_verified = @yes",con); 

    cmd.Parameters.AddWithValue("@id", GridView1.SelectedRow.Cells[1].Text); 
    cmd.Parameters.AddWithValue("@product", GridView1.SelectedRow.Cells[2].Text); 
    cmd.Parameters.AddWithValue("@yes", "yes"); 

    rdr = cmd.ExecuteReader(); 
    while(rdr.Read()) 
    { 
     lblProductName.Text = rdr["quo_product"].ToString(); 
     lblAddress.Text = rdr["quo_Address"].ToString(); 
    } 
    con.Close(); 
} 
+0

我仍然得到'quo_verified = no'輸出。 –

+0

什麼是數據類型?這很可能是因爲你在C#中完成了你應該做的事情。例如,字符串或字符可以自動轉換爲數據庫中的int – Ian

+0

這是一個'varchar'。 –