У меня проблема с SQLite на Android. Сейчас я извлекаю объект JSON с сервера, анализирую его и помещаю каждый подобъект в таблицу с такими вещами, как имя, Row_ID, уникальный идентификатор и т. Д., Используя этот код:
public void fillTable(Object[] detailedList){
for(int i=0;i<detailedList.length;++i){
Log.w("MyApp", "Creating Entry: " + Integer.toString(i));
String[] article = (String[]) detailedList[i];
createEntry(article[0], article[1], article[2], article[3], article[4], article[5]);
}
}
createEntry делает то, на что это похоже. Требуется 6 строк и для записи используется cv.put. Нет проблем.
Однако, когда я пытаюсь заказать их, через:
public String[] getAllTitles(int m){
Log.w("MyApp", "getTitle1");
String[] columns = new String[]{KEY_ROWID, KEY_URLID, KEY_URL, KEY_TITLE, KEY_TIME, KEY_TAGS, KEY_STATE};
Log.w("MyApp", "getTitle2");
Cursor c = ourDatabase.query(DATABASE_TABLENAME, columns, null, null, null, null, KEY_TIME);
Log.w("MyApp", "getTitle3");
String title[] = new String[m];
Log.w("MyApp", "getTitle4");
int i = 0;
int rowTitle = c.getColumnIndex(KEY_TITLE);
Log.w("MyApp", "getTitle5");
for(c.moveToFirst();i<m;c.moveToNext()){
title[i++] = c.getString(rowTitle);
Log.w("MyApp", "getTitle " + Integer.toString(i));
}
return title;
}
Каждая запись на самом деле имеет много дубликатов. Я предполагаю столько дубликатов, сколько раз синхронизировал. Есть ли способ вручную вызвать метод onUpgrade, который удаляет таблицу и создает новую, или лучший способ для удаления дубликатов?
Вторичный вопрос, есть ли способ заказать в обратном порядке? Сейчас я делаю заказ по времени, и самые старые добавленные записи - первые (наименьшее число). Есть ли обратное этому?