Итак, я собираюсь сравнить две базы данных: одну, предназначенную только для чтения, и другую, которая будет обновляться, добавляя то, что есть только для чтения, и удаляя то, чего нет в базе только для чтения. По сути, синхронизация данных.
На данный момент у меня есть два курсора, содержащие данные (один из которых я преобразовал в arraylist), и по одному полю в каждом, которое используется для сравнения ключей. Вот образец. Я чувствую, что должен искать противоположное, например, в поиске только для чтения, а не в цикле только для чтения и поиске каждого элемента в массиве. Хотелось бы, чтобы была какая-то форма или курсор для сравнения, чтобы сделать это быстрее и надежнее. Есть идеи или предложения?
ArrayList<String> addImg = new ArrayList<String>();
ArrayList<String> delImg = new ArrayList<String>();
image_store = m_db.getAllImages();
// this returns an arraylist of strings(can also change to return a cursor)
local_images = img_db.getAllImages();
image_store.moveToFirst();
while(!image_store.isAfterLast()) {
key = image_store.getString(image_store.getColumnIndexOrThrow("name"));
// check if stored locally, if not add it to array.
if(Arrays.binarySearch(local_images, key) == -1) {
addImg.add( image_store.getString(image_store.getColumnIndexOrThrow("name")));
} else {
delImg.add(key);
}
image_store.moveToNext();
}
if( !addImg.isEmpty() ) {
// this will loop through and delete from a cursor generated on another query
addImages(addImg);
}
if( !delImg.isEmpty() ) {
// this will loop through and delete from a cursor generated on another query
delImages(addImg);
}