Виджеты Android: где будет происходить шаг «вставки» для базы данных? - PullRequest
1 голос
/ 18 июля 2010

У меня есть виджет, который в настоящее время берет случайную строку из массива и устанавливает ее для отображения текста при обновлении.Проблема здесь в том, что один и тот же элемент может быть повторно использован несколько раз подряд из-за того, что строка является «случайной»

. Чтобы решить эту проблему, я собирался создать таблицу, содержащую текст String, иint просмотрено и увеличивать просматриваемое число каждый раз, когда вызывается «получить текст».(при обновлении в виджете).

Мой вопрос: если я помещу операторы вставки в виджет, не будут ли данные вставляться при каждом вызове «при обновлении»?

Будет лидля него лучше куда-нибудь зайти в класс DBadapter?Я просто неуверен в том, как лучше не вводить дубликаты данных.Если есть лучшая альтернатива, такая как сохранение файла CSV где-нибудь и использование того, что я открыт для него, кажется, что база данных sqlite - это путь.

Спасибо за ваше время.

Ответы [ 2 ]

0 голосов
/ 19 июля 2010

Объявите вашу базу данных с ограничением UNIQUE для столбцов, которые вы хотите сохранить уникальными, затем установите желаемое поведение с помощью ON CONFLICT в операторе INSERT. ON CONFLICT REPLACE ... означает, что самые последние вставки перезаписываются. ON CONFLICT IGNORE ... сохраняет старую версию.

0 голосов
/ 18 июля 2010

Это зависит от того, что делает ваш метод onUpdate.Если каждый раз, когда вызывается onUpdate, он получает случайную строку из базы данных, тогда это будет место для ее размещения.Однако, если вы не получаете String во время onUpdate, вы должны поместить его в метод доступа к вашей базе данных.Я думаю, что ваша путаница связана с целью обновления.onUpdate не вызывается каждый раз, когда пользователь просматривает домашнюю страницу и видит ваш виджет;он вызывается регулярно в указанном вами масштабе времени, и в целом, как и у вас, его цель - получить новую строку из базы данных.

Что касается вашего второго вопроса, да, базы данных SQliteспособ сделать это :) Я не пытался сохранить файл CSV или что-то в этом роде, но я думаю, что это было бы намного сложнее, чем просто использование базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...