contact-Android:使用ContentResolver,CONTACT_ID 是列还是行?

问题描述

Android:使用ContentResolver,CONTACT_ID 是列还是行?

我用以下代码实现在屏幕上打印contactIdtelephone number
我在网上找了这段代码,有些语句还是不明白:

ContentResolver solver = getContentResolver();
            String mess="";

            Cursor cursor = solver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
            while (cursor.moveToNext()){
                String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
                mess = mess + "ID: "+contactId+"n";

                Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, null, null);
                while (phones.moveToNext()) {
                     String phoneNumber = phones.getString(phones.getColumnIndex( ContactsContract.CommonDataKinds.Phone.NUMBER));
                     mess = mess + phoneNumber + "n";
                  }
            }

这个语句我不知道什么意思:

Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, null, null);

就像Android 开发中第三个参数:

selection : A filter declaring which rows to return, formatted as an SQL WHERE clause (excluding the WHERE itself). Passing null will return all rows for the given URI.

所以,按照上面的定义,CONTACT_ID意思是一个行。因为filter which row to return
下面这一行:

String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));

CONTACT_ID看上去意思是一个列。
对这个问题我很疑惑,谁可以帮我指点一二呢?谢谢!

解决方案

CONTACT_ID是列而不是行,它是表中的一个字段,是一个属性,它当然是列。你看它是不是指向的是"contact_id"这字符串?这个字符串就是表中的字段名。“filter which row to return”虽然我不懂这鸟语,但我想意思应该和“满足条件的行将被返回”差不多,所以它并不表示行。第三个参数是SQL中“where”部分的字符串。也就是说

Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, null, null)

的意思是表中满足CONTACT_ID列中值等于contactId的行都被返回。

解决方案二:

CONTACT_ID是一个列,应该是指contact表的主键Id,selection理解成查询条件就好了,
就像select * from 表名 where 条件 中 “where”后面的字符串。如果写成null,就相当于 select * from 表名,没有任何过滤条件。

时间: 2024-08-03 17:18:00

contact-Android:使用ContentResolver,CONTACT_ID 是列还是行?的相关文章

android recyclerview一行显示一列,下一行显示三列 ,求大神指导这个怎么写???

问题描述 android recyclerview一行显示一列,下一行显示三列 ,求大神指导这个怎么写??? 如题~~~~想了很久 ,没有思路,求大神指导~~~~~~~~!! 解决方案 这个是布局问题,做个判断就可以了

合并-android gridview怎么实现跨列或跨行呢

问题描述 android gridview怎么实现跨列或跨行呢 样子就想合并单元格的样子,哪位大神指点一下呢,最好发下代码,谢谢 解决方案 http://stackoverflow.com/questions/18944984/gridview-with-colspan-and-rowspan-android?s=1|5.0948 解决方案二: 那你可以使用TableLayout,表格布局

Android使用ContentResolver搜索手机通讯录的方法_Android

本文实例讲述了Android使用ContentResolver搜索手机通讯录的方法.分享给大家供大家参考,具体如下: 在这个程序中使用ContentResolver来访问通讯录里联系人的关键字,并将所有找到的联系人存入CursorAdapter里.输入搜索人员名字a ,会将所有以a开头的名字都显示出来,输入*,则所有通讯录中的人名显示于AutoCompleteView的AdapterView里,若发生了User选择事件后,会将勾选的联系人电话号码显示于TextView里. 此程序中用到了Cont

如何将Excel中列或行展开和缩放

  Excel中列或行展开和缩放方法: 对Excel中列和行的展开和缩放方法一样 方法一: 1.选中需要缩放的行或列,点击[数据]----[创建组] 2.点击[]能缩放excel表中的列或行 3.点击[]能展开excel表中的列或行 4.Excel中列或行展开和缩放结果图 方法二: 选中需要缩放的行或列,使用快捷键方式shift+alt+向右键.

android平台使用valgrind分析内存,行号不正确

问题描述 android平台使用valgrind分析内存,行号不正确 android 4.4.4,使用源码里自带的valgrind进行分析,自己写了个数组越界的demo.然后使用valgrind分析,结果发现定位的行号有问题.请教一下如何才能得到正确的行号.分析结果如下. `==2687== Memcheck, a memory error detector ==2687== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et

怎么将Reapter显示的新闻分为两列 3行两列的形式

问题描述 怎么将Reapter显示的新闻分为两列3行两列的形式如:从数据库当中查询出6条记录,在Reapter控件中显示原先的:新闻1新闻2新闻3新闻4新闻5新闻6后来的:新闻1新闻2新闻3新闻4新闻5新闻6在线等!!!高手帮帮忙!!! 解决方案 解决方案二:在模板里面自己先<table><tr><td></td></tr></table>完成就可以了解决方案三:你写好布局,布局一个横排的样式.然后去reapter里面循环就可以啊解决

SQl列转置行的问题,请求大神帮忙!!!

问题描述 SQl列转置行的问题,请求大神帮忙!!! 上图中为SQL sever 2005中数据,想把上图列的内容转置为下图中的行,T1,T2....T6为连续的点,数据有上千条,请问大神们怎么解决 解决方案 http://www.cnblogs.com/luofuxian/archive/2012/02/23/2364328.html

SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段值)

原文:SQL Server 动态行转列(参数化表名.分组列.行转列字段.字段值) 一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段: 方法二:使用拼接SQL,动态列字段: 方法三:使用PIVOT关系运算符,静态列字段: 方法四:使用PIVOT关系运算符,动态列字段: 扩展阅读一:参数化表名.分组列.行转列字段.字段值: 扩展阅读二:在前面的基础上加入条件过滤: 参考文献(R

sql列行转换-求助:sql 列变行,列对多列的问题

问题描述 求助:sql 列变行,列对多列的问题 现在数据结构 如下图 要变成 求大神 方法! 网上看到的方法: declare @sql varchar(8000) set @sql = 'select 名称 ,规格' select @sql = @sql + ', max(case 供应商 when ''' + 供应商 + ''' then 重量 else 0 end) [' + 供应商 + ']' from (select distinct 供应商 from #tb) as a set @s