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

SMS рассылка контактам с базы SQLite - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Как из MSword docx переоброзоват или генерировать в mysql http://www.cyberforum.ru/android-dev/thread1366454.html
Всем привет хочу сделать узбекско-русский словарь на андроид сегодня закончил последние проверки база готова написано в MSWord dictionary.docx имеется более 35000 слов теперь стоит задача как...
Программирование Android Fragments и service такой вопрос как реализовать запуск сервиса и обработку результатов приложении где есть fragments.? хотелось бы запускать сервис в активити а обрабатывать в фрагментах... но получается что нужно... http://www.cyberforum.ru/android-dev/thread1366410.html
Программирование Android Добавление записи в Базу данных
Добрый вечер, Есть работающее приложение для чтения и отправки сообщений. Необходимо записать входящие сообщения в бд. Пытаюсь пытаюсь у меня не получается. Пожалуйста помогите разобраться с бд. ...
Программирование Android OpenGL ES 2.0 Шейдер работает только на эмуляторе
Здравствуйте! Возникла проблема с шейдером "тайлинг с отражением". На эмуляторе GENYMOTION различных версий Android все отлично... На реальном устройстве (Samsung Galaxy Win GT-I8552) выдает ошибку....
Программирование Android Подключаю admob. Приложение перестало компилиться http://www.cyberforum.ru/android-dev/thread1366299.html
Ошибка на скрине Подскажите пожалуйста на что орет студия? Добавлял адмоб по этой инструкции https://developers.google.com/mobile-ads-sdk/docs/admob/android/quick-start
Программирование Android Сложно ли будет добавить в данное приложение чат? http://www.androidhive.info/2012/01/android-login-and-registration-with-php-mysql-and-sqlite/ нашел один сайт, есть возможность регистрации + авторизации, возможно добавить чат в этот пример? подробнее

Показать сообщение отдельно
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
03.02.2015, 14:51
Kazachek, пожалуйста!
По поводу подключения к существующей БД можно почитать, например, здесь: Как подключиться к уже существующей sqlite, или подскажите где ошибка в коде (последнее сообщение даёт ссылку на пример). Правда, я там не совсем согласен, например, при копировании БД на устройство нет проверки существования папки и её создания. Впрочем, этот баг встречается у многих. Почитайте несколько разных источников, чтобы для себя решить. Я долго выбирал движки БД, в итоге склонился к SQLiteAssetHelper.
В своих проектах я почти не использую запись в БД, разве что её автообновление. Дело в том, что копить данные у пользователя (которые он сам вводит туда) - целая проблема. Например, при удалении программы или при очистке данных через настройки вся накопленная информация мгновенно исчезает. А делать это приходится периодически (по крайней мере, у себя на устройствах во время отладки). При изменении структуры БД (а пока программа развивается, структура будет тоже меняться) придётся писать скрипты для апгрейда БД так, чтобы не потерять пользовательские данные. Поля добавлять, названия полей менять и т.п. Следовательно, данные в БД теряются ещё проще, чем фотографии и документы.
Но если уж вы решили записывать в БД, то вот пример (штудировал http://habrahabr.ru/post/190876/).
Кстати, пока искал статью, нашёл ещё что-то: http://habrahabr.ru/post/146453/.
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
        private boolean updateTable() {
            String sqlInsert, sqlUpdate, sqlDelete;
            SQLiteStatement stmtInsert, stmtUpdate, stmtDelete;
 
            db.beginTransaction();
            try { // try - finally - обязательно. Если запись сломается, транзакцию надо будет закрыть.
                        sqlInsert = "INSERT INTO tbl (id, name, phone) "
                                + "VALUES (?, ?, ?)";
                        sqlUpdate = "UPDATE tbl SET name = ?, phone = ? "
                                + "WHERE id = ?";
                        stmtInsert = db.compileStatement(sqlInsert);
                        stmtUpdate = db.compileStatement(sqlUpdate);
 
                                    stmtInsert.bindLong(1, id);
                                    stmtInsert.bindString(2, name);
                                    stmtInsert.bindString(3, phone);
                                    stmtInsert.execute();
 
                                    stmtUpdate.bindString(1, name);
                                    stmtUpdate.bindString(2, phone);
                                    stmtUpdate.bindLong(3, id);
                                    stmtUpdate.execute();
 
                    db.setTransactionSuccessful();
                }
            } finally {
                // В случае сбоя во время обновления не забудем закрыть транзакцию, иначе БД будет заблокирована.
                db.endTransaction();
            }
Кроме того, желательно не споткнуться о наши любимые null'ы. Ява очень их любит. Поэтому, если в данных ожидается null, надо несколько переписать методы:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
        private void bindLong(SQLiteStatement stmt, int index, Long value) {
            if (value == null)
                stmt.bindNull(index);
            else
                stmt.bindLong(index, value);
        }
 
        private void bindString(SQLiteStatement stmt, int index, String value) {
            if (value == null)
                stmt.bindNull(index);
            else
                stmt.bindString(index, value);
        }
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru