2016-07-12 3 views
0

Я создаю приложение, где мне нужно хранить данные за каждый день, и было бы полезно, если бы я мог легко его фильтровать, поэтому я решил узнать о базах данных SQLite, найти учебник (несколько фактически), последовали за ним и в итоге всегда получали тот же результат - пустой курсор.SQLite-запросы всегда возвращают пустой курсор

enter public Day getDay(int year, int month, int day) { 
    Day ret = null; 

    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor c = db.rawQuery("SELECT '*' FROM '" + TABLE_DAYS + "'", null); 
    Log.d("DATA", "entries found: " + c.getCount()); 
    c.close(); 
    db.close(); 
    return ret; 
} 

Метод для вставки новой строки, кажется, быть функциональным, как она возвращается ожидаемое число, но даже несмотря на это называется просто после этого, он возвращает пустой курсор. Я прочитал много руководств и сообщений SO без поиска исправления. Я также пробовал метод .query (...) с тем же результатом.

+0

'' * ''? вы имеете в виду '*'? – njzk2

ответ

0

попытка удаления цитаты из SELECT * FROM

0

Использование db.rawQuery("SELECT * FROM " + TABLE_DAYS + "", null);

0

Заменить

Cursor c = db.rawQuery("SELECT '*' FROM '" + TABLE_DAYS + "'", null); 

С

Cursor c = db.rawQuery("SELECT * FROM "+ TABLE_DAYS ,null); 
+0

Я исправил ваше форматирование, вам больше не нужно его уничтожать. –

+0

@Damian Kozlak спасибо –

1

Может быть стоит использовать метод query() вместо rawQuery() в порядке на avo id будущих синтаксических ошибок. Следующее приведет к тому же результату, что и ваш rawQuery(), возвратив данные для всех строк.

Cursor c = db.query(TABLE_DAYS, null, null, null, null, null, null); 
c.getCount(); 
+0

да. Всегда используйте эти методы вместо того, чтобы пытаться самостоятельно писать SQL. – njzk2

0

Оказывается, ошибка была в другом месте - переданы неправильные параметры методу создания базы данных. Спасибо в любом случае за все ответы.

Смежные вопросы