我正在尝试更新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
答案 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的所有概念。