Android sqlite.SQLiteException:没有这样的列:data1(sqlite代码1):
我在互联网上搜索了这个问题,但没有得到任何有效的回复。 我相信这是从选择,但我不知道有什么问题 我得到这个错误:Android sqlite.SQLiteException:没有这样的列:data1(sqlite代码1):,android,sql,sqlite,Android,Sql,Sqlite,我在互联网上搜索了这个问题,但没有得到任何有效的回复。 我相信这是从选择,但我不知道有什么问题 我得到这个错误: android.database.sqlite.SQLiteException:没有这样的列:data1(sqlite代码1):,编译时:选择sort\u key,photo\u uri… 执行此代码检索电话联系人后: Uri uri = ContactsContract.Contacts.CONTENT_URI; String no07 = "%07"; S
android.database.sqlite.SQLiteException:没有这样的列:data1(sqlite代码1):,编译时:选择sort\u key,photo\u uri…
执行此代码检索电话联系人后:
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String no07 = "%07";
String no407 = "%+407";
String selection = "((" + ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY + " NOTNULL) AND ("
+ ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1) AND ("
+ ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY + " != '' ) AND (("
+ ContactsContract.CommonDataKinds.Phone.NUMBER + " LIKE '" + no07 + "' ) OR ("
+ ContactsContract.CommonDataKinds.Phone.NUMBER + " LIKE '" + no407 + "' )))";
Cursor phones = getActivity()
.getContentResolver()
.query(uri, null, selection, null, null);
如果有任何帮助,我将不胜感激。根据您的错误,您正在查询的URI中没有这样的列
data1
。您的选择中包含的联系人contract.commonDataTypes.Phone.NUMBER
列应该是导致异常的原因。
您可能希望查询与ContactsContract不同的表,该表为ContactsContract.Data
,如中所述
ContactsContract.Data表中的一行可以存储任何类型的个人数据,例如电话号码或电子邮件地址
更改查询URI。
您使用的URI不用于搜索/筛选联系人,并且无权访问这些列:
Uri uri = ContactsContract.Contacts.CONTENT_URI;
您需要使用一个URI,该URI可以访问您试图筛选的列,如下所示:
Uri uri = ContactsContract.Data.CONTENT_URI;
有一个关于使用什么URI以及何时使用URI的详细分类:
>P>如果您需要读取单独的联系人,请考虑使用CordeToLoopUpURI代替Cordunthuri。
- 如果需要通过电话号码查找联系人,请使用PhoneLookup.CONTENT\u FILTER\u URI,该URI为此目的进行了优化
- 如果您需要按部分名称查找联系人,例如在键入建议时生成筛选器,请使用内容筛选器URI
- 如果您需要通过电子邮件地址、昵称等数据元素查找联系人,请使用ContactsContract.data表中的查询。结果将包含联系人ID、姓名等
尝试调试/记录整个select语句。我猜您正在进行的列选择在被查询的表中不存在。我只是在添加了LIKE行之后才遇到这个问题如果您真的需要LIKE行,那就可以了。但是如果您将整个select语句记录下来,这将非常有帮助。然后,您可以在DB服务器上手动运行select语句,然后您将看到错误所在。编辑您的问题并发布select语句日志。恐怕我真的不知道如何在DB上手动记录和运行select语句将帮助您进行调试。