- 浏览: 312942 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (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 2449如题,怎么做? 之前在一部And ... -
Android中使用XML
2012-10-11 17:03 0在 Android 应用程序中使用 Internet 数据: ... -
【转】Identifying and Non-Identifying Relationships
2012-10-11 09:58 1584这是一篇关于关系数据库中 Identifying ... -
关于MySQL Workbench
2012-10-10 12:19 0http://blog.longwin.com.tw/201 ... -
关于Android中ImageView的ScaleType
2012-09-12 12:28 3439对于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 3676在一个Android应用启动时,可以根据需要为其设 ... -
给Android手机设置的壁纸应该是多大尺寸
2012-07-30 18:15 7705如果在Android手机中设置一个新的壁纸,那么这 ... -
MySQL命令行工具mysql中对查询输出的一些控制方式
2012-07-12 10:49 3572MySQL提供一个 ... -
如何定时执行MySQL的语句
2012-07-09 12:34 892如何在可以定时执行一些MySQL语句呢? ... -
【转】一篇关于工具tcpdump使用的文章
2012-05-29 18:17 850因为测试需要,在Android手机中使用了工具tc ... -
apache的htttpget对url长度的限制
2012-05-29 11:45 0Get方法提交URL的最大长度限制 http://s ... -
升级Android ADT后,为何编译项目未能生成apk文件
2012-05-29 11:26 3068最近升级了Android SDK Tools,Pl ...
相关推荐
Android实现查询数据库,把数据库内容显示到屏幕
Android studio软件开发:基于SQLite数据库编写的学生管理系统源码,学生信息的增删改查和list view列表显示数据库内容,内附含sharepreference数据库编写的基础注册页面。
Android开发之数据库的分页查询
它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。 就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。 为什么要用 ...
android系统自带的数据库管理工具,方便查看数据库,新建和修改数据库表结构和数据等。android开发必备。
android系统常用数据库,拥有联系人、短信、多媒体、设置、启动、日历等系统常用数据库,可以下载来看看这些数据库的表接口,有助于android开发
android查询sqlite3 数据库信息
2.2系统环境开发条件 5 3 系统的需求分析与设计 5 3.1可行性分析 5 3.2需求分析 6 3.2.1系统总体概述 6 3.2.2功能性需求 6 3.2.3非功能性需求 7 3.2.4流程图设计 7 3.2.5系统ER图设计 9 3.3 数据库设计 10 3.3.1...
包含本地数据库的android手机号码归属地查询Demo。 用ViewPager+Fragment来实现的。 包含有封装类,用于读取android中assets目录中的数据库文件。
Android的移动选课系统 带客户端和数据库 亲测可用~~~~
android平台学生成绩查询系统的设计和实现。
android 课表信息查询系统数据库设计 详细讲解了客户端 服务器的设计过程
该资源创建了一个数据库表,并实现了对表行的增删改查功能。便于数据库的学习。
android 联系人数据库介绍 ppt 学习学习
基于android的无线点餐系统(含数据库),下载后可以直接运行,但须设置一下ip
android系统内置数据库字段描述,方便android开发者了解系统数据库结构,各自段的表示(属性),快速来、开发android应用。
这是基于android开发的学生信息管理系统,包括学生的增加、...除此之外,该系统应用到了手机内置的sqlite数据库来进行数据的存储,所以,是学生学习android的一次不错的选择,应用工具androidStudio,编写语言,java
Android连接后台mysql数据库,并将数据库中的数据展示在Android客户端
一个简单的公交查询系统,SQLite,android本地数据库
在数据库第一次生成的时候会调用这个方法,一般我们在这个方法里边生成数据库表。 • void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 当数据库需要升级的时候,Android系统会主动的调用这个...