- 浏览: 318083 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (107)
- Linux (16)
- Android (20)
- Network Pay (0)
- UI (8)
- Program Language (13)
- Java (8)
- Web Design (3)
- Database (5)
- SQLite (2)
- Vi/Vim (4)
- CSS (2)
- Network (3)
- PHP (20)
- Web Service (3)
- Troubleshooting (37)
- MySQL (3)
- System Management (3)
- Tools (27)
- Others (7)
- Eclipse (3)
- Framework (5)
- Python (1)
- JavaScript (1)
- Git (1)
- SCM (1)
- Video (0)
- Testing (0)
- Windows (1)
- http://service.oray.com/question/116.html (1)
- Python Troubleshooting (1)
最新评论
-
xwv:
能对你有启发和帮助就好
为什么Android的Adapter中,bindview被调用了多次 -
lipei.98:
哈哈 谢谢你的博客,解决了我一个头痛的问题。
为什么Android的Adapter中,bindview被调用了多次
实践来源于下面的想法:
在调用
getContentResolver().query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
时,是否可以在系统构造的查询语句中,为等待查询的表使用一个别名。
通过Google查找后,发现下面两个web:
其中提供的方法是:在方法query的参数projection中,使用注释符,将系统拼凑的内容注释掉;而自己的语句全都放在了参数
projection中。下面是一段来自1)的例子:
select * from sms as a join threads as b where a._id = 1 order by a.date desc– from sms where () order by date desc
相应的query方法为 getContentResolver().query( Uri.parse("content://sms/") , new
String[]{"* from sms as a join threads as b where a._id = 1 order by
a.date desc--"}, null, null, null)
按照这个思路,首先测试了提供的例子,成功后在系统联系人数据库查询中使用此方法实现之前的想法,但是产生错误。日志信息类似下面:
Caused by: java.lang.IllegalArgumentException: Invalid column ......
原因在哪里?
下面这个web中,作者为‘DMH‘的回答,可以解释这个错误的原因。
IllegalArgumentException: Invalid column
回头查看logcat日志输出,依次查看了Android的源码:
com.android.providers.contacts.ContactsProvider2
android.database.sqlite.SQLiteQueryBuilder
之后明白了其中的原因。
在com.android.providers.contacts.ContactsProvider2中构建查询时,使用下面的代码:
qb.setStrictProjectionMap(true);
而在android.database.sqlite.SQLiteQueryBuilder的方法computeProjection中,有如下代码:
for (int i = 0; i < length; i++) {
String userColumn = projectionIn[i];
String column = mProjectionMap.get(userColumn);
if (column != null) {
projection[i] = column;
continue;
}
if (!mStrictProjectionMap &&
( userColumn.contains(" AS ") || userColumn.contains(" as "))) {
/* A column alias already exist */
projection[i] = userColumn;
continue;
}
throw new IllegalArgumentException("Invalid column "
+ projectionIn[i]);
}
变量mStrictProjectionMap的值是由第一段代码设置为了true,因而在构建查询语句时,想将待查的表名做个别名的机会也没有了。
发表评论
-
在PHP中获取MySQL数据库表信息,生成HTML格式数据字典
2015-03-30 14:48 0在实际中见到他人项目中生成的HTML格式数据字 ... -
MySQL中对子查询如何进行分析优化
2013-09-16 17:10 0在实际操作中,需要对MySQL的一个子查询进行 ... -
关于MySQL数据库中的锁
2013-06-24 10:26 0下面是Google的几篇关于MySQL数据库的锁 ... -
MySQL的命令行客户端中如何显示查询结果
2013-04-02 17:00 0问题如题. 通过Google,找到 ... -
如何查看Mysql服务中正在执行的语句
2013-04-02 16:55 0来自实际需求提出问题. 有两个思路 ... -
安装Coreseek 3.2.14(Sphinx 0.9.9)
2013-03-28 16:51 0之前曾安装过Coreseek 3.2.14,但因 ... -
在Android项目中使用库项目的一些参考资料
2013-02-17 14:23 01.使用库项目实现Android程序代码的复用 2.An ... -
在Samsung Galaxy S3 GT-I9300获取root权限
2012-10-26 18:23 2511如题,怎么做? 之前在一部And ... -
Android中使用XML
2012-10-11 17:03 0在 Android 应用程序中使用 Internet 数据: ... -
【转】Identifying and Non-Identifying Relationships
2012-10-11 09:58 1656这是一篇关于关系数据库中 Identifying ... -
关于MySQL Workbench
2012-10-10 12:19 0http://blog.longwin.com.tw/201 ... -
关于Android中ImageView的ScaleType
2012-09-12 12:28 3490对于Android的widget: ImageVi ... -
Mysql中的inner join,left join和right join
2012-09-06 10:41 0对于Mysql中的inner join,left ... -
Android应用中实现一个软件启动的欢迎界面
2012-07-31 21:03 3727在一个Android应用启动时,可以根据需要为其设 ... -
给Android手机设置的壁纸应该是多大尺寸
2012-07-30 18:15 7747如果在Android手机中设置一个新的壁纸,那么这 ... -
MySQL命令行工具mysql中对查询输出的一些控制方式
2012-07-12 10:49 3616MySQL提供一个 ... -
如何定时执行MySQL的语句
2012-07-09 12:34 930如何在可以定时执行一些MySQL语句呢? ... -
【转】一篇关于工具tcpdump使用的文章
2012-05-29 18:17 895因为测试需要,在Android手机中使用了工具tc ... -
apache的htttpget对url长度的限制
2012-05-29 11:45 0Get方法提交URL的最大长度限制 http://s ... -
升级Android ADT后,为何编译项目未能生成apk文件
2012-05-29 11:26 3124最近升级了Android SDK Tools,Pl ...
相关推荐
在Android系统中,每个应用程序都有自己的SQLite数据库,可以自由创建表、插入数据、更新记录、删除数据以及查询信息。 要创建一个基于SQLite的通讯录应用,我们需要做以下步骤: 1. **创建SQLite数据库**:在...
- **ContactProvider**:联系人信息的提供者,对接SQLite数据库,实现了ContentProvider接口,使得其他应用可以通过ContentResolver查询或修改联系人信息。 - **DialtactsActivity**:主界面,展示了联系人列表,...
在【总体设计方案】中,系统模块被合理划分,包括用户管理、联系人管理、通讯功能、查找功能、备份等功能。设计遵循标准开发流程,确保程序质量和可用性。系统运行流程图清晰地展示了用户如何操作通讯录,包括添加、...
最后,同步联系人数据库到服务器是这款通讯录应用的一大亮点。它允许用户将本地的联系人数据安全地备份到云端,确保即使设备丢失或更换,也能快速恢复重要的联系人信息。压缩包中的"TestSocket2"文件很可能就是实现...
Android 6.0及以上版本引入了运行时权限管理,应用需要在运行时请求用户的权限,例如访问联系人、存储、相机等。 10. **性能优化** 对于任何应用来说,性能优化都是关键。通过内存管理、UI优化、后台服务优化等...
4. **权限管理**:Android 6.0(API级别23)引入了运行时权限,应用在运行时需要请求敏感权限,如访问联系人或位置信息。 5. **通知系统**:Android的通知系统允许应用在状态栏展示消息,即使应用不在前台运行也能...
Android系统的核心应用程序包括邮件客户端、短信程序、日历、地图、浏览器和联系人管理器。系统通过以下组件支持应用程序的开发和交互: 1. 可扩展的视图系统:提供各种界面元素,如列表、网格和文本框。 2. 内容...
在Android系统中,文件管理是应用开发中不可或缺的一部分。源码分析可以帮助我们深入理解文件操作的内部机制,提高开发效率并解决可能出现的问题。本篇将围绕"android 文件管理 源码"这一主题,详细探讨Android文件...
在每章的讲解中,它会让你通过一系列示例项目逐步掌握Android中的各种新功能和技术,助你取得最圆满的学习效果。本书所介绍的各个应用实例简明扼要且极具实用价值,它们覆盖了Android 1.0的所有基本功能和高级功能...
【描述】"android 2.3 phone apk 源码" 提供的是 Gingerbread(2.3)版本的电话应用源代码,这是一个关键的系统应用,负责处理拨打电话、接收来电、显示联系人等基本通讯功能。源码的分析有助于开发者学习如何在早期...
- Android是一个开源且自由的移动操作系统,由操作系统、中间件、用户界面以及应用程序组成。其核心基于Linux内核,支持Dalvik虚拟机运行Java语言编写的程序。 - Google与开放手机联盟(OHA)合作开发Android,该...
Android有严格的权限模型,开发者需要在应用的清单文件中声明所需的权限,如访问联系人、发送短信等。用户在安装应用时会看到这些权限请求。 八、Android硬件接口 Android提供了一系列API,让开发者能够访问设备的...
作者详细介绍了Android作为操作系统的基础特性,以及其在移动应用开发中的重要地位。此系统旨在提供通讯录管理、记事管理、日程管理和城市天气预报等功能,以满足用户日常个人信息管理的需求。 **1. 技术背景与意义...
在IT行业中,Android平台上的QQ应用程序是一个非常典型且用户基数庞大的社交应用。为了学习和理解Android应用开发,许多开发者会尝试仿制这样的热门应用,以此来掌握核心功能的实现。"个人仿制android QQ app"项目...
1. **应用程序层**:包含了预装在设备上的各种应用软件,如联系人、日历等。 2. **应用程序框架层**:提供了一系列服务和API接口,用于构建应用程序。 3. **库层**:包含了一系列核心库,如SQLite数据库、SSL安全...
在移动操作系统领域,Android以其开源、自由的特点占据了举足轻重的地位。开发者们通过学习和理解Android应用源码,可以提升自己的编程技能,理解系统运行机制,以及优化应用性能。本篇文章将深入探讨名为EyeRoom的...
在Android应用开发中,Fragment是Android SDK提供的一种组件,它允许开发者在单个活动中展示多个视图或界面。"Fragment仿QQ"项目旨在模仿QQ应用的界面设计和交互,利用Fragment来实现各种功能模块的划分,提高用户...
- **存储**:Android提供了多种存储数据的方式,如文件系统、SQLite数据库等。 - **网络**:支持HTTP/HTTPS等网络协议,可以实现与服务器的通信。 - **多媒体**:支持音频、视频、图像等媒体格式,可以实现多媒体...