Урок 34. Хранение данных. SQLite

Обсуждение уроков
Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 34. Хранение данных. SQLite

Сообщение KamiSempai » 15 июл 2014, 15:50

du_m писал(а):Прошу прощения если такой вопрос уже задовался
Как вывести данные определенного объекта, если я имею его номер id из sqlite?
Сделать выборку из базы по этому id вы вести данные.

Вот ссылка: https://www.google.ru/webhp?sourceid=ch ... 1%8B%20sql
Там написано как сделать выборку.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Аватара пользователя
Ильмир
Сообщения: 11
Зарегистрирован: 07 окт 2013, 09:20

Re: Урок 34. Хранение данных. SQLite

Сообщение Ильмир » 21 июл 2014, 13:25

че можно открыть myDB файл? data/data/ru.startandroid.develop.p0341simpelsqlite/databases/myDB.
_______
Android_______

Donart
Сообщения: 114
Зарегистрирован: 06 ноя 2013, 08:59

Re: Урок 34. Хранение данных. SQLite

Сообщение Donart » 21 июл 2014, 14:01

че можно открыть myDB файл? data/data/ru.startandroid.develop.p0341simpelsqlite/databases/myDB.
Например sqlitestudio.

Аватара пользователя
Ильмир
Сообщения: 11
Зарегистрирован: 07 окт 2013, 09:20

Re: Урок 34. Хранение данных. SQLite

Сообщение Ильмир » 21 июл 2014, 14:10

спасибо
_______
Android_______

Аватара пользователя
Don77
Сообщения: 13
Зарегистрирован: 02 июл 2014, 00:21

Re: Урок 34. Хранение данных. SQLite

Сообщение Don77 » 28 июл 2014, 21:02

В реальном устройстве метод insert всегда возвращает -1.В эмуляторе программа отрабатывает как надо...
Папка data пустая, как я понимаю только с root доступом эта папка будет открыта.Видимо какая-то проблема с доступом, если на эмуляторе приложение работает нормально.Может кто подскажет, что не так?
Конечно я могу рутнуть свое устройство, и вероятно программа заработает, но это отнюдь не решает проблему.

Нашел ошибку...Не буду удалять свое сообщение, может кому в будущем пригодится. )
При первом запуске, в методе execSQL не поставил запятую после второго параметра.Собственно, как и ожидалось программа не сработала.После чего заметил ошибку, исправил но как я уже понял повторно БД с таким-же именем не создается, видимо в БД создалось поле с неизвестным параметром - ( textemail text), поэтому все последующие попытки отладки были неудачны.В общем изменил имя БД, все заработало.
Спасибо за уроки! :)

allexan
Сообщения: 23
Зарегистрирован: 03 июл 2014, 16:32

Re: Урок 34. Хранение данных. SQLite

Сообщение allexan » 06 авг 2014, 10:10

FileExplorer показывает размер созданной (пустой) базы 5120
При добавлении записей в базу этот размер не меняется
Откуда берется это число?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 34. Хранение данных. SQLite

Сообщение Foenix » 06 авг 2014, 12:34

allexan писал(а):FileExplorer показывает размер созданной (пустой) базы 5120
При добавлении записей в базу этот размер не меняется
Откуда берется это число?
Я точно не разбиралась с sqlite, но если говорить в общем, то субд имеют как бы "постраничное" устройство, если проще выразиться. Они растут в размере сразу на целую страницу, когда их заполнение превышает определенную величину. Т.е. добавив 1 строку в таблицу размер может не измениться, а может измениться сразу существенно на размер этой самой страницы.
Это делается для оптимизации и увеличения быстродействия.
Так же устроены другие штуки типа ArrayList-а :) там он растет сразу (по-умолчанию) по 10 элементов при заполнении на определенный процент.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Урок 34. Хранение данных. SQLite

Сообщение altwin » 06 авг 2014, 13:05

Foenix писал(а):
allexan писал(а):FileExplorer показывает размер созданной (пустой) базы 5120
При добавлении записей в базу этот размер не меняется
Откуда берется это число?
Я точно не разбиралась с sqlite, но если говорить в общем, то субд имеют как бы "постраничное" устройство, если проще выразиться. Они растут в размере сразу на целую страницу, когда их заполнение превышает определенную величину. Т.е. добавив 1 строку в таблицу размер может не измениться, а может измениться сразу существенно на размер этой самой страницы.
Это делается для оптимизации и увеличения быстродействия.
Так же устроены другие штуки типа ArrayList-а :) там он растет сразу (по-умолчанию) по 10 элементов при заполнении на определенный процент.
Вот потому я и смеюсь над теми, кто ругает php но сам пишет на java... та же фигня и там :) Правда в пхп hashTable на основе которого построен массив еще более жесток и всегда кратен степени 2, выходя за рамки мы сразу получаем увеличение в 2 раза :)))) Java конечно и все эти базы работают чуть более щадяще, но учитывая все это они не далеко ушли от того самого пыхыпы :mrgreen: А если посмотреть на zval в ядре хпх который служит "ядром" для переменных, то вообще становится смешно потому, как java и пхп -одна и таже хрень :)

