Страница 2 из 11
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Добавлено: 11 сен 2012, 11:09
Roman
Добрый день!
Спасибо за уроки
Есть вопрос: в прошлом уроке мы сразу обращались к базе для считывания данных без присваивания
в чем может быть проблема если я не укажу
, а сразу напишу
Код: Выделить всё
Cursor c = db.query("mytable", columns, null, null, null, null, null);
вопрос возник потому что, когда уже есть база в прошлом уроке (повторно вызываем приложение) и мы делаем запрос всех данных из таблицы mytable то все равно получаем всю таблицу вне зависимости какое знаение у Cursor.
Спасибо!
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Добавлено: 11 сен 2012, 11:22
rezak90
собственно не понял в чём заключается вопрос. Разницы между объявлением Cursor'a как c = null и сразу выполнения запроса нету. В успешном случае query вернёт результат, в противном случае вернёт null.
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Добавлено: 11 сен 2012, 11:52
Roman
rezak90 писал(а):Разницы между объявлением Cursor'a как c = null и сразу выполнения запроса нету. В успешном случае query вернёт результат, в противном случае вернёт null.
Спасибо! Зато мне ваш ответ прояснил ситуацию: "разницы нет"
))
Возник еще один вопрос по поводу "sum(people) as people" в
Код: Выделить всё
columns = new String[] { "region", "sum(people) as people" };
правильно ли я понимаю это расшифровывается как "сумма данных people по столбцу people"? Где возможно почитать какие формы возможно записывать (искал на
http://developer.android.com но ничего путнего не сумел найти)?
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Добавлено: 11 сен 2012, 11:57
rezak90
правильно ли я понимаю это расшифровывается как "сумма данных people по столбцу people"?
да всё верно. На счёт почитать по какой тематики? если по запросам то это в сторону sql языка.
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Добавлено: 11 сен 2012, 13:45
math64
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Добавлено: 14 сен 2012, 16:08
Overdos
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Добавлено: 14 сен 2012, 16:18
rezak90
он же тебе пишет having cannot be resolved to a variable - нету такой переменной, или же она есть но не инициализирована
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Добавлено: 14 сен 2012, 17:26
Overdos
Блин, Люди!!! Ну что за ...? Я новичок - да! но делаю все упражнения точь в точь, и бывает что не получается...
Сделал 36 урок ошибок нет , а при запуске ни чего не работает!вот ошибки:
как я понимаю таблица с БД не создается, хотя и прописаны все методы.а еще красным написано что то с далвиком машиной связано ... помогите , если можно подробно! заранее спасибо ! )
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Добавлено: 14 сен 2012, 18:59
rezak90
здесь все новички, просто кто то до этого программировал на других языках и называются "новичками", а кто то не знает ни одного ЯП и называются они "зелёные новички" =)
на счёт ошибки. Я понимаю новичок, но хотя бы английский понять можно или в гуглтранслейт зайти и перевести. Там написано что это синтаксическая ошибка и не может понять from. Соответственно идём в эту запись и видим что у тебя: SELECT FROM mytable. Это от не знания sql-языка. после SELECT идёт перечисления столбцов в которых происходит выборка, если же поставить звёздочку * (будет выглядить так: SELECT * FROM mytable) то выборка происходит из всей таблицы.
З.Ы. тебя никто не пинает, это хорошо когда люди не молчат и задают вопросы и стыдного в этом ничего нету.
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Добавлено: 14 сен 2012, 19:28
Overdos
Спасибо большое! но не понимаю куда эту звездочку поставить ??? в коде нет такого ..((
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Добавлено: 14 сен 2012, 22:32
rezak90
действительно нету, ну может ошибка где то в db.query, в самом запросе.
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Добавлено: 14 сен 2012, 23:58
neoksi
Ну вообще-то оно само должно подставлять, список колонок задается в массиве columns, наверное, где-то там ошибка.
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Добавлено: 15 сен 2012, 17:05
Overdos
Вроде все правильно написано с : db.query и columns .. есть еще домыслы ? ) делал все как в уроке.
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Добавлено: 15 сен 2012, 17:32
rezak90
columns наверное пустой
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Добавлено: 15 сен 2012, 18:36
Overdos
String[] columns = null; ???
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Добавлено: 15 сен 2012, 19:00
rezak90
Overdos писал(а):String[] columns = null; ???
ну наверное, раз между select и from ничего нету.
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Добавлено: 27 сен 2012, 12:48
top
Есть такой вопрос, к которому не могу найти решения.
При открытии программы проверяется таблица, есть ли у нее значение, а именно текущая дата,
если нет то она вставляется в таблицу
код программы:
Код: Выделить всё
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv=(TextView)findViewById(R.id.tv);
edt=(EditText)findViewById(R.id.edt);
but=(Button)findViewById(R.id.but);
but.setOnClickListener(this);
edt.requestFocus();
mdb= new createdb(this);
//открытие БД
db = mdb.getWritableDatabase();
Cursor c_cd = null;
c_cd = db.query(TABLE_NAME, new String[]{DATE },ID+" =2 and "+DATE+" =?",new String[]{sdf.format(d)},null,null,null);
if (c_cd.getCount()==0)
{
mdb.insert_v(2,0.0f,Integer.parseInt(sdf.format(d)),db); // это функция, которая вставляет данные в таблицу.
}
затем данные таблицы выводятся на экран в ListView
при первоначальном открытии приложения выдается ошибка java.NullPointerException
, при повторном открытии ошибки уже нет и данные есть в таблице и они выводятся на экран( т.е. данные с текущей датой)
если меняю if (c_cd.getCount()==0) на if (c_cd==null) , то этот участок кода полностью пропускается при первом открытии и соответственно ничего не вставляется в таблицу, но приложение никаких ошибок не выдает.
как мне кажется курсор c_cd после выполнения запроса не является null, даже когда запрос выдает пустой результат, но тогда почему получается ошибка при сравнении (c_cd.getCount()==0) ?
Если предположить, что c_cd все таки остается null, тогда не понятно почему пропускается
условие if (c_cd==null)
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Добавлено: 27 сен 2012, 14:02
rezak90
пойдите в класс
createdb и проследите что происходит в методе query, что именно даёт null.
P.S.
текущая дата
у sqlite есть прекрасные методы для работы с датой, которые в том числе дают возможность сравнения а так же формат вывода и не придётся изобретать вот это
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Добавлено: 27 сен 2012, 17:21
top
Класс createdb наследует SQLiteOpenHelper.
На самом деле при первом открытии эта функция должна давать null
,т.к. текущей даты в таблице еще нет. Она должна как бы автоматически заполниться.
Вопрос почему программа вылетает при сравнении
if (c_cd.getCount() ==0) ? И полностью игнорирует условие if (c_cd==null)?
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Добавлено: 27 сен 2012, 17:49
rezak90
if (c_cd.getCount() ==0) - будет вылетать если курсор равен null, то есть инициализация объекта не была произведена.
И полностью игнорирует условие if (c_cd==null)? не знаю, возможно попробуйте проверять методом isNull