2015-04-10 5 views
0

я получаю эту ошибку, когда я вызываю И SQL заявление:SQL ошибка оператор Неправильный синтаксис около ключевого слова «WHERE»

Неправильный синтаксис около ключевого слова «WHERE»

Что я делать не так?

public static dsCustomer RetrieveMultipleCustomers(int CustID = 0, string CustLast = null, string CustPhone = null, string CustEmail = null) 
{ 
    dsCustomer DS; 
    OleDbConnection connection = Connection(); 
    OleDbDataAdapter sqlDA; 
    bool blnSubSelect = false; 
    string strSubSelect = "Select * from Customer"; 
    if (CustID != 0) 
    { 
     strSubSelect = strSubSelect + " where CustID = " + CustID; 
     blnSubSelect = true; 
    } 
    else 
    { 
     if (CustLast != null) 
     { 
      strSubSelect = strSubSelect + " where CustLast ='" + CustLast + "'"; 
      blnSubSelect = true; 
     } 
     if (CustPhone !=null && CustEmail==null && CustLast==null) 
     { 
      strSubSelect = strSubSelect + " where CustPhone ='" + CustPhone + "'"; 
     } 

     if (CustEmail != null && CustPhone == null && CustLast ==null) 
     { 
      strSubSelect = strSubSelect + " where CustEmail = '" + CustEmail + "'"; 
     } 

     if (CustLast != null && CustPhone != null && CustEmail ==null) 
     { 
      strSubSelect = strSubSelect + " WHERE CustLast ='"+CustLast+"' AND CustPhone ='"+CustPhone+"'"; 
     } 
    } 
} 
+2

Вы продолжаете добавлять 'where' для каждого нового состояния, вместо' 'and' или or'. –

+0

@Shemal Shah: попробуйте добавить ** «Выбрать * от клиента, где» ** и удалить ** «где» ** из остальной части строки и сообщить, что такое CustLast, CustPhone и т. Д. Являются ли они объектом или просто переменной. – Prabhat

+0

@Suprabhat, а если два условия выполнены? как вы можете поставить «И» между двумя условиями? –

ответ

3

Вы можете использовать "AND", чтобы добавить эти SQL таким путем:

public static dsCustomer RetrieveMultipleCustomers(int CustID = 0, string CustLast = null, string CustPhone = null, string CustEmail = null) 
    { 
     dsCustomer DS; 
     OleDbConnection connection = Connection(); 
     OleDbDataAdapter sqlDA; 
     bool blnSubSelect = false; 
     string strSubSelect = "Select * from Customer where 1=1 "; 
     if (CustID != 0) 
     { 
      strSubSelect = strSubSelect + " AND CustID = " + CustID; 
      blnSubSelect = true; 
     } 
     else 
     { 
      if (CustLast != null) 
      { 
       strSubSelect = strSubSelect + " AND CustLast ='" + CustLast + "'"; 
       blnSubSelect = true; 
      } 
      if (CustPhone != null && CustEmail == null && CustLast == null) 
      { 
       strSubSelect = strSubSelect + " AND CustPhone ='" + CustPhone + "'"; 
      } 

      if (CustEmail != null && CustPhone == null && CustLast == null) 
      { 
       strSubSelect = strSubSelect + " AND CustEmail = '" + CustEmail + "'"; 
      } 

      if (CustLast != null && CustPhone != null && CustEmail == null) 
      { 
       strSubSelect = strSubSelect + " AND CustLast ='" + CustLast + "' AND CustPhone ='" + CustPhone + "'"; 
      } 

     } 
    } 
Смежные вопросы