P.S. но это я отвлекся не обращайте внимание... :)
Изображение

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 34. Хранение данных. SQLite

Сообщение KamiSempai » 06 авг 2014, 13:45

PHP такое поведение, от части, простительно. Как ни как "PHP- это язык созданный умирать" :)
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Урок 34. Хранение данных. SQLite

Сообщение altwin » 06 авг 2014, 13:54

KamiSempai писал(а):PHP такое поведение, от части, простительно. Как ни как "PHP- это язык созданный умирать" :)
Сомневаюсь ну оочень сильно.. боюсь именно php пережевет всех именно из за своей простоты и стоимости, к слову мне по роду деятельности приходится иметь с ним дело и сказать могу одно, лично я все меньше вижу "школьников" на собеседовании, а вот люди показывающие реальный код использующий автозагрузчик(менеджер) зависимостей, минимум 80% покрытие тестами, DI вместо new, использование так называемого IoC контейнера, т.е. по сути программирование через Интерфейсы и позднее связывание, в php -это называется type hinting и т.д... Лично я вижу людей (пхп - шников) с очень серьезным бекграундом и осознанием работы ядра. Почти все используют основные паттерны и как минимум SPL, а это работа с хешами, двусвязные списки вмето динамичных массивов, не тривиальная сортировка и простой поиск в глубину - вопросы не только не вызывающие проблем но и широкая практика... если честно у меня последнее время сложилось мнение, что все те, include -ры( да я их инклюдерами называю, за их способ встраивания кода в html и include нужны классов в код хардкором :) ) поняли, что они уже true ( я счастлив за них... ) и им нужны более модные технологии, и вот они все уже в Android :mrgreen: По крайней мере лично я вижу тотально низкий уровень java junior, которые толком и в android sdk путаются и при этом все больше пхпшников способных расширять ядро... ;) А еще мне очень смешно видеть, как на "курсах" по программированию кричат о том, что java не нужна, android -это просто... а вот php-шники теперь начинают учить php с основ программирования на C ...

P.S. ну вот не верю я в то, что возможен хороший программист не знающий C.
Изображение

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 34. Хранение данных. SQLite

Сообщение KamiSempai » 06 авг 2014, 13:59

altwin писал(а):
KamiSempai писал(а):PHP такое поведение, от части, простительно. Как ни как "PHP- это язык созданный умирать" :)
Сомневаюсь ну оочень сильно.. боюсь именно php пережевет всех именно из за своей простоты и стоимости...
Я имел ввиду вот это http://habrahabr.ru/post/179399/
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Урок 34. Хранение данных. SQLite

Сообщение altwin » 06 авг 2014, 14:20

KamiSempai писал(а):
altwin писал(а):
KamiSempai писал(а):PHP такое поведение, от части, простительно. Как ни как "PHP- это язык созданный умирать" :)
Сомневаюсь ну оочень сильно.. боюсь именно php пережевет всех именно из за своей простоты и стоимости...
Я имел ввиду вот это http://habrahabr.ru/post/179399/
ну это нормально, php тем и хорош, что позволяет все. Не стоит забывать основополагающую аксиому сформулированную еще Страуструпом - "Язык программирования не должен иметь ограничений", ЯП создан для людей, а не наоборот и то, что домохозяйка может создать веб страничку - это огромный плюс. Другое дело, что сегодня этот пхп развивается сумашедшими темпами впитывая опыт сообществ и если я хочу написать echo "Hello, world"; и это работает -отлично, важно что я могу передать интерфейс в качестве парраметра класса в виде того -же type hinting и работает это с тем же успехом. Php - это просто модуль C, не более и не менее, высокоуровневая абстракция выросшая в собственную инфраструктуру и до сих пор ну нет адекватной замены, все эти python/ruby - это скорее конкрунты perl в инструментах системного администратора, в web они живут только благодаря дополнительной абстракции в виде фреймворков, а вот на plain ЯП никто не пишет.. и тут php - монополист. А если принять во внимание расширямость ядра и наличие фреймворков по типу phalcon - пыха - живее всех живых... Ну вот не заставят меня жить в инфраструктуре java или крестов с их навязанным ООП, я слишком часто вижу преимущества декларативного подхода... да и мир все больше нуждает в "универсалах", да инженеры нужны всегда, но их нужно не так много, а писать под web на java - это слишком дорого.

