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

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

Войти
Регистрация
Восстановить пароль
 
 
Гаджи
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 56
#1

Как обновить БД пользователей приложения - Программирование Android

07.12.2016, 14:52. Просмотров 349. Ответов 16
Метки нет (Все метки)

Добрый день. Есть приложение в маркете использующее готовую БД SQlite. Данные в БД юзер может менять по желанию или добавлять новые записи. Я как разработчик обновил БД и добавил в нее новые записи (скажем 10 записей, а может и 1000). Требуется новые записи добавить в БД пользователей, так чтобы их данные не стерлись и не изменились. Как можно это реализовать подскажите пожалуйста в виде кода если можно. Потому что уже 3-4 дня копаюсь не пойму как сделать.

БД содержит одну таблицу slovar с полями _id, word, translation, type, favorites.

Знаю есть метод onUpgrade, где это все можно сделать, но как сделать не пойму. Единственное что я сделал это в методе onUpgrade() в БД добавил новую таблицу, и в курсор вытащил все записи из бд следующим образом, а дальше не знаю как быть

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if (oldVersion < 2) {
        db.beginTransaction();
        try {
            String query = "SELECT * from " + DictionaryContract.DictionaryEntry.TABLE_NAME;
            Cursor cr = db.rawQuery(query, null);
            db.execSQL("CREATE TABLE slovar2 (_id INTEGER, word TEXT NOT NULL, translation TEXT NOT NULL, type INTEGER NOT NULL, " +
                    "favorites INTEGER NOT NULL, PRIMARY KEY (_id, word, translation, type, favorites))");
        } finally {
            db.endTransaction();
        }
    }
}
Урок http://startandroid.ru/ru/uroki/vse-...-v-sqlite.html я читал, но не понял все равно как в моем случае все сделать.

Можете привести небольшой кусок кода для моего случая?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2016, 14:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как обновить БД пользователей приложения (Программирование Android):

Разработка приложения для отображения местоположения пользователей на карте - Программирование Android
Доброго времени суток! Собираюсь разработать приложение по типу &quot;Find my friends&quot; или &quot;Locate my friends&quot; под Android. По сути, приложение...

Как обновить TextView с AsyncTask? - Программирование Android
private class DownloadFilesTask extends AsyncTask&lt;String, Integer, Long&gt; { protected Long doInBackground(String... urls) { ...

SQLiteDatabase как обновить таблицы? - Программирование Android
Привет, снова я )) Данные в базу закачиваются из других классов, то есть всё работает, но только если по отдельности открывать активити... ...

Как обновить viewpager или listfragment? - Программирование Android
Добрый день! Помогите пожалуйста разобраться в следующем вопросе. У меня есть ViewPager с FragmentPagerAdapter и десять ListFragment...

Как обновить приложение в play.google.com? - Программирование Android
Вопрос касается https://play.google.com Пробую обновить приложение, которое я загрузил вчера. Система выдает вот такое...

