Урок 35. SQLite. Методы update и delete с указанием условия

Обсуждение уроков
Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Урок 35. SQLite. Методы update и delete с указанием условия

Сообщение damager82 » 21 ноя 2011, 03:00

В этом уроке:
- используем методы update и delete с указанием условия


Click here to read this article!
Последний раз редактировалось damager82 20 янв 2018, 16:36, всего редактировалось 14 раз.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Аватара пользователя
alexly25
Сообщения: 2
Зарегистрирован: 18 июл 2012, 16:14
Откуда: самара

Re: Урок 35. SQLite. Методы query и delete с указанием услов

Сообщение alexly25 » 18 июл 2012, 16:22

Log.d(LOG_TAG, "--- Update mytabe: ---");
// подготовим значения для обновления
cv = new ContentValues();

а зачем мы обновляем cv? мы же его и так новый создаём при входе в onClick

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 35. SQLite. Методы query и delete с указанием услов

Сообщение damager82 » 18 июл 2012, 16:58

alexly25 писал(а):а зачем мы обновляем cv? мы же его и так новый создаём при входе в onClick
Верно, спасибо!
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Аватара пользователя
alexly25
Сообщения: 2
Зарегистрирован: 18 июл 2012, 16:14
Откуда: самара

Re: Урок 35. SQLite. Методы query и delete с указанием услов

Сообщение alexly25 » 18 июл 2012, 17:57

damager82 писал(а):
alexly25 писал(а):а зачем мы обновляем cv? мы же его и так новый создаём при входе в onClick
Верно, спасибо!
и вам большое спасибо за сайт!)

zmey
Сообщения: 1
Зарегистрирован: 28 июл 2012, 10:22

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение zmey » 28 июл 2012, 10:26

Возможно, стоит предупредить о SQL injection при формировании SQL запроса тем способом, который показан в btnDel.

3Gern
Сообщения: 25
Зарегистрирован: 30 июл 2012, 13:32

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение 3Gern » 30 июл 2012, 13:38

можно ли создать бд на компе, затем перекинуть а потом открыть ее с помощью query?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение rezak90 » 30 июл 2012, 13:45

3Gern писал(а):можно ли создать бд на компе, затем перекинуть а потом открыть ее с помощью query?
можно, я использую утилиту sqlitestudio-2.0.26 , очень полезная вещ!
R.id.team
Политика на форуме запрещена

3Gern
Сообщения: 25
Зарегистрирован: 30 июл 2012, 13:32

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение 3Gern » 30 июл 2012, 14:56

rezak90 писал(а):
3Gern писал(а):можно ли создать бд на компе, затем перекинуть а потом открыть ее с помощью query?
можно, я использую утилиту sqlitestudio-2.0.26 , очень полезная вещ!
спасибо за программу, как видите я в этом деле новичок хотел спросить для такого способа есть статейки, уроки ?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение rezak90 » 30 июл 2012, 15:02

всмысле для какого способа? как создать базу в этой проге? для этого надо знать хоть немножко SQL. В проге нажимаешь Alt+e и вводишь туда запрос.
R.id.team
Политика на форуме запрещена

math64
Сообщения: 235
Зарегистрирован: 16 июл 2012, 07:47

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение math64 » 30 июл 2012, 15:14

Можно создать базу в Андроиде, перекинуть её на комп, заполнить данными и вернуть в Андроид.
Адроид создаёт две дополнительные таблицы:
CREATE TABLE android_metadata (locale TEXT)
содежит одну запись: ru_RU
CREATE TABLE sqlite_sequence(name,seq)
содержит имена таблиц и число записей - 1
Может быть, они нужны Андроиду, а может он сам их создаст при первом открытии.
Если используете Firefox, можно смотреть базу Firefox SQLite Manager'ом

3Gern
Сообщения: 25
Зарегистрирован: 30 июл 2012, 13:32

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение 3Gern » 30 июл 2012, 17:15

rezak90, math64
скажем у меня есть бд заполненная данными, мне теперь нужно сделать приложение которая будет показывает содержимое этой бд.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение rezak90 » 30 июл 2012, 17:31

3Gern писал(а):rezak90, math64
скажем у меня есть бд заполненная данными, мне теперь нужно сделать приложение которая будет показывает содержимое этой бд.
так если тебе только прочитать данные из бд нужно то в уроке 34 показано как считываются данные из бд. Это дело в пару строк ;)
R.id.team
Политика на форуме запрещена

