2013-11-11 5 views
0

Надеюсь, что вы хорошо себя чувствуете.Обновление базы данных на Android с использованием серверной части

Я разрабатываю приложение android, которое должно возвращать данные с серверной части с помощью JSON и хранить эти данные в SQL в android, а затем отображать эти данные с помощью Listview.

Мне нужно будет обновить данные, расположенные на стороне сервера, путем добавления или удаления некоторых строк.

Вопрос в том, как я могу вставить ТОЛЬКО новую строку, добавленную на серверной стороне, в SQL в android, чтобы она отображалась в Listview?

И как я могу удалить строку из SQL в android при ее удалении из базы данных на сервере, чтобы она не отображалась в Listview?

Спасибо заранее.

+0

так, что раньше? –

+0

Кажется, плохая идея дублировать данные сервера в локальной базе данных. Как вы узнаете, когда устареет? Во всяком случае, правильно ли я понимаю, что ваш вопрос: как работает этот SQL? – wvdz

+0

Если я не понял ваш вопрос неправильно, вы хотите выполнить двустороннюю синхронизацию между сервером и клиентом с помощью JSON? –

ответ

0

Создайте службу отдыха removeItem и additem. Теперь позвоните в службу, если это необходимо.

Вы можете использовать gcm, если хотите нажать изменения с сервера на клиент.

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

+0

Можете ли вы дать мне образец кода, чтобы я мог понять этот подход? Мне уже нужно использовать GCM для отправки уведомлений автоматически, когда сервер cnanges Я использовал GCM для отправки уведомлений Вручную с помощью PHP-кода, но я не могу использовать его автоматически. –

+0

жаль, что я не хочу, у меня есть для этого. –

+0

Хорошо, спасибо :) –

0

Есть несколько раз, когда мобильная база данных должна стремиться быть на 100% совместимой с базой данных на стороне сервера. Из-за характера мобильного устройства, вероятно, вы не можете оставаться на связи с вашим сервером все время.

Учитывая это, вручную используя настройку SQL для сохранения реплицированной базы данных (даже небольшого размера) на вашем устройстве, можно быстро стать кошмаром (с учетом тайм-аутов, латентности, блокировки, синхронизации и т. Д.).

Если вам действительно нужна реплицированная база данных, а не локальная база данных, которую вы обновляете по мере необходимости, вам следует исследовать технологии удаленной базы данных, которые способствуют продвижению eventual consistency. Существует несколько доступных API и даже больше сторонних технологий (таких как CouchBase), которые предлагать решения этой проблемы.

Попробуйте прочитать здесь: http://developer.android.com/training/cloudsync/index.html

и здесь: http://developer.android.com/training/sync-adapters/index.html

Заботясь о синхронизации SQL базы данных самостоятельно может быть более сложным, чем один вопрос может надеяться на ответ.

+0

Хорошо, но я хочу, чтобы приложение можно было использовать, даже если нет подключения к интернету, поэтому я использую локальный SQL, потому что изменений не будет сделано больше. Поэтому, когда есть подключение к Интернету, пользователь может щелкнуть по кнопке, чтобы получить обновленные данные с сервера, обновлением могут быть новые данные или удаленные данные из существующих данных, которые я имею на сервере. –

0

Обычно вы реализуете около DAO для связи с базой данных. Затем вы просто вызываете метод для получения записей.

Скажите, у вас есть автомобили. Создайте класс модели Car, тогда ваш адаптер ListView должен подождать List<Car> cars; Чтобы получить этот список, вы делаете что-то вроде CarDao.findAll(), которое возвращает список автомобилей.

В этом методе findAll() вы можете реализовать любую логику, о которой вы можете думать. Например, получите строки с веб-сервера, напишите их в локальную базу данных (при необходимости) и выберите * из нее. Или что угодно. Просто убедитесь, что вы всегда возвращаете обновленные данные (список автомобилей в нашем случае).

То же самое происходит с обновлением базы данных. Вызов CarDao.delete(id carId); должен сделать трюк.Удалите строку из db sqlite, затем отправьте запрос удаления на сервер, а затем обновите адаптер списка из локальной базы данных.

Надеюсь, у меня есть правильный вопрос.

+0

Отлично, это то, что я уже сделал. Но мне нужно сначала изменить данные на сервере, а затем внести изменения на стороне клиента. Ваш пример делает тиски, удаляя из локального, а затем с сервера, как я понял. –

+0

@AnasSherif это вопрос о позиционировании строк в вашем коде - я имею в виду, что вы вручную отправляете запрос на удаленный сервер, а затем попросите его предоставить свежие данные для вашей локальной базы данных, обновите его, вставьте в адаптер списка. –

+0

Хорошо, но в этом случае мне нужно знать идентификатор строки, которую я хочу удалить, так как Aleks G сказал в своем ответе, мне нужно отправить информацию с сервера. Поэтому в этом примере мне нужно отправить идентификаторы строк, которые я хочу удалить с сервера, в приложение Android, чтобы я мог использовать их, чтобы указать, какая строка должна быть удалена. Я прав ? или вы имеете в виду что-то еще? –

Смежные вопросы