android.database.sqlite.SQLiteException: возле "*": синтаксическая ошибка: при компиляции: SELECT Call._id - PullRequest
1 голос
/ 14 октября 2011

Я хочу запросить данные журнала звонков с телефона, мой запрос, как показано ниже

Cursor groupCur = mcontext.getContentResolver().query(Calls.CONTENT_URI,
CallLogAdapter.PROJECTION, Calls.NUMBER + " = " + number, null,Calls.DEFAULT_SORT_ORDER);

CallLogAdapter.PROJECTION содержит несколько полей (столбцов) журнала вызовов.

Работает нормально, но в следующих условиях даст силу закрыть.

Условие : - Если набираемый номер начинается с * или # (например: * 1234567 или # 123457), а номер заканчивается на * (например: 1234567 *)

**ERROR LOG:**

10-14 14: 54: 50.425: INFO / База данных (26307): возвращен sqlite: код ошибки = 1, msg = ошибка синтаксиса вблизи 10-14 14: 54: 50.429: ОШИБКА / DatabaseUtils (26307): запись исключения в посылку 10-14 14: 54: 50.429: ОШИБКА / DatabaseUtils (26307): android.database.sqlite.SQLiteException: возле "*": синтаксическая ошибка: при компиляции: SELECT _id, число, имя, дата, продолжительность, новый, тип ОТ звонков ГДЕ (номер = * 674088888) ЗАКАЗАТЬ ПО ДАТЕ DESC 10-14 14: 54: 50.429: ОШИБКА / DatabaseUtils (26307): в android.database.sqlite.SQLiteCompiledSql.native_compile (собственный метод) 10-14 14: 54: 50.429: ОШИБКА / DatabaseUtils (26307): в android.database.sqlite.SQLiteCompiledSql.compile (SQLiteCompiledSql.java:92) 10-14 14: 54: 50.429: ОШИБКА / DatabaseUtils (26307): в android.database.sqlite.SQLiteCompiledSql. (SQLiteCompiledSql.java:65) 10-14 14: 54: 50.429: ОШИБКА / DatabaseUtils (26307): в android.database.sqlite.SQLiteProgram. (SQLiteProgram.java:83) 10-14 14: 54: 50.429: ОШИБКА / DatabaseUtils (26307): в android.database.sqlite.SQLiteQuery. (SQLiteQuery.java:49) 10-14 14: 54: 50.429: ОШИБКА / DatabaseUtils (26307): в android.database.sqlite.SQLiteDirectCursorDriver.query (SQLiteDirectCursorDriver.java:42) 10-14 14: 54: 50.429: ОШИБКА / DatabaseUtils (26307): в android.database.sqlite.SQLiteDatabase.rawQueryWithFactory (SQLiteDatabase.java:1356) 10-14 14: 54: 50.429: ОШИБКА / DatabaseUtils (26307): в android.database.sqlite.SQLiteQueryBuilder.query (SQLiteQueryBuilder.java:330) 10-14 14: 54: 50.429: ОШИБКА / DatabaseUtils (26307): на com.android.providers.contacts.CallLogProvider.query (CallLogProvider.java:129) 10-14 14: 54: 50.429: ОШИБКА / DatabaseUtils (26307): на android.content.ContentProvider $ Transport.bulkQuery (ContentProvider.java:174) 10-14 14: 54: 50.429: ОШИБКА / DatabaseUtils (26307): на android.content.ContentProviderNative.onTransact (ContentProviderNative.java:111) 10-14 14: 54: 50.429: ОШИБКА / DatabaseUtils (26307): на android.os.Binder.execTransact (Binder.java:320) 10-14 14: 54: 50.429: ОШИБКА / DatabaseUtils (26307): в dalvik.system.NativeStart.run (собственный метод) 10-14 14: 54: 50.429: DEBUG / AndroidRuntime (27470): выключение виртуальной машины 10-14 14: 54: 50.429: WARN / dalvikvm (27470): threadid = 1: поток завершается с необработанным исключением (группа = 0x40015560) 10-14 14: 54: 50.433: ОШИБКА / AndroidRuntime (27470): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основное 10-14 14: 54: 50.433: ОШИБКА / AndroidRuntime (27470): android.database.sqlite.SQLiteException: возле "*": синтаксическая ошибка: при компиляции: SELECT _id, число, имя, дата, продолжительность, новый, тип ОТ звонков ГДЕ (номер = * 674088888) ЗАКАЗАТЬ ПО ДАТЕ DESC 10-14 14: 54: 50.433: ОШИБКА / AndroidRuntime (27470): в android.database.DatabaseUtils.readExceptionFromParcel (DatabaseUtils.java:158) 10-14 14: 54: 50.433: ОШИБКА / AndroidRuntime (27470): в android.database.DatabaseUtils.readExceptionFromParcel (DatabaseUtils.java:114) 10-14 14: 54: 50.433: ОШИБКА / AndroidRuntime (27470): на android.content.ContentProviderProxy.bulkQueryInternal (ContentProviderNative.java:330) 10-14 14: 54: 50.433: ОШИБКА / AndroidRuntime (27470): на android.content.ContentProviderProxy.query (ContentProviderNative.java:366) 10-14 14: 54: 50.433: ОШИБКА / AndroidRuntime (27470): на android.content.ContentResolver.query (ContentResolver.java:262)

Может ли кто-нибудь мне помочь.

1 Ответ

6 голосов
/ 14 октября 2011

Попробуйте использовать его как:

Cursor groupCur = mcontext.getContentResolver().query(Calls.CONTENT_URI,
CallLogAdapter.PROJECTION, Calls.NUMBER + " ='" + number+"'", null,Calls.DEFAULT_SORT_ORDER);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...