2016-09-14 2 views
-1

Метод Cons.getpersonIdForRegisteredUser() возвращает строку.
Мой запрос состоит из двух частей: одна, чтобы проверить человека id, а другой data enabledКак сравнить конкретное поле со строкой в ​​SQLite

@Override 
public Loader<Cursor> onCreateLoader(final int i, final Bundle bundle) { 

    String sortOrder = ContactProviderContract.ContactDatabaseEntry.COLUMN_NAME_FIRST_NAME 
       + " COLLATE NOCASE ASC"; 

    String selection = ContactProviderContract. 
       ContactDatabaseEntry.COLUMN_NAME_PERSON_ID + " != " + Cons.getPersonIdForRegisteredUser(getActivity().getApplicationContext()) 
       + " AND " 
       + ContactProviderContract.ContactDatabaseEntry.COLUMN_NAME_DATA_ENABLED + " = ?"; 
    String[] selectionArgs = { "1" }; 

    return new CursorLoader(getActivity().getApplicationContext(), 
        ContactProviderContract.CONTACTS_URI, 
        ContactProviderContract.ContactDatabaseEntry.MIN_DETAILS_COLUMNS, 
        selection, 
        selectionArgs, 
        sortOrder); 
} 

Ошибка в том, что строка извлекается из метода Cons.getpersonid...() рассматривается как столбец, а не в виде строки для сравнения ,

+0

Вы не можете иметь '! =' Или 'AND' с выбором. Это должны быть аргументы 'WHERE'. –

+0

Какая строка кода вызывает ошибку? –

ответ

0

Если я правильно понял ошибку, тогда вы должны поместить это Cons.getPersonId... в selectionArgs.

String selection = ContactProviderContract. 
      ContactDatabaseEntry.COLUMN_NAME_PERSON_ID + " != ?" + 
      + " AND " 
      + ContactProviderContract.ContactDatabaseEntry.COLUMN_NAME_DATA_ENABLED + " = ?"; 
String[] selectionArgs = { "1" , Cons.getPersonIdForRegisteredUser(getActivity().getApplicationContext()) }; 
Смежные вопросы