首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >内容提供程序中的SQLite“数据库模式已更改”错误

内容提供程序中的SQLite“数据库模式已更改”错误
EN

Stack Overflow用户
提问于 2011-06-03 11:06:28
回答 1查看 8.5K关注 0票数 1

我使用Content ProvidersSync Adapters作为同步例程。

我的例程接收一个JSONObject并插入或更新条目。

为了决定我们是要更新还是插入,我们需要检查数据库中是否存在条目。这是sqlite错误发生的地方。

代码语言:javascript
复制
06-03 10:58:21.239: INFO/Database(340): sqlite returned: error code = 17, msg = prepared statement aborts at 45: [SELECT * FROM table WHERE (id = ?) ORDER BY id]

我做了一些研究,发现了关于这个问题的讨论。从这次讨论中,我了解到必须调用sqlite_exec()。我将如何在内容提供者中实现这一点?

编辑

插入/更新检查

代码语言:javascript
复制
// Update or Insert
ContentValues cv = new ContentValues();
/* put info from json into cv */
if(mContentResolver.update(ClientsProvider.CONTENT_URI, cv, null, null) == 0) {
    // add remote id of entry
    cv.put("rid", o.optInt("id"));
    mContentResolver.insert(ClientsProvider.CONTENT_URI, cv);
}

内容提供::更新

代码语言:javascript
复制
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
    int count = 0;
    switch(uriMatcher.match(uri)) {
    case CLIENTS:
        count = clientDB.update(TABLE_NAME, values, selection, selectionArgs);
        break;
    case CLIENT_ID:
        count = clientDB.update(TABLE_NAME, values, ID + " = " + uri.getPathSegments().get(0) + (!TextUtils.isEmpty(selection) ? " AND (" + selection + ')' : ""), selectionArgs);
        break;
    default:
        count = 0;
    }
    return count;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-03 14:29:20

问题解决了。我不知道为什么,但是在仿真器图像擦除之后,所有的东西都会正常工作。谢谢你抽出时间塞尔文!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6226299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档