Как обновить значение в ячейке, используя условие? - Программирование Android
как будет выглядеть условие в андроид на SqLite используя примерный синтаксис: db.update(&quot;myDB&quot;, newValues, id + &quot;= ?&quot;, new String {...

16
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
07.12.2016, 15:02 #2
БД находится в приложении или на сервере?

Добавлено через 3 минуты
Используйте запрос insert into... и все дела.
0
Гаджи
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 56
07.12.2016, 15:13  [ТС] #3
В приложении в assets. А как можно обращаться к старой версии БД и к новой версии БД? Вы не могли бы привести небольшой кусок кода демонстрирующий это?
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
07.12.2016, 15:51 #4
Зачем вам одновременно 2 версии БД?
Для добавления записей при установке пользователем новой версии приложения нужно:
1. Увеличить номер версии БД
2. В onUpgrade если версия < 2 кодим
Java
1
2
String query = "INSERT INTO slovar (word, translation) VALUES('"слово1"', '"слово2"');";
db.execSQL(query);
0
Гаджи
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 56
07.12.2016, 15:55  [ТС] #5
Это да, а если новых записей будет скажем 1000 штук? Писать каждый раз insert into для каждого слова не то же ведь. Поэтому хочу чтобы действовало и для случая когда много записей добавляю
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
07.12.2016, 16:03 #6
самое то
главное что бы это была транзакция, а не просто 1000 вставок в цикле
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
07.12.2016, 16:06 #7
Цитата Сообщение от Гаджи Посмотреть сообщение
Писать каждый раз insert into для каждого слова не то же ведь
Цикл слышали такое слово? Берете в переменную слово и формируете query. А откуда брать слово это уже дело техники.
0
Гаджи
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 56
07.12.2016, 16:13  [ТС] #8
знаю я про циклы. Можно в файл записать слова к примеру так: слово$перевод$значение_type$значение_favorites, брать из этого файла инфо и вставлять в БД. Думал может есть еще какой-то более лучший способ.

Добавлено через 1 минуту
Просто хотел в БД добавлять записи и чтобы на ее основе обновлялась БД пользователей не теряя и не меняя данные которые есть у юзеров, а добавлять новые данные. Чтобы не париться и в дальнейшем повышать только версию БД.
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
07.12.2016, 16:17 #9
я не силен с БД и могу ошибаться, но мне казалось, что повышать версию бд надо только если изменилась ее структура - поля, типы полей
но никак не содержимое
0
Гаджи
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 56
07.12.2016, 16:21  [ТС] #10
Я тоже не силен. Я запускал первый раз программу с БД все работает, затем добавил новые записи в БД запустил этих данных нет в БД, поднял версию БД тоже нет. А чтобы они появились и в БД пользователей нужно ведь в методе onUpgrade написать что они добавляются в БД у тех юзеров у которых версия БД ниже чем текущая. А вот это и хотел реализовать на основе старой версии БД и новой версии БД.
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
07.12.2016, 20:26 #11
Цитата Сообщение от Паблито Посмотреть сообщение
но мне казалось, что повышать версию бд надо только если изменилась ее структура - поля, типы полей
Неправильно казалось.
Цитата Сообщение от Гаджи Посмотреть сообщение
Просто хотел в БД добавлять записи
Я выше уже написал, что надо делать.
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
07.12.2016, 20:31 #12
а можно пример когда структура базы (таблиц, полей, длин, типов и т.д.) осталась прежней, но необходимо поднимать версию и никак иначе?
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
07.12.2016, 21:25 #13
Вот он и есть пример у ТС, когда нужно добавить новые записи, но не потерять записи сделанные пользователем.
0
Гаджи
0 / 0 / 0
Регистрация: 07.02.2013
Сообщений: 56
09.12.2016, 09:00  [ТС] #14
Мне как-то предлагали такой вариант. Если требуется оставить записи у юзеров без изменений, но добавить еще и новые то сделать так: Новую БД из assets скопировать к юзеру под новым названием, оттуда вытащить все нужные записи и записать в БД юзера, и удалить временную БД. Но не получилось у меня это реализовать.
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
09.12.2016, 10:48 #15
Цитата Сообщение от Гаджи Посмотреть сообщение
Но не получилось
Соболезную. У меня больше нет вариантов для вас.
0
09.12.2016, 10:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2016, 10:48
Привет! Вот еще темы с ответами:

Как обновить список RecyclerView после добавления item? - Программирование Android
Как обновить список RecyclerView после добавления item? список RecyclerView в DialogFragment, из контактов добавляется номер который...

Как обновить одно поле в таблице SQLite Android - Программирование Android
Привет. Встал вопрос... Как обновить только одну запись в таблице SQLite - Android. Обновлять всю запись слишком много лишнего кода...

Как обновить textview в фрагменте после обновления preference - Программирование Android
Вечер добрый. В общем потратил весь день что бы разобраться с этим вопросом, но все безуспешно. Необходимо обновить значение 2 textview...

Как сделать параметры приложения доступными для всех пользователей сервера - C#
Всем привет. Подскажите как сделать параметры приложения доступными для всех пользователей сервера. Или, если так нельзя, то как...


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

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

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