Вопросы по базе данных

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
g196et
Сообщения: 8
Зарегистрирован: 10 июл 2014, 14:27

Вопросы по базе данных

Сообщение g196et » 10 июл 2014, 15:26

Вопросов несколько, начнём.
1)Как узнать кол-во строк в базе данных?
2)Есть база данных с 3 стобцами id, date, diary. Первые 2 столбца мы узнаём из 1 активити, потом мы должны перейти во 2 активити и там по id вывести в textview 3 столбец (все 3 значения в 1 строке). Сообственно и вопрос, как это значение нам достать из бд?
По базе данных вроде бы уроки я просмотрел, но этой инфы не нашёл.
Новичёк

finberg
Сообщения: 51
Зарегистрирован: 11 мар 2013, 14:20

Re: Вопросы по базе данных

Сообщение finberg » 10 июл 2014, 15:55

1. ПолучаемCursor и вызываем его метод getCount()
2. Опять же получаем курсор, только делаем выборку с условием, допустим по id.
Все есть в уроках

g196et
Сообщения: 8
Зарегистрирован: 10 июл 2014, 14:27

Re: Вопросы по базе данных

Сообщение g196et » 10 июл 2014, 17:22

В уроках показана выборка, но там всё записывается в логи, а мне надо в textview, в другом активити.
Новичёк

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

Re: Вопросы по базе данных

Сообщение Foenix » 10 июл 2014, 17:28

g196et писал(а):Вопросов несколько, начнём.
1)Как узнать кол-во строк в базе данных?
2)Есть база данных с 3 стобцами id, date, diary. Первые 2 столбца мы узнаём из 1 активити, потом мы должны перейти во 2 активити и там по id вывести в textview 3 столбец (все 3 значения в 1 строке). Сообственно и вопрос, как это значение нам достать из бд?
По базе данных вроде бы уроки я просмотрел, но этой инфы не нашёл.
в базе данных строк нет, в ней есть таблицы.
Узнать сколько строчек в таблице - можно запросом. Select count (*) from ... where ...
по второму пункту не понятно что вы хотите.
R.id.team

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

g196et
Сообщения: 8
Зарегистрирован: 10 июл 2014, 14:27

Re: Вопросы по базе данных

Сообщение g196et » 10 июл 2014, 17:47

Foenix писал(а): Узнать сколько строчек в таблице - можно запросом. Select count (*) from ... where ...
Я только 4 день изучаю программирование под андроид, так что можно объяснять объясните пожалуйста что на месте троеточия ставить? И * это имя таблицы?
Foenix писал(а): по второму пункту не понятно что вы хотите.
Представим что у нас есть 3 поля ввода id, date, diary которые передают значения в одноименные столбцы, после заполнения имею примерно такую таблицу:
Изображение
Затем я в первом активити например выбираю "Вывести по id=" 1 (например), у меня должно открыться второе активити, где в textview будет написано nadpis, если я выберу id=2 то будет написано slova, если id=3 то будет написано text
Новичёк

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

Re: Вопросы по базе данных

Сообщение Donart » 10 июл 2014, 17:59

Что Вам мешает реализовать тоже самое во второй активтии, активити - это активити, БД одна, обращайтесь к ней хоть из 10-й активити. Вынесете в отдельный класс реализую работы с БД. Используйте ContentProvider, он для этого создан, уроки есть на сайте.

g196et
Сообщения: 8
Зарегистрирован: 10 июл 2014, 14:27

Re: Вопросы по базе данных

Сообщение g196et » 10 июл 2014, 18:28

Donart писал(а):Что Вам мешает реализовать тоже самое во второй активтии, активити - это активити, БД одна, обращайтесь к ней хоть из 10-й активити. Вынесете в отдельный класс реализую работы с БД. Используйте ContentProvider, он для этого создан, уроки есть на сайте.
То есть после того как я через query найду нужное значение, я должен использовать ContentProvider, чтобы записать это значение в TextView?
Новичёк

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

Re: Вопросы по базе данных

Сообщение altwin » 10 июл 2014, 18:47

g196et писал(а): Я только 4 день изучаю программирование под андроид, так что можно объяснять объясните пожалуйста что на месте троеточия ставить? И * это имя таблицы?
Вам еще рано начинать изучать android, начните с этого: http://sql.learncodethehardway.org/book/ Поом java И потом уже android... Хотя судя по тому что вам не знакомы основы sql, следует начать с этого - SIP

P.S. пропуск любого из этих 3-х пунктов вызовет большие проблемы у любого... и любому придется к этому возврщаться в том или ином виде.
Изображение

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

Re: Вопросы по базе данных

Сообщение Donart » 10 июл 2014, 19:10