3Gern
Сообщения: 25
Зарегистрирован: 30 июл 2012, 13:32

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение 3Gern » 30 июл 2012, 18:06

rezak90 писал(а):
3Gern писал(а):rezak90, math64
скажем у меня есть бд заполненная данными, мне теперь нужно сделать приложение которая будет показывает содержимое этой бд.
так если тебе только прочитать данные из бд нужно то в уроке 34 показано как считываются данные из бд. Это дело в пару строк ;)
извиняюсь что водил вас туда сюда, просто голова закипела, отдохнул думаю теперь доходчиво объясню, ладно поехали для того чтобы открыть бд с данными для просмотра мне нужно вручную бд с данными кидать в папку databases, я хотел бы узнать а как автоматизировать этот процесс? ну чтобы при установке приложений бд с данными автоматом копировалась в папку databases

math64
Сообщения: 235
Зарегистрирован: 16 июл 2012, 07:47

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение math64 » 30 июл 2012, 18:24

1. При отладке можно автоматизировать - добавить в Eclipse дополнительный build-step, копирующий файл базы данных на устройство.
2. В самой программе - она может соединиться с твойм компьютером по bluetooth, wi-fi или интернету и скачать файл.
На твоём компьютере должен стоять соответствущий сервер.
3. Если файл базы данных небольшой, его можно встроить в приложение, поместив в папку res/raw

3Gern
Сообщения: 25
Зарегистрирован: 30 июл 2012, 13:32

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение 3Gern » 30 июл 2012, 18:56

math64 спс

dlnsk
Сообщения: 9
Зарегистрирован: 13 авг 2012, 14:16

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение dlnsk » 14 авг 2012, 11:31

А почему не использовать просто:

Код: Выделить всё

int updCount = db.update("mytable", cv, "id = " + id, null);
вместо масок и массивов:

Код: Выделить всё

int updCount = db.update("mytable", cv, "id = ?", new String[] { id });

math64
Сообщения: 235
Зарегистрирован: 16 июл 2012, 07:47

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение math64 » 14 авг 2012, 12:11

Для изменения одной записи - несущественно. Здесь - демонстрация того, что можно и так. (первый вариант продемонстрирован на delete).
Если измененяется много записей - лучше второй вариант (т.е. как в примере, при условии, что выделение new String[] вынесено за пределы цикла) + использование транзакции.

Roman
Сообщения: 22
Зарегистрирован: 23 авг 2012, 08:43

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение Roman » 10 сен 2012, 22:18

добрый день!
Вопросы:
1. Если я удаляю строку например c ID=3 и потом пытаюсь обновить ее то эклипс пишет значение 0. И действительно, когда я проверяю базу то данных с ID=3 уже нет и на то место ничего нельзя записать. Где об этом можно почитать почему так происходит.

2. У вас в коде появился импорт

Код: Выделить всё

import ru.startandroid.develop.p0341simpelsqlite.R;
но у меня при написании кода в ручную (без copy/paste) не потребовался такой импорт. с чем это связано?
Спасибо за ответы.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение rezak90 » 10 сен 2012, 22:45

Roman писал(а):добрый день!
Вопросы:
1. Если я удаляю строку например c ID=3 и потом пытаюсь обновить ее то эклипс пишет значение 0. И действительно, когда я проверяю базу то данных с ID=3 уже нет и на то место ничего нельзя записать. Где об этом можно почитать почему так происходит.
вы же эту строку удалили, соответственно туда уже ничего не запихнёшь так как если ID - autoincrement то при каждом добавлении ID будет автоматом увеличиваться на 1 и соответственно если у вас идёт запись в базе 1/2/3/5 то вставить значения с ID=4 уже не выйдет. Это в принципе и не надо, потому как строгий порядок здесь не нужен.
R.id.team
Политика на форуме запрещена

Roman
Сообщения: 22
Зарегистрирован: 23 авг 2012, 08:43

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Сообщение Roman » 11 сен 2012, 00:12

rezak90 писал(а): вы же эту строку удалили, соответственно туда уже ничего не запихнёшь так как если ID - autoincrement то при каждом добавлении ID будет автоматом увеличиваться на 1 и соответственно если у вас идёт запись в базе 1/2/3/5 то вставить значения с ID=4 уже не выйдет. Это в принципе и не надо, потому как строгий порядок здесь не нужен.
Спасибо! Понял!

Ответить