2016-05-12 39 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'。 –