P.S. вообще все очень зависит от конкретного человека и то, что простота пхп породила кучу недоучек - это лишь следствие популярности web, который еще очень молод. Сам по себе ЯП, как инструмент с таким сообществом будет жить еще очень долго хотябы потому, что он отлично справляется со своей задачей. А если кто -то платит за корявый говнокод.. ну так флаг ему в руки, это его личная проблема... php или java то тут при чем? :)
Изображение

Pipstar
Сообщения: 3
Зарегистрирован: 10 авг 2014, 10:11

Re: Урок 34. Хранение данных. SQLite

Сообщение Pipstar » 10 авг 2014, 10:20

Вопрос таков: не должно ли в классе dbhelper в конструкторе и в функции создания базы совпадать имена?? В конструкторе используем имя mydb, а в sql - запросе mytable. Не создается ли при этом пустая база, которая не используется?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 34. Хранение данных. SQLite

Сообщение Foenix » 10 авг 2014, 10:22

Pipstar писал(а):Вопрос таков: не должно ли в классе dbhelper в конструкторе и в функции создания базы совпадать имена?? В конструкторе используем имя mydb, а в sql - запросе mytable. Не создается ли при этом пустая база, которая не используется?
не путайте базу данных и таблицу и никогда не называйте одно другим.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Pipstar
Сообщения: 3
Зарегистрирован: 10 авг 2014, 10:11

Re: Урок 34. Хранение данных. SQLite

Сообщение Pipstar » 10 авг 2014, 10:30

Точно, спасибо, что-то я протупил...

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Урок 34. Хранение данных. SQLite

Сообщение altwin » 11 авг 2014, 17:47

Foenix писал(а):
Pipstar писал(а):Вопрос таков: не должно ли в классе dbhelper в конструкторе и в функции создания базы совпадать имена?? В конструкторе используем имя mydb, а в sql - запросе mytable. Не создается ли при этом пустая база, которая не используется?
не путайте базу данных и таблицу и никогда не называйте одно другим.
<boring>Скучно</boring>
Я бы продолжил - никогда не называйте отношение таблицей, если в точности не понимаете разницы и главное того, что таблиц не существует... :P Мне кажется для того, чтобы человек понял о чем речь очень не правильно использовать не корректные понятия вроде: таблица, строка, столбец... это в корне не верно и более того путает.. нужно называть вещи своими именами, к примеру: SELECT - это операция ограничения в реляционной модели, т.е. ограничение - это операция с моделью возвращающая все кортежи заданного отношения, которые отвечают заданному условию(к примеру на соответсвие атрибута). Мне кажется так на много понятнее и никакой двусмысленности, один раз разобравшись - никогда не забудешь ;)
Изображение

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 34. Хранение данных. SQLite

Сообщение Foenix » 11 авг 2014, 18:43

а про select никто не говорил, это вообще "запрос" в нашем, неумном, мире называют.
строка, столбец - я тоже этих слов не стесняюсь, так что boring-boring... Do not be so boring. And do be patient with us, dear.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Урок 34. Хранение данных. SQLite

Сообщение altwin » 11 авг 2014, 18:46

Foenix писал(а):а про select никто не говорил, это вообще "запрос" в нашем, неумном, мире называют.
строка, столбец - я тоже этих слов не стесняюсь, так что boring-boring... Do not be so boring. And do be patient with us, dear.
не получилось развести демогогию, ну и ладно :)
Изображение

yura91
Сообщения: 265
Зарегистрирован: 22 авг 2014, 13:43

Re: Урок 34. Хранение данных. SQLite

Сообщение yura91 » 22 авг 2014, 13:55

а как сохранить в базу данных SQLite ссылки на картинки?ссылки на файлы можете скинуть фрагмент кода??

qw123
Сообщения: 41
Зарегистрирован: 27 июн 2014, 12:11

Re: Урок 34. Хранение данных. SQLite

Сообщение qw123 » 08 сен 2014, 20:02

Подскажите пожалуйста в чём ошибка
Cursor c = db.query("id", null, "p1=? or p2=? or p3=?", new String[] {p1, p2, p3}, null, null, null);

Ответить