Они обновляют\удаляют записи. Что же касается кода, который вы скинули: если вы внимательно изучали урок, то должны были заметить, что id - это значение из ЕдитТекста, который заполняет юзер, то есть - вы. String id = etID.getText().toString(); Следовательно если вы ничего не заполните, то и данных не будет. Собсна это и проверяется: if (ид.равен пустой строке ).rustech писал(а):Правильно понимаю, что строки кода
в case R.id.btnUpd: и case R.id.btnDel влияют только на то, что в логах не выводится запись об обновлении или удалении записи? Или там какой-то более глубокий смысл?Код: Выделить всё
if (id.equalsIgnoreCase("")) { break; }
Урок 35. SQLite. Методы update и delete с указанием условия
Re: Урок 35. SQLite. Методы update и delete с указанием усло
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Урок 35. SQLite. Методы update и delete с указанием усло
Да, но зачем проверяется то, что ничего не заполнено? Чтобы не выводить запись в лог и не выполнять обработчик, если поле пустое?doter.ua писал(а): Что же касается кода, который вы скинули: если вы внимательно изучали урок, то должны были заметить, что id - это значение из ЕдитТекста, который заполняет юзер, то есть - вы. String id = etID.getText().toString(); Следовательно если вы ничего не заполните, то и данных не будет. Собсна это и проверяется: if (ид.равен пустой строке ).
Re: Урок 35. SQLite. Методы update и delete с указанием усло
rustech писал(а):Да, но зачем проверяется то, что ничего не заполнено? Чтобы не выводить запись в лог и не выполнять обработчик, если поле пустое?doter.ua писал(а): Что же касается кода, который вы скинули: если вы внимательно изучали урок, то должны были заметить, что id - это значение из ЕдитТекста, который заполняет юзер, то есть - вы. String id = etID.getText().toString(); Следовательно если вы ничего не заполните, то и данных не будет. Собсна это и проверяется: if (ид.равен пустой строке ).
Код: Выделить всё
case R.id.btnUpd:
if (id.equalsIgnoreCase("")) {
break;
}
Log.d(LOG_TAG, "--- Update mytabe: ---");
// подготовим значения для обновления
cv.put("name", name);
cv.put("email", email);
// обновляем по id
int updCount = db.update("mytable", cv, "id = ?",
new String[] { id });
Log.d(LOG_TAG, "updated rows count = " + updCount);
break;
new String[] { id });
Не знаете что такое break ? - гугл.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Урок 35. SQLite. Методы update и delete с указанием усло
Да я не об этомdoter.ua писал(а): Вот обновление: int updCount = db.update("mytable", cv, "id = ?",
new String[] { id });
Не знаете что такое break ? - гугл.
Разобрался. Еще удалить этот код (проверку на пустое значение id)
Код: Выделить всё
if (id.equalsIgnoreCase("")) {
break;
}
Код: Выделить всё
--- Update mytabe: ---
updated rows count = 0
Re: Урок 35. SQLite. Методы update и delete с указанием усло
Проверял, действительно так.lstaticl писал(а):Если указать в поле id не цифры, а буквы, или float число - приложение упадет.
Если вышесказанное корректно, буду признателен, если чуть подробнее объясните, как реализовывается проверка на ноль. Приведение переменной к int, насколько понял, так:lstaticl писал(а):А в целом по теории работы с БД, осуществляя выборку по ID или иные действия по ID - нужно приводить переменную к INT и после проверять на 0. Тогда не надо проверять на пустоту, и нет возможности для Injection.
Код: Выделить всё
String id = etID.getText().toString();
int idInt = Integer.parseInt(id);
Re: Урок 35. SQLite. Методы update и delete с указанием усло
Ничего ты не понял. перечитай код еще раз.rustech писал(а):Да я не об этомdoter.ua писал(а): Вот обновление: int updCount = db.update("mytable", cv, "id = ?",
new String[] { id });
Не знаете что такое break ? - гугл.
Разобрался. Еще удалить этот код (проверку на пустое значение id)то при нажатии на кнопку update и при пустом поле id программа выполнит действия с таблицей базы данных, но ничего в ней не изменит и в логи выведет сообщениеКод: Выделить всё
if (id.equalsIgnoreCase("")) { break; }
Т.е., сделал я для себя вывод, проверка на пустое значение id нужна для того, чтобы не лишний раз запускать процесс работы с таблицей базы данных, оптимизировав тем самым работу приложения.Код: Выделить всё
--- Update mytabe: --- updated rows count = 0
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Урок 35. SQLite. Методы update и delete с указанием усло
Спасибоdoter.ua писал(а): Ничего ты не понял. перечитай код еще раз.
-
- Сообщения: 5
- Зарегистрирован: 09 фев 2015, 17:27
Re: Урок 35. SQLite. Методы update и delete с указанием усло
can't resolve symbol id, почему?
Код: Выделить всё
case R.id.btnUpdate:
if (id.equalsIgnoreCase("")){
break;
}
Log.d(LOG_TAG, "---Update mytable---");
cv.put("name", name);
cv.put("email", email);
int updCount = db.update("mytable", cv, "id = ?",
new String[] { id });
Log.d(LOG_TAG, "upatet rows count = " +updCount);
break;
case R.id.btnDel:
if (id.equalsIgnoreCase("")){
break;
}
Log.d(LOG_TAG, "---Deleted from mytable---");
int delCount = db.delete("mytable", "id = " + id, null);
Log.d(LOG_TAG, "deleted rows count =" + delCount);
break;
-
- Сообщения: 31
- Зарегистрирован: 03 сен 2013, 14:26
Re: Урок 35. SQLite. Методы update и delete с указанием усло
Чисто просто из интереса. Можно или нет редактировать, удалять строку напрямую по позиции курсора.
Или только стандартный подход. Зная позицию курсора, надо вытащить ID строки, и уже по ID совершать действия.
Или только стандартный подход. Зная позицию курсора, надо вытащить ID строки, и уже по ID совершать действия.
-
- Сообщения: 31
- Зарегистрирован: 03 сен 2013, 14:26
Re: Урок 35. SQLite. Методы update и delete с указанием усло
Блин ПОМОЖИТЕ. Тормозю интенсивно. Все есть осталось правильно написать запрос на обновление, не доходит до мну никак.
Код: Выделить всё
int idRecordColIndex=cur.getColumnIndex("_id");
int idRecord=cur.getInt(idRecordColIndex);//вытаскиваем ID записи
//заполняем контейнер записями которые нужно изменить
cv.put("engWord", etEngWord.getText().toString());//
cv.put("rusWord", etRusWord.getText().toString());//
cv.put("association", etAssociation.getText().toString());//
if(cbVisible.isChecked()){
cv.put("visible", "yes");
}
else {
cv.put("visible", "no");
}
//как правильно выполнить запрос на обновление
db.update("dictonary", cv, null, null);
-
- Сообщения: 31
- Зарегистрирован: 03 сен 2013, 14:26
Re: Урок 35. SQLite. Методы update и delete с указанием усло
Отвечаю сам себе. Может кому пригодится.
В моей голове никак не укладывалось, что значение _id в таблице имеет тип int, а запросе надо передавать строковое значение. Определенно надо почитать что то по SQL для чайников.
Код: Выделить всё
int idRecordColIndex=cur.getColumnIndex("_id");
int idRecord=cur.getInt(idRecordColIndex);//вытаскиваем ID записи
//заполняем контейнер записями которые нужно изменить
cv.put("engWord", etEngWord.getText().toString());//
cv.put("rusWord", etRusWord.getText().toString());//
cv.put("association", etAssociation.getText().toString());//
if(cbVisible.isChecked()){
cv.put("visible", "yes");
}
else {
cv.put("visible", "no");
}
//как правильно выполнить запрос на обновление
Log.d(MY_LOG, " ID строки которорую нужно изменить = "+ idRecord);
db.update("dictonary", cv, "_id=?", new String[] { String.valueOf(idRecord)});
Re: Урок 35. SQLite. Методы update и delete с указанием усло
Чуть чуть не в тему, но хочу отметить, что это такая субд, в которой что int, что String - ты в столбец таблицы можешь что угодно записать - она не заругается. И второе - типы данных sqlite сильно ограничены в разнообразии. Есть только integer, real,text и blob
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
-
- Сообщения: 31
- Зарегистрирован: 03 сен 2013, 14:26
Re: Урок 35. SQLite. Методы update и delete с указанием усло
Посоветуйте плз. Что можно почитать по SQL ну совсем для чайничков, не одаренных интелектом. Желательно чтобы картинок было побольше.Foenix писал(а):Чуть чуть не в тему, но хочу отметить, что это такая субд, в которой что int, что String - ты в столбец таблицы можешь что угодно записать - она не заругается. И второе - типы данных sqlite сильно ограничены в разнообразии. Есть только integer, real,text и blob
Re: Урок 35. SQLite. Методы update и delete с указанием усло
1 не сохранился. Это всего лишь число. На память не влияет. Не гарантировано что не будет вставлено ещё раз 1
2 БД сама по себе. Активити сами по себе.БД хэлпер отдельный класс сам по себе. Он создаёт базу. Для доступа используйте контент провайдер
2 БД сама по себе. Активити сами по себе.БД хэлпер отдельный класс сам по себе. Он создаёт базу. Для доступа используйте контент провайдер
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
-
- Сообщения: 9
- Зарегистрирован: 29 апр 2015, 09:47
Re: Урок 35. SQLite. Методы update и delete с указанием усло
Вот такие вот 2 вопроса:
1) Представим что я добавил запись в таблицу, она получила id=1. После удаления этой записи из таблицы (то есть после нажатия кнопки Delete),первая запись удалилась, добавляю другую запись. После считываю то что есть в таблице, а есть там только вторая запись под id =2. Вопрос в том почему первой записи больше не существует, а ее id сохранился где-то в памяти и последующие записи уже никогда не получат id=1 даже если все предыдущие записи будут удалены. Это ведь повлияет на то как постепенно приложение будет откусывать все больше памяти системы себе?
2) Можно каким-нибудь образом создать базу данных в одном активити, а содержимое читать в другом?
1) Представим что я добавил запись в таблицу, она получила id=1. После удаления этой записи из таблицы (то есть после нажатия кнопки Delete),первая запись удалилась, добавляю другую запись. После считываю то что есть в таблице, а есть там только вторая запись под id =2. Вопрос в том почему первой записи больше не существует, а ее id сохранился где-то в памяти и последующие записи уже никогда не получат id=1 даже если все предыдущие записи будут удалены. Это ведь повлияет на то как постепенно приложение будет откусывать все больше памяти системы себе?
2) Можно каким-нибудь образом создать базу данных в одном активити, а содержимое читать в другом?
Re: Урок 35. SQLite. Методы update и delete с указанием усло
ответила же. Что не ясно?
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 35. SQLite. Методы update и delete с указанием усло
Кто-нибудь знает, куда сохраняются файлы с записями БД или Shared Preferences при работе с эмулятором Genymotion? Я нашел только общий файл с логами.
Re: Урок 35. SQLite. Методы update и delete с указанием усло
знаем
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 35. SQLite. Методы update и delete с указанием усло
http://stackoverflow.com/a/20336819dmitry_n писал(а):Кто-нибудь знает, куда сохраняются файлы с записями БД или Shared Preferences при работе с эмулятором Genymotion? Я нашел только общий файл с логами.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Урок 35. SQLite. Методы update и delete с указанием усло
"Обратите внимание, что условия и для update и для delete у меня одинаковые, а именно id = значение из поля etID. Но реализовал я их немного по-разному. Для update использовал символ ? в строке условия и массив аргументов. А для delete вставил значение сразу в строку условия. Таким образом, я просто показал способы формирования условия. А вы уже используйте тот, что больше нравится или лучше в конкретной ситуации."
Первый способ ( id = значение из поля etID) подходит только для Integer значений. Если таким способом передать String то будет ошибка NoSuchColumnExcaption :
http://stackoverflow.com/questions/1682 ... uch-column
Первый способ ( id = значение из поля etID) подходит только для Integer значений. Если таким способом передать String то будет ошибка NoSuchColumnExcaption :
http://stackoverflow.com/questions/1682 ... uch-column