如何在android中使用更新查询?

时间:2011-11-25 14:54:53

标签: android sqlite

我正在尝试更新android中的callog.calls表的cached_name列,但是获取sql lite异常。我已经尝试了很长时间但是无法想出任何东西。我已经搜索了很多但是找不到有关update statement.kindly help的足够信息。

ContentResolver cr = getContentResolver(); 

            Cursor cur = cr.query(CallLog.Calls.CONTENT_URI,
                null, null, null, null);
ContentValues value=new ContentValues();
value.put("CallLog.Calls.CACHED_NAME","frank");
  cr.update(CallLog.Calls.CONTENT_URI,value,CallLog.Calls.CACHED_NAME, null);

Error:

11-25 20:11:17.755: ERROR/Database(106): Error updating CallLog.Calls.CACHED_NAME=frank using UPDATE calls SET CallLog.Calls.CACHED_NAME=? WHERE name

11-25 20:11:17.776: ERROR/DatabaseUtils(106): Writing exception to parcel

11-25 20:11:17.776: ERROR/DatabaseUtils(106): android.database.sqlite.SQLiteException: near ".": syntax error: , while compiling: UPDATE calls SET CallLog.Calls.CACHED_NAME=? WHERE name

2 个答案:

答案 0 :(得分:0)

您更新调用的语法错误。它需要看起来像这样:

cr.update(CallLog.Calls.CONTENT_URI,value,null, null);

将更新表中的所有值。要更新特定行,请执行以下操作:

cr.update(CallLog.Calls.CONTENT_URI,value,CallLog.Calls.CACHED_NAME +" = ?", new String[]{oldName});

其中oldName是WHERE子句中使用的值。

答案 1 :(得分:0)

我建议您浏览这些链接,以便更好地理解在Android中使用Sqlite的所有概念。

http://www.vogella.de/articles/AndroidSQLite/article.html

http://www.devx.com/wireless/Article/40842/1954