2012-02-26 4 views
1
Cursor mCursor = mDb.query(true, CUSTOMER_TABLE_NAME, 
     new String[] {GENERIC_ID_KEY, ADDRESS_KEY, PHONE_KEY, EMAIL_KEY,CUSTOMER_NAME_KEY}, 
     GENERIC_ID_KEY + "=" + customerDbId, null, 
     null, null, null, null); 

Как изменить эту команду, если GENERIC_ID_KEY и customerDbId - строка. Я пробовал использовать, как в ч/б, но все же отрицательные результаты, n ошибка.Использование оператора select в sqlite

+0

какое сообщение об ошибке вызывается? – ariefbayu

ответ

1

если customerDbId строкового типа, то поместите его между цитатой

в

GENERIC_ID_KEY + "= '" + customerDbId + "'" 
+1

Это очень опасно. Почему бы не использовать sql-escaping по умолчанию для android: 'GENERIC_ID_KEY +" =? ", Новый String {customerDbId}, ..' –

+0

что вы хотите сказать @BorisStrandjev buddy –

+1

Если вы добавите строковое значение, как вы предлагаете вам риск SQLInjection. Правильный способ сделать запрос: 'Cursor mCursor = mDb.query (true, CUSTOMER_TABLE_NAME, новый String [] {GENERIC_ID_KEY, ADDRESS_KEY, PHONE_KEY, MAIL_KEY, CUSTOMER_NAME_KEY}, GENERIC_ID_KEY +" =? ", Новый String [] {customerDbId }, null, null, null, null); 'Использование параметров where args безопаснее. –

0

Это проблема курсор. Убедитесь, что курсор - это первое состояние перед выбором.

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