在Android中操作數據庫時不時的就會出現錯誤,而且有時候耗費半天才找到真正的原因,在此記錄下自己的心得。
1、Bad request for field slot 0,-1. numRows = 2, numColumns = 14
java.lang.IllegalStateException: get field slot from row 0 col -1 failed
(1.)原因是你在數據庫中添加的字段名和在查詢的時候用的字段名不一樣(就是單詞寫錯了,包括大小寫、空格的)。這種錯誤很容易找到。
(2.)在傳遞Cursor對象前,我的cursor 的查詢條件有問題,寫少了某列,接着就出現了以上所示的問題,查詢條件改成這樣就沒事了。
private static final String[] UNDERLYING_COLUMNS = new String[] {
Downloads.Impl._ID,
Downloads.Impl._DATA + " AS " + COLUMN_LOCAL_FILENAME,
Downloads.COLUMN_TITLE,
Downloads.COLUMN_DESCRIPTION,
Downloads.COLUMN_URI,
Downloads.COLUMN_MIME_TYPE,
Downloads.Impl._DATA
};
public Cursor query(Query query) { Cursor underlyingCursor = query.runQuery(mResolver, UNDERLYING_COLUMNS, mBaseUri); if (underlyingCursor == null) { return null; } return new CursorTranslator(underlyingCursor, mBaseUri); }主要是在查詢的時候再上面的 字段集合中(UNDERLYING_COLUMNS)你寫少了要查詢的字段,例如:
如果你沒有在UNDERLYING_COLUMNS寫上 Downloads.Impl._DATA 字段,那麼你在後面的操作中用到這個字段,則就會出現這樣的錯。
我就遇到了這樣的錯誤,結果整了2個小時才找到原因,哎。。。時間如此貴!!!!!
2、