Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.96
CyberRun
31 / 31 / 12
Регистрация: 14.12.2013
Сообщений: 150
#1

SQLite синхронизация с MySQL - Android

05.04.2014, 23:06. Просмотров 3169. Ответов 5
Метки нет (Все метки)

Здравствуйте!
Подскажите пожалуйста если кто то сталкивался как синхронизировать базу данных SQLite на андроиде и MySQL на сервере.

Добавлено через 4 часа 20 минут
Точней чтобы все данные из MySQL скопировались в SQLite
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2014, 23:06     SQLite синхронизация с MySQL
Посмотрите здесь:

Android Копирование файла с Android на PC, или синхронизация SQLite
"Синхронизация" баз SQLite двух устройств Android
Android SQLite
Синхронизация задач Android
Android SQLite или MySQL на удаленном сервере
Синхронизация Android и ПК на Java Android
Android SQLite
SQLite Android
Android SQLite
Android Синхронизация между потоками
Android SQLite
Как сделать синхронизацию между базами SQlite и MySql? Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
06.04.2014, 00:02     SQLite синхронизация с MySQL #2
Цитата Сообщение от CyberRun Посмотреть сообщение
данные из MySQL скопировались в SQLite
Я бы большую часть этого (если не все) предпочел бы сделать на php (на стороне сервера). Теоретически можно сделать это одним скриптом.
Но...
Вариантов несколько:
№1 (универсально)
1) Вы должны выгрузить базу MySQL в текстовик(или несколько по каждой таблице)
2) В андроиде текстовик загнать в SQLite.
№2 (тяжело)
1) Научиться подключаться из андроида к MySQL
2) залить полученое по протоколу MySQL в SQLite.
№3 (одноразово, но не уверен)
1) Поискать готовую прогу под Win для экспорта-импорта (где-то видел, но не пользовался).
2) а базу просто перетащить на анродид
№4 (одноразово)
1) Все проделать в PHP на стороне сервера (там есть и MySQL и SQLite)
2) а базу просто перетащить на анродид

... обычно это задачка не для новичка
... синхронизация - это НАМНОГО более сложный процесс (включающий сравнение, игнорирование старых, выявление новых, удаление устаревших...) - не путайте термины!
CyberRun
31 / 31 / 12
Регистрация: 14.12.2013
Сообщений: 150
06.04.2014, 00:25  [ТС]     SQLite синхронизация с MySQL #3
нашел вот такой пример ТЫК
Вроде то что надо но действительно сложновато.
Мне нужно просто базу из MySQL импортировать в SQLite(при каждом запуске приложения и наличия доступа к ней то есть интернета(если доступа нету то использовать SQLite. Вот для этого и нужно ее импортировать)) на андроиде и старую версию удалять
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
06.04.2014, 09:55     SQLite синхронизация с MySQL #4
CyberRun, Вам действительно лучше использовать какой-нибудь middleware типа php/nodejs/c#/java итд.

Android Http Client -> HttpGetRequest -> WebServer -> Backend Controller -> SELECT MYSQL -> упаковка в JSON -> Android HttpClient -> распаковка JSON -> INSERT SQLITE
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
06.04.2014, 14:00     SQLite синхронизация с MySQL #5
Цитата Сообщение от YuraAAA Посмотреть сообщение
упаковка в JSON
О! хорошую тему подняли!
Можете вкратце сравнить (по Вашему опыту) что лучше? JSON? XML? TXT/CSV? Другое?
Я пока разобрался только с CSV - написал свой парсер строк вида "привет";"мир; ООО ""Мир""!";"и Ко".
Написал и на php и на java. Потом зипую перед пересылкой. Конечно же в зипе куча файлов по количеству таблиц.
но... что лучше? Имеет ли смысл переводить проект на JSON или XML? Даст ли прирост скорости? Уменьшение размера? Как работает с большими файлами в памяти (5мб)? Тяжело ли прикрутить ползунок-индикатор состояния?
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
06.04.2014, 14:56     SQLite синхронизация с MySQL #6
Tester64, по своему опыту советую JSON. Со стороны андроида с ним просто работать, например:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
String jsonFromServer = "{
"result":{
"title":"example",
"SubArray":[ 1, 2, 3 ]
    }
}"
 
//Parse
JSONObject jsonObject = new JSONObject(jsonFromServer);
JSONObject resultJson = jsonObject.getJSONObject("result");
String title = resultJson.getString("title");
JSONArray subArray = resultJson.getJSONArray("SubArray");
for (int i = 0; i < subArray.length; i++) {
Log.d("JSON " + i, "" + subArray.getInt(i));
}
P.S. писал без IDE, мог где-то ошибиться

Отлично передаётся текстовая информация. Для передачи файлов конечно нужно подключаться к Stream и стягивать данные из HttpEntity из HttpResponse.

Цитата Сообщение от Tester64 Посмотреть сообщение
ползунок-индикатор состояния
Текущей загрузки всм? Нет, очень просто.
1. Мы знаем Content Length
2. Мы знаем сколько уже байт сохранили (Current).
% = (Current / Content Length) * 100


Вот пример со StackOverflow:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
@Override
    protected String doInBackground(String... sUrl) {
        InputStream input = null;
        OutputStream output = null;
        HttpURLConnection connection = null;
        try {
            URL url = new URL(sUrl[0]);
            connection = (HttpURLConnection) url.openConnection();
            connection.connect();
 
            // expect HTTP 200 OK, so we don't mistakenly save error report
            // instead of the file
            if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
                return "Server returned HTTP " + connection.getResponseCode()
                        + " " + connection.getResponseMessage();
            }
 
            // this will be useful to display download percentage
            // might be -1: server did not report the length
            int fileLength = connection.getContentLength();
 
            // download the file
            input = connection.getInputStream();
            output = new FileOutputStream("/sdcard/file_name.extension");
 
            byte data[] = new byte[4096];
            long total = 0;
            int count;
            while ((count = input.read(data)) != -1) {
                // allow canceling with back button
                if (isCancelled()) {
                    input.close();
                    return null;
                }
                total += count;
                // publishing the progress....
                if (fileLength > 0) // only if total length is known
                    publishProgress((int) (total * 100 / fileLength));
                output.write(data, 0, count);
            }
        } catch (Exception e) {
            return e.toString();
        } finally {
            try {
                if (output != null)
                    output.close();
                if (input != null)
                    input.close();
            } catch (IOException ignored) {
            }
 
            if (connection != null)
                connection.disconnect();
        }
        return null;
    }
Yandex
Объявления
06.04.2014, 14:56     SQLite синхронизация с MySQL
Ответ Создать тему
Опции темы

Текущее время: 05:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru