2014-01-14 122 views
-1

我用下面的代码在我SQListe数据库更新项目:SQLite的错误:索引超出范围

ContentValues values = new ContentValues(); 
    values.put(FIELD_NAME, place.getName()); 
    values.put(FIELD_LAST_SAVE_TIMESTAMP, System.currentTimeMillis()/1000L); 

    int affected_rows = db.update(TABLE_PLACES, values, FIELD_ID + " = '?'", 
      new String[] { place.getId() }); 

我收到以下错误:

01-14 14:50:52.261: E/AndroidRuntime(26535): FATAL EXCEPTION: main 
01-14 14:50:52.261: E/AndroidRuntime(26535): 
android.database.sqlite.SQLiteBindOrColumnIndexOutOfRangeException: bind or column index out of range: handle 0x27984c8 

你有什么理念?

顺便说一句,这很难调试,因为我不能得到最终的SQL语句显示。有没有办法启用详细日志记录?

+0

我真的不知道为什么这样一个正常的问题得到一个downvote。你为什么不发表评论呢? – ercan

回答

2

?不得引用。删除'',以便它不被视为文字'?',而是作为文字的占位符。

例外说明?和绑定参数的数量不匹配。

+0

恩,谢谢!但是从place.getId()返回的ID是字母数字。我应该把它放进引号中。我需要加倍报价吗?我的意思是''''''而不是'?' – ercan

+0

使用'?'时无需引用自己。 – laalto

+0

噢,好的。所以引用由update()函数本身处理。我明白。谢谢! – ercan

-1

也许值(System.currentTimeMillis的()/ 1000L)超过FIELD_LAST_SAVE_TIMESTAMP最大值