android.database.sqlite.SQLiteException:靠近“*”:语法错误:,编译时:SELECT调用._id

Posted

技术标签:

【中文标题】android.database.sqlite.SQLiteException:靠近“*”:语法错误:,编译时:SELECT调用._id【英文标题】:android.database.sqlite.SQLiteException: near "*": syntax error: , while compiling: SELECT calls._id 【发布时间】:2011-12-07 14:56:24 【问题描述】:

我想从手机查询通话记录详情,我的查询如下

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/Database(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, number, name, date, duration, new, type FROM 调用 WHERE (number = *674088888) ORDER BY date 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:调试/AndroidRuntime(27470):关闭 VM 10-14 14:54:50.429: WARN/dalvikvm(27470): threadid=1: 线程以未捕获的异常退出 (group=0x40015560) 10-14 14:54:50.433:错误/AndroidRuntime(27470):致命异常:主要 10-14 14:54:50.433: ERROR/AndroidRuntime(27470): android.database.sqlite.SQLiteException: near "*": 语法错误: , 编译时: SELECT _id, number, name, date, duration, new, type FROM 调用 WHERE (number = *674088888) ORDER BY date 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】:

尝试像这样使用它:

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

【讨论】:

感谢您的快速响应,它的工作正常。谢谢你 Hiral :) 很高兴知道这个。顺便说一句,如果它对你有用,你应该接受这个答案。

以上是关于android.database.sqlite.SQLiteException:靠近“*”:语法错误:,编译时:SELECT调用._id的主要内容,如果未能解决你的问题,请参考以下文章