Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
justjew
0 / 0 / 3
Регистрация: 27.10.2015
Сообщений: 51
#1

Как сравнить две разных БД - Программирование Android

14.10.2016, 11:04. Просмотров 411. Ответов 8
Метки нет (Все метки)

Доброго времени суток, товарищи программеры.
Помогите разрешить мою проблему.
Разрабатываю приложение под Android, у него есть sqlite база. Также есть сервер на удаленной машине, написаный на Java. На этой машине MySQL база.
Необходимо чтобы андройд-приложение получало от сервера данные с mysql-базы и записывало эти данные в свою sqlite-базу.
Вопрос в следущем - можно ли как-то сравнить состояние этих двух баз, чтобы, если данные в sqlite актуальны, сервер ничего не возвращал приложению, а если в mysql-базе есть еще какие-то данные, то отправлял приложению эти новые данные, чтобы оно их у себя обновило?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2016, 11:04
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как сравнить две разных БД (Программирование Android):

Как сравнить две даты
Есть две переменные допустим A и B. В A записан день, а в B записан месяц. К...

Как сравнить две даты
Как сравнить две даты чтоб между ними было 25 дней? Формат даты такой d.m.Y

Как сравнить две строки?
Чтобы не дублировать строки в ListIconGadget() как их сравнить? писать...

Как сравнить две даты?
А ніхто не догадався просто порівняти ці дати? A, B : TDateTime; if...

Как сравнить две строки
Разработать метод, который в качестве исходных данных получает 2 строки...

Как сравнить две строки?
System.Security.Cryptography.MD5CryptoServiceProvider md5 = new...

8
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
14.10.2016, 11:33 #2
justjew, привет!
По каждой таблице можно, например, хранить или поиском получать id последней записи, сравнивать и отправлять новые данные.
0
justjew
0 / 0 / 3
Регистрация: 27.10.2015
Сообщений: 51
14.10.2016, 11:56  [ТС] #3
То есть, что-то вроде контрольной суммы обеих баз получить нельзя, а потом сравнить их?
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
14.10.2016, 13:23 #4
justjew, вы смеётесь, что ли? БД каждую секунду меняться могут, надоест получать.
0
Alexvp
111 / 75 / 8
Регистрация: 03.08.2014
Сообщений: 380
15.10.2016, 14:27 #5
Как вариант предложения CoolMind, можно использовать механизм контроля версий. Если на удаленном сервере была какая-либо транзакция, то где у себя на сервере меняйте условный номер. При запросе приложение сначала получат текущий условный номер и сравнивает со своим экземпляром. Если совпадает, то база не обновлялась. Если не совпадает, то скачиваете базу (или изменения в базе).
1
Pablito
2644 / 2126 / 725
Регистрация: 12.05.2014
Сообщений: 7,433
Завершенные тесты: 1
15.10.2016, 22:35 #6
транзакция прошла и в какое-то поле записали такую же строку с точностью до символа
условный номер поменялся - скачиваем зря базу

напишите уже кто-нибудь equals() для двух баз данных для ТСа
0
Alexvp
111 / 75 / 8
Регистрация: 03.08.2014
Сообщений: 380
16.10.2016, 08:31 #7
Паблито, да, порой будут такие "пустые" скачивания, но сравнение баз данных заведомо более тяжелая операция.
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
16.10.2016, 12:56 #8
Паблито, видел и такую ситуацию. По каждой таблице, например, с ценами, напротив каждой записи был ещё столбец с версией этой записи. Допустим, неделю назад была версия 100, вчера - 103, а сегодня - 104. Соответственно, эти данные тоже надо скачивать. Так вот, за эту неделю цена могла поменяться, допустим, так:
1050.00 -> 1065.00 -> 1050.00. Но юзер вынужден скачивать все изменения, хотя их как бы не произошло. В таблице прописывается, что её текущая версия - 100, а на сервере - 104, и все записи с версиями больше 100 отдаются в JSON.

Добавлено через 1 минуту
Т.е. можно написать более интеллектуальный скрипт на сервере, но я пока не видел хорошего варианта.
0
zoleg
26 / 26 / 5
Регистрация: 10.01.2012
Сообщений: 284
24.10.2016, 14:37 #9
Выгребаем те данные, при изменении которых требуется обновлять инфу на андроиде, подсчитываем контрольную сумму и складируем ее на сервере. При последнем обновлении БД с адроида отправляем с ней контрольную сумму.

При подключении андроида к серверу отправляем серваку сохраненную сумму. Если суммы равны сервер отбивает клиент. Если не равны, скидывает обновления и новую контрольную сумму.
0
24.10.2016, 14:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2016, 14:37
Привет! Вот еще темы с решениями:

Как сравнить две строки?
Написал программу но не проходит сравнение вот это сравнение: bool...

как сравнить две таблицы
мне надо сравнить две таблицы, да так, чтобы сведения которые отсутствуют в...

Как можно сравнить две БД
Как можно сравнить две БД Аксеса с множеством таблиц на предмет отличия...

Как сравнить две переменные?
#!/bin/sh a=$($SSH_CONNECTION | grep "1" | awk {'print $1'})...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru