gpt4 book ai didi

java - 无法在 android 的数据库中运行更新查询?

转载 作者:太空狗 更新时间:2023-10-29 14:29:19 25 4
gpt4 key购买 nike

我正在尝试更新联系人表的加星号字段,或者换句话说,我正在尝试将名称添加到我的应用程序中的 Collection 夹列表中。我搜索了很多但找不到任何特定于我的案例的内容。更新查询只是没有进行任何更改,甚至没有抛出异常,堆栈跟踪中没有任何东西。

//appname used in the code is the name which I need to add to the starred list.. 
ContentResolver cr = getContentResolver();

Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);

ContentValues value=new ContentValues();
value.put("ContactsContract.Contacts.STARRED",1);

cur.moveToFirst();
while(!cur.isLast()){

String fetchname=cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

if((appname.equalsIgnoreCase(fetchname))==true)
{
String starredvalue=cur.getString(cur.getColumnIndex(ContactsContract.Contacts.STARRED));
try
{
cr.update(ContactsContract.Contacts.CONTENT_URI,value,"starred=?",new String[]{starredvalue});
}
catch(Exception e)
{
e.printStackTrace();
}
}//if
cur.moveToNext();
}//while

最佳答案

来自fine manual :

public int update (String table, ContentValues values, String whereClause, String[] whereArgs)

whereClause the optional WHERE clause to apply when updating. Passing null will update all rows.

您的whereClause 如下所示:

"starred='true'"

请注意,您在该 SQL fragment 中没有任何占位符(即 col = ? 之类的东西)?但是您在 whereArgs 参数中为不存在的占位符提供了参数:

new String[]{starredvalue}

所以 update 调用正在寻找第一个占位符,而不是在 whereClause 中找到它,然后你得到一个“索引超出范围”异常。

我确定您正在尝试做什么,但也许您希望您的 whereClause"starred =?"(而不是 "starred= 'true'") 或 null whereArgs

关于java - 无法在 android 的数据库中运行更新查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8307076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com