ContentProvider - это просто способ доступа к БД, он не связан с Вашими View :), если вы уже нашли Ваши значения, то просто вызовите setText на TextView :? . Но лучше воспользуйтесь советом из поста выше, и потратьте время хотя бы на основы языка , так будет лучше и проще потом, чем сразу пытаться учить все разом.
PS Проходите уроки последовательно, Вы сами поймете когда остановиться(можно не останавливаться) и что Вам нужно ;) .

g196et
Сообщения: 8
Зарегистрирован: 10 июл 2014, 14:27

Re: Вопросы по базе данных

Сообщение g196et » 10 июл 2014, 20:02

Всем большое спасибо!
Хотя Вопрос о подсчёте строк всё ещё остался. Пытался делать так
Последний раз редактировалось g196et 10 июл 2014, 21:46, всего редактировалось 1 раз.
Новичёк

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

Re: Вопросы по базе данных

Сообщение Foenix » 10 июл 2014, 21:42

да у тебя вообще код не в тему, удаляй его)) ни одной буквы не правильно))
это ж запрос не туды, какой резалтсет, это ж на сервер запрос. Или у тебя база на сервере??
R.id.team

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

g196et
Сообщения: 8
Зарегистрирован: 10 июл 2014, 14:27

Re: Вопросы по базе данных

Сообщение g196et » 10 июл 2014, 21:49

Foenix писал(а): Или у тебя база на сервере??
Никак нет, не на сервере, код удалил
Новичёк

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

Re: Вопросы по базе данных

Сообщение Foenix » 10 июл 2014, 21:57

тогда читай уроки, как тебе советовали. Нахрапом такую тему не взять, увы :(
R.id.team

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

g196et
Сообщения: 8
Зарегистрирован: 10 июл 2014, 14:27

Re: Вопросы по базе данных

Сообщение g196et » 11 июл 2014, 12:36

Решил проблему так:[syntax=java5]Cursor c = db.query("mytable", null, null, null, null, null, null);
int count;
count=c.getCount();[/syntax]
Новичёк

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

Re: Вопросы по базе данных

Сообщение Foenix » 11 июл 2014, 12:46

чтобы узнать 1 цифру, не нужно лопатить весь курсор и выбирать его. Для этого есть язык sql. Я запрос тебе давала
select count(*) from mytable - если тебе нужно прсто все записи посчитать.
разберись как этот запрос задать в query. В уроках это есть.
Если ты будешь при подобных вещах доставать полную таблицу в курсор а потом ее лопатить в коде с помощью java - это будет крайне медленно и такой код лучше вообще никому не показывать. Это все равно, чтобы узнать произведение ты будешь организовывать циклы и складывать.
R.id.team

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

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

Re: Вопросы по базе данных

Сообщение Foenix » 11 июл 2014, 12:47

count=c.getCount(); допустимо лишь в том случае, когда тебе нужно не просто посчитать записи а вообще нужен для работы данный курсор с. Тогда да.
R.id.team

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

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

Re: Вопросы по базе данных

Сообщение KamiSempai » 11 июл 2014, 12:57

Foenix писал(а):чтобы узнать 1 цифру, не нужно лопатить весь курсор и выбирать его. Для этого есть язык sql. Я запрос тебе давала
select count(*) from mytable - если тебе нужно прсто все записи посчитать.
разберись как этот запрос задать в query. В уроках это есть.
Если ты будешь при подобных вещах доставать полную таблицу в курсор а потом ее лопатить в коде с помощью java - это будет крайне медленно и такой код лучше вообще никому не показывать. Это все равно, чтобы узнать произведение ты будешь организовывать циклы и складывать.
Еще и курсор не закрывает.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

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

Re: Вопросы по базе данных

Сообщение Foenix » 11 июл 2014, 13:03

ну да, надо вообще-то каждый раз проверять курсор на null и закрывать желательно
R.id.team

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

g196et
Сообщения: 8
Зарегистрирован: 10 июл 2014, 14:27

Re: Вопросы по базе данных

Сообщение g196et » 11 июл 2014, 13:50

KamiSempai писал(а): Еще и курсор не закрывает.
Курсор закрыт дальше в коде, он мне ещё нужен был ;)
Новичёк

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

Re: Вопросы по базе данных

Сообщение altwin » 11 июл 2014, 15:16

кто -то хочет курсор.. а кто -то select *... давайте никого не обижать? :
[syntax=java5]public int getTaskCount(long tasklist_Id) {

SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor= db.rawQuery("SELECT COUNT (*) FROM " + TABLE_TODOTASK + " WHERE " + KEY_TASK_TASKLISTID + "=?",
new String[] { String.valueOf(tasklist_Id) });
int count = 0;
if(null != cursor)
if(cursor.getCount() > 0){
cursor.moveToFirst();
count = c.getInt(0);
}
cursor.close();
}

db.close();
return count;[/syntax]
:mrgreen:
Изображение

Ответить