François Leclercq
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
ви таки удивитесь, но 10 сообщений назад я сказал что не работает
Ivan
а просто drop table?
Вадим
какой именно запрос не было написано
Проксимов
Ivan
В том, что конкатенация -зло?
Парацельс сказал "все лекарство и все яд, и то и другое определяется дозой"
Denis
Рум
Вадим
SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_NAME, null, null); db.close();
François Leclercq
SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_NAME, null, null); db.close();
про это я тоже уже говорил... блин, айтишники, вы как читать-то вообще научились?
Ivan
всмысле в строка sql писать удобнее?
Ivan
чота сомневаюсь
Denis
Все там ок
François Leclercq
а ты не ох...л?
а ты? или читать что пишут о проблеме уже не тренд?
Вадим
Вадим
где ты бросал его?
François Leclercq
где ты бросал его?
Привет всем. Работаю со стандартным API базы данных - sqlite или что там. при каждой загрузке данных из сети таблица пополняется уже существующими данными - засчет автоинкремента, наверное. DROP table IF EXISTS с какого-то хрена не работает. единственный работающий костыль - физически удалять базофайл при каждому обращению к ссети самое первое
François Leclercq
Что-то я очень сомневаюсь что удалять файл базы - это адекватный ход
Denis
А не простыню бесполезного текста
François Leclercq
https://pastebin.com/mUAPXayS
François Leclercq
https://pastebin.com/kmen5Wt2
Вадим
https://pastebin.com/mUAPXayS
молодец, все правильно. андроид глючит, переустанови виндовс👍
Ivan
у тебя в getEmployes курсор не закрывается
Ivan
private boolean dbExists(SQLiteDatabase mDb) { Cursor cursor = mDb.query(TABLE_NAME, null, null, null, null, null, null); if (cursor.getCount() > 0) { cursor.close(); return true; } else { cursor.close(); return false; } }
François Leclercq
у тебя в getEmployes курсор не закрывается
исправил, спасибо. а чо с дропом?
Ivan
серьезно?
Alexey
Да и он апгрейд не вызывается, версия базы постоянно 1. Товарищ кажется даже путает понятие базы и таблицы
François Leclercq
серьезно?
это по крайней мере работает и не плодит базы. поэтому и пишу
Ivan
у меня есть подозрение что база тут вообще нафиг ненужна
Ivan
можно просто сохранять в json или типа того.
François Leclercq
это ТЗ
Ivan
ненадо писать три вложеных ифа если у них общее тело
Ivan
юзай &&
François Leclercq
ладно. а с таблицей что делать? при каждом хождении в сеть апдейтить версию?
Ivan
я что то в шары долблюсь а что такое TALE_NAME
Ivan
где оно задается
François Leclercq
это константа
Ivan
а что про данные говорится?
François Leclercq
а что про данные говорится?
Конкретно в ТЗ - никак. ТОлько добавляем если есть сеть и потом уже работает в UI
Ivan
ну я так думаю у тебя onupgrade никогда не вызывается
François Leclercq
ну я так думаю у тебя onupgrade никогда не вызывается
Я вызывал через ветвление, дропа не происходило
Anonymous
Ни как не могу найти багу в коде. Клавиатура в EditText не работает в моем кастомном Dialogе. Вот код https://pastebin.com/UALnKJWL
François Leclercq
если надо очищать, есть метод delete from table_name
Не будет ли это таким же костылем как физический дроп? Имхо с проектировкой таблицы что-то не так. Я не знаток баз, но может без автоинкремента можно обойтись? Тогда как сопоставлять данные?
Ivan
а оно тебе надо?
Ivan
ну вообще дроп таблиц это костыль
Ivan
удаление данных это нормально
Ivan
хотя чаще используют скрытие а не удаление
Ivan
но это ньюансы уже
François Leclercq
если тебе старые данные не нужны то их лучше удалять, чтобы не замедлять работу и не есть зря ресурсы
В общем, логично. Я так понимаю, нужно ветвить при каждом обращении к сети: если пуста, создать таблицу, наполнить. Если нет, удалить, наполнить. Правильно?
Ivan
да можно тупо вызвать delete from
Ivan
а потом insert
Konstantin
таблицу лучше не создавать и удалять каждый раз, а только при первом запуске приложения
François Leclercq
да можно тупо вызвать delete from
а если это при первом запуске - ошибки не будет?
Konstantin
тебе нужно удалять данные внутри таблицы без ее пересоздания при синхронизации с сервером
Konstantin
насколько я тебя понял
Ivan
небудет
François Leclercq
в общем, да
Ivan
delete не продуцирует ошибки
Ivan
https://stackoverflow.com/questions/11700686/error-in-sqlite-drop-table-if-exists-android/11700782
Ivan
ну а вообще надо logcat посмотреть
Alexey
Да блин пусть прочитает как sqldbhelper этот работает
FromSi
Room не полезнее?)
Denis
Добрый вечер. Очень нуждаюсь в примере использования recycler view совместно с rx и kotlin. Буду благодарен, если кто-нибудь поделится
Konstantin
почитай гуайды как работать с бд
François Leclercq
лана, всем спасибо
Alex
пробовать
Alex
например, напиши 3 варианта какой-то одной задачки: один с билдерами, другой с сабкомпонентами, третий с андроид даггер
Alex
да, +1, хорошие статьи и еще есть чат @dagger_2
François Leclercq
почитай гуайды как работать с бд
Так, ну самый главный гайд я почитал, но ответ на вопрос, можно ли кроме как костыльным ветвлением определить когда удалять все данные я не нашел
François Leclercq
удалять надо в момент когда они тебе не нужны, тогда в этом нет костыля
Логика такая: если есть сеть, качаем в базу. нет, качаем из базы. и в дальнейшем используем только базу, как то: для сортировки.
Alexey
Найди урок как свой инжектор написать