Наиболее близкое к решению вопроса объяснение, но как это реализовать в коде?После действий с БД, необходимо обновить курсор, курсор имеет Observer, call-back метод, который запускает процесс рендеринга листа с новыми данными. Но так как вы после изменения данных в БД, не обновили курсор и не запустили механизм, то приходится удалять по позиции вручную.
Урок 34. Хранение данных. SQLite
-
- Сообщения: 103
- Зарегистрирован: 10 сен 2012, 11:58
Re: Урок 34. Хранение данных. SQLite
Re: Урок 34. Хранение данных. SQLite
если данные из бд удалены то они никак не могут появится с новым открытием приложения. Откройте бд из любой утилиты и посмотрите действительно ли удаляются данные? А лучше уж скиньте проект.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
-
- Сообщения: 103
- Зарегистрирован: 10 сен 2012, 11:58
Re: Урок 34. Хранение данных. SQLite
Нашел вот такую. Никогда не пользовался, поэтому не знаю пойдет или нет. Посмотрите пожалуйста
http://www.sqlabs.com/sqlitemanager.php
http://www.sqlabs.com/sqlitemanager.php
Re: Урок 34. Хранение данных. SQLite
Я пользуюсь этой:
http://forum.ru-board.com/topic.cgi?forum=5&topic=36340
Находите бд в File Explorer'e Eclips'a, стягиваете её и открываете при помощи вышеупомянутой утилиты.
http://forum.ru-board.com/topic.cgi?forum=5&topic=36340
Находите бд в File Explorer'e Eclips'a, стягиваете её и открываете при помощи вышеупомянутой утилиты.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
-
- Сообщения: 103
- Зарегистрирован: 10 сен 2012, 11:58
Re: Урок 34. Хранение данных. SQLite
У меня NetBeans. Как найти файл БД через NetBeans?
Re: Урок 34. Хранение данных. SQLite
Что ж сказать, сочувствую =)
Придётся руками: http://www.londatiga.net/it/how-to-use- ... line-tool/
Придётся руками: http://www.londatiga.net/it/how-to-use- ... line-tool/
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
-
- Сообщения: 103
- Зарегистрирован: 10 сен 2012, 11:58
Re: Урок 34. Хранение данных. SQLite
Здравствуйте,
База данных на месте. Данные удаляются и добавляются. Если кому интересно, то решение вопроса, как я и предполагал (по совету neoksi), лежит в использовании cursor, а именно:
и затем, с удовольствием удаляем.
Пока разбирался, возник вопрос: следует ли при каждом обращении к базе, открывать курсор и, после ее закрытия, закрывать и курсор.
А так, тема закрыта, спасибо всем кто пытался помочь.
База данных на месте. Данные удаляются и добавляются. Если кому интересно, то решение вопроса, как я и предполагал (по совету neoksi), лежит в использовании cursor, а именно:
Код: Выделить всё
// переводим курсор в текущую позицию листа
cursor.moveToPosition((int) list_pos_ID);
// получаем ID текущей позиции от курсора
long abc = cursor.getLong(cursor.getColumnIndex(DBHelper.COLUMN_ID));
Пока разбирался, возник вопрос: следует ли при каждом обращении к базе, открывать курсор и, после ее закрытия, закрывать и курсор.
А так, тема закрыта, спасибо всем кто пытался помочь.
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 34. Хранение данных. SQLite
dil_android, у меня вопрос. От куда вы получаете list_pos_ID?
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
-
- Сообщения: 103
- Зарегистрирован: 10 сен 2012, 11:58
Re: Урок 34. Хранение данных. SQLite
// ID текущей позиции на листе
list_pos_ID = acmi.id;
KamiSempai, подскажите пожалуйста. Сегодня пытался создать новую таблицу уже для ChildActivity и обновить базу данных. В результате LogCat выдает следующее:
Означает ли все это, что эмулятор не может найти package example.CustomAdapter, и, поэтому, создает копии пакетов по адресу:
/data/app/example.CustomAdapter-2.apk'
Что делать в этом случае?
list_pos_ID = acmi.id;
KamiSempai, подскажите пожалуйста. Сегодня пытался создать новую таблицу уже для ChildActivity и обновить базу данных. В результате LogCat выдает следующее:
Код: Выделить всё
15:17:11.884 62 system_process WARN ActivityManager No content provider found for:
15:17:12.004 62 system_process WARN ActivityManager No content provider found for:
15:17:12.445 62 system_process INFO ActivityManager Force stopping package example.CustomAdapter uid=10047
15:17:14.175 62 system_process INFO ActivityManager Force stopping package example.CustomAdapter uid=10047
15:17:15.485 62 system_process INFO ActivityManager Force stopping package example.CustomAdapter uid=10047
15:17:21.914 62 system_process INFO ActivityManager Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=example.CustomAdapter/.MainActivity } from pid 1318
15:17:22.865 62 system_process INFO ActivityManager Start proc example.CustomAdapter for activity example.CustomAdapter/.MainActivity: pid=1328 uid=10047 gids={1015}
15:17:25.864 62 system_process INFO ActivityManager Displayed example.CustomAdapter/.MainActivity: +3s24ms
15:17:09.954 1304 #1304 DEBUG AndroidRuntime >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
15:17:09.954 1304 #1304 DEBUG AndroidRuntime CheckJNI is ON
15:17:11.586 1304 #1304 DEBUG AndroidRuntime Calling main entry com.android.commands.pm.Pm
15:17:17.666 1304 #1304 DEBUG AndroidRuntime Shutting down VM
15:17:17.795 1304 #1304 INFO AndroidRuntime NOTE: attach of thread 'Binder Thread #3' failed
15:17:19.574 1318 #1318 DEBUG AndroidRuntime >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
15:17:19.574 1318 #1318 DEBUG AndroidRuntime CheckJNI is ON
15:17:21.717 1318 #1318 DEBUG AndroidRuntime Calling main entry com.android.commands.am.Am
15:17:22.194 1318 #1318 DEBUG AndroidRuntime Shutting down VM
15:17:22.344 1318 #1318 INFO AndroidRuntime NOTE: attach of thread 'Binder Thread #3' failed
15:17:11.875 312 com.android.defcontainer DEBUG dalvikvm GC_EXPLICIT freed 6K, 54% free 2538K/5511K, external 716K/1038K, paused 114ms
15:17:13.964 1313 #1313 DEBUG dalvikvm DexOpt: load 82ms, verify+opt 292ms
15:17:14.154 62 system_process DEBUG dalvikvm GC_FOR_MALLOC freed 876K, 45% free 4625K/8263K, external 1488K/1828K, paused 147ms
15:17:15.625 1291 com.android.launcher DEBUG dalvikvm GC_EXPLICIT freed 10K, 50% free 2899K/5767K, external 2241K/2547K, paused 109ms
15:17:17.336 62 system_process DEBUG dalvikvm GC_EXPLICIT freed 380K, 45% free 4582K/8263K, external 1488K/1828K, paused 225ms
15:17:17.604 179 android.process.acore DEBUG dalvikvm GC_EXPLICIT freed 125K, 52% free 2754K/5703K, external 716K/1038K, paused 1809ms
15:17:17.795 1304 #1304 DEBUG dalvikvm GC_CONCURRENT freed 101K, 72% free 295K/1024K, external 0K/0K, paused 2ms+3ms
15:17:17.814 1304 #1304 DEBUG dalvikvm Debugger has detached; object registry had 1 entries
15:17:22.664 1318 #1318 DEBUG dalvikvm GC_CONCURRENT freed 102K, 69% free 320K/1024K, external 0K/0K, paused 3ms+2ms
15:17:22.664 1318 #1318 DEBUG dalvikvm Debugger has detached; object registry had 1 entries
15:17:26.485 322 com.svox.pico DEBUG dalvikvm GC_EXPLICIT freed 1K, 55% free 2530K/5511K, external 716K/1038K, paused 4622ms
15:17:31.024 261 com.android.quicksearchbox DEBUG dalvikvm GC_EXPLICIT freed 8K, 55% free 2589K/5703K, external 716K/1038K, paused 88ms
15:17:36.054 312 com.android.defcontainer DEBUG dalvikvm GC_EXPLICIT freed 8K, 54% free 2535K/5511K, external 716K/1038K, paused 91ms
15:17:41.104 1291 com.android.launcher DEBUG dalvikvm GC_EXPLICIT freed 56K, 49% free 2985K/5767K, external 2255K/2547K, paused 122ms
15:17:13.164 35 #35 DEBUG installd DexInv: --- BEGIN '/data/app/example.CustomAdapter-2.apk' ---
15:17:13.996 35 #35 DEBUG installd DexInv: --- END '/data/app/example.CustomAdapter-2.apk' (success) ---
15:17:14.644 35 #35 INFO installd move /data/dalvik-cache/data@app@example.CustomAdapter-2.apk@classes.dex -> /data/dalvik-cache/data@app@example.CustomAdapter-2.apk@classes.dex
15:17:17.554 35 #35 INFO installd unlink /data/dalvik-cache/data@app@example.CustomAdapter-1.apk@classes.dex
15:17:17.814 1304 #1304 DEBUG jdwp Got wake-up signal, bailing out of select
15:17:22.664 1318 #1318 DEBUG jdwp Got wake-up signal, bailing out of select
15:17:12.445 62 system_process INFO PackageManager Removing non-system package:example.CustomAdapter
15:17:12.844 62 system_process DEBUG PackageManager Scanning package example.CustomAdapter
15:17:12.844 62 system_process INFO PackageManager Package example.CustomAdapter codePath changed from /data/app/example.CustomAdapter-1.apk to /data/app/example.CustomAdapter-2.apk; Retaining data and using new
15:17:12.864 62 system_process INFO PackageManager Unpacking native libraries for /data/app/example.CustomAdapter-2.apk
15:17:13.996 62 system_process WARN PackageManager Code path for pkg : example.CustomAdapter changing from /data/app/example.CustomAdapter-1.apk to /data/app/example.CustomAdapter-2.apk
15:17:14.004 62 system_process WARN PackageManager Resource path for pkg : example.CustomAdapter changing from /data/app/example.CustomAdapter-1.apk to /data/app/example.CustomAdapter-2.apk
15:17:14.004 62 system_process DEBUG PackageManager Activities: example.CustomAdapter.MainActivity example.CustomAdapter.ChildActivity
15:17:14.644 62 system_process DEBUG PackageManager New package installed in /data/app/example.CustomAdapter-2.apk
15:17:12.084 62 system_process DEBUG PackageParser Scanning package: /data/app/vmdl-891675230.tmp
15:17:12.114 62 system_process INFO PackageParser example.CustomAdapter: compat added android.permission.WRITE_EXTERNAL_STORAGE android.permission.READ_PHONE_STATE
15:17:16.294 62 system_process WARN RecognitionManagerService no available voice recognition services found
/data/app/example.CustomAdapter-2.apk'
Что делать в этом случае?
-
- Сообщения: 103
- Зарегистрирован: 10 сен 2012, 11:58
Re: Урок 34. Хранение данных. SQLite
Работа приложения также отличается от того, что я делал до попытки внесения изменений в базу данных. Например, в LogCat не отображаются Logs.
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 34. Хранение данных. SQLite
По поводу поиска ID из базы. Не лучше ли в классе Bazar создать поле в котором записывать этот самый _ID?
А если по правильному, то нужно было использовать CursorAdapter.
Что касательно последнего вопроса. У Вас много лишней информации в логах, не могу ничего разобрать. Я бы посоветовал удалить приложение и установить его заново.
А если по правильному, то нужно было использовать CursorAdapter.
Что касательно последнего вопроса. У Вас много лишней информации в логах, не могу ничего разобрать. Я бы посоветовал удалить приложение и установить его заново.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
-
- Сообщения: 103
- Зарегистрирован: 10 сен 2012, 11:58
Re: Урок 34. Хранение данных. SQLite
Здравствуйте,
Вопрос относительно подключения к базе и использования курсора. Насколько я понял, после создания объекта для управления версиями БД new DBHelper(this) в методе onCreate(), закрытие базы данных лучше произвести в методе onDestroy(). В тоже время, курсор должен закрываться после каждого обращения с ним. Так ли это?
Связано ли сообщение close() was never explicitly called on database в LogCat с тем, что при выходе из Activity не была закрыта база в методе onDestroy()?
Спасибо.
Вопрос относительно подключения к базе и использования курсора. Насколько я понял, после создания объекта для управления версиями БД new DBHelper(this) в методе onCreate(), закрытие базы данных лучше произвести в методе onDestroy(). В тоже время, курсор должен закрываться после каждого обращения с ним. Так ли это?
Связано ли сообщение close() was never explicitly called on database в LogCat с тем, что при выходе из Activity не была закрыта база в методе onDestroy()?
Спасибо.
Re: Урок 34. Хранение данных. SQLite
ой давно я с курсорами не работал, но если память не изменяет то:1) если закрыть соединение с бд - закроется и курсор (соответственно он будет равен null); 2) в каких местах открывать и закрывать это уже на ваше усмотрение, роли не играет, просто главное следить за всем этим; 3) пока бд открыта то курсор думаю не зачем закрывать, смысла не вижу.
На счёт ошибок, лог какой то не полный, там много бреда dalvik'a который не нужен. Если падает то почему бы не пройтись дебагером и понять где падает?
На счёт ошибок, лог какой то не полный, там много бреда dalvik'a который не нужен. Если падает то почему бы не пройтись дебагером и понять где падает?
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 34. Хранение данных. SQLite
Здравствуйте! я новичок в java и Android, но мне предстоит написать довольно серьезный проект с базами данных. Я смотрела курсы (уроки) джава и андроида, чтобы иметь представление. Мне все было понятно, т.к. в каждом уроке код пишется в основном прямо в главном джава-файлике. Меня интересует следующее - как правильно строить проект, использующий базы данных - где должно что быть. Я только читала упоминание, что каждой таблице нужно создать свой класс- отдельный джава-файл. А остальное? как тут должна архитектура быть построена? куда нужно записывать переопределенный класс хэлпера, например, откуда его потом создавать? откуда должно создаваться соединение с базой данных? (у меня еще одно соединение будет с sqlserver.
Если кто-то может помочь - объясните, пожалуйста, попроще. Я попытаюсь разобраться. Не хочется сразу огород городить абы что и абы где.
Если кто-то может помочь - объясните, пожалуйста, попроще. Я попытаюсь разобраться. Не хочется сразу огород городить абы что и абы где.
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: Урок 34. Хранение данных. SQLite
Создаете контент провайдера, который держит соединение с бд, а к нему уже обращаетесь за данными.
Re: Урок 34. Хранение данных. SQLite
Olivka
Во-первых, начните с малого. То что вы видели уроки ничего не значит. У вас нету практики, а значит вылазка в огород ничего хорошего не принесёт.
Во-первых, начните с малого. То что вы видели уроки ничего не значит. У вас нету практики, а значит вылазка в огород ничего хорошего не принесёт.
Это не обязательно. Всё зависит от фантазии разработчика и кому как удобно.Olivka писал(а):только читала упоминание, что каждой таблице нужно создать свой класс- отдельный джава-файл.
Записывать в отдельный файл. Создавать можете при старте активити, а закрывать при переходе в стоп, или же создавать при каждом обращении к бд, в общем как вам понравится.Olivka писал(а):куда нужно записывать переопределенный класс хэлпера, например, откуда его потом создавать?
Как у вас осуществляется соединение с sqlserver? В любом случае соединения друг другу не помешают.Olivka писал(а):откуда должно создаваться соединение с базой данных? (у меня еще одно соединение будет с sqlserver).
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 34. Хранение данных. SQLite
Спасибо огромное за советы!
Задача такая (с краю). Нужно установить соединение с sqlserver и считать оттуда данные. Отобразить на экране списком. Пользователь выделяет нужные строчки. Скопировать выделенные данные в локальную таблицу БД (sqlite), предварительно ее создав. Показать на экране списком.
Для меня это уже очень сложно..
да, наверное, соединение с удаленной бд нужно создавать перед показом списка с этими данными, а закрывать сразу, как данные скопируются.. я так понимаю в событии oncreate активити - создавать, а закрывать, когда ей будет finish(), так?
Искала литературу, где было бы пошире отвещен вопрос про базы данных - ничего не нашла..
НУ и я о том же. Я начинаю не с малого, а с краю, т.к. с малого начинать некогдаrezak90 писал(а): Во-первых, начните с малого. То что вы видели уроки ничего не значит. У вас нету практики, а значит вылазка в огород ничего хорошего не принесёт.
буду использовать соединение jdbc. Читала, что его нужно где-то в эклипсе прописать. Где именно?rezak90 писал(а): Как у вас осуществляется соединение с sqlserver? В любом случае соединения друг другу не помешают.
Задача такая (с краю). Нужно установить соединение с sqlserver и считать оттуда данные. Отобразить на экране списком. Пользователь выделяет нужные строчки. Скопировать выделенные данные в локальную таблицу БД (sqlite), предварительно ее создав. Показать на экране списком.
Для меня это уже очень сложно..
да, наверное, соединение с удаленной бд нужно создавать перед показом списка с этими данными, а закрывать сразу, как данные скопируются.. я так понимаю в событии oncreate активити - создавать, а закрывать, когда ей будет finish(), так?
Искала литературу, где было бы пошире отвещен вопрос про базы данных - ничего не нашла..
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: Урок 34. Хранение данных. SQLite
вы так и не ответили как осуществляется связь с sqlserver'ом. Я имел в виду по какому протоколу. По http собираетесь обращаться?
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 34. Хранение данных. SQLite
нет, через ODBC
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: Урок 34. Хранение данных. SQLite
а можно не скромный вопрос? Архитектуру приложения вы придумывали или вам просто дали задание и делай как хочешь? Просто ODBC в андроиде это извращенство. Обращаться на прямую к sqlserver'y в андроиде, та и вообще в мобильных платформах не принято. Для этого дела на сервере создаётся апи, и все функции и обращения к бд на себя берёт сервер дабы не использовать ресурсы мобильного телефона. Если в самой java odbc/jdbc это ещё круто, то в андроиде это минное поле)))
Ладно, я отклонился от темы. На сколько я понял то это вам нужно будет не стандартными способами (не так как с SQLite), так как там свои java классы, а андроид не имеет своих классов для работы с jdbc/odbc.
Ладно, я отклонился от темы. На сколько я понял то это вам нужно будет не стандартными способами (не так как с SQLite), так как там свои java классы, а андроид не имеет своих классов для работы с jdbc/odbc.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена