Вернуть количество записей в переменной Sqlite, Android, Java - PullRequest
5 голосов
/ 28 августа 2010

Моя конечная цель - ограничить количество записей, которые можно создавать, чтобы иметь пробную версию моего приложения. Я думаю, что могу сделать это довольно просто, возвращая переменную int в выражении sqlite count и используя простой оператор IF для определения необходимости создания новой записи.

Я звоню так:

int jcount = 0;
            mDbHelper.countjournals(jcount);

Сейчас я пытаюсь выполнить это

 public int countjournals(int jcount){
             mDb.execSQL(jcount + " = SELECT COUNT(*) FROM "+DATABASE_JOURNAL_TABLE);
            return jcount;
        }

ошибка, которую я получаю:


08-27 22:42:32.417: ERROR/AndroidRuntime(3976): android.database.sqlite.SQLiteException: near "0": syntax error: 0 = SELECT COUNT(*) FROM journals

Ответы [ 4 ]

14 голосов
/ 28 августа 2010

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

  public long countjournals() {

            return DatabaseUtils.queryNumEntries(mDb,DATABASE_JOURNAL_TABLE);

        }
6 голосов
/ 28 августа 2010
public int countjournals() {
    SQLiteStatement dbJournalCountQuery;
    dbJournalCountQuery = mDb.compileStatement("select count(*) from" + DATABASE_JOURNAL_TABLE);
    return (int) dbJournalCountQuery.simpleQueryForLong();
}
3 голосов
/ 28 августа 2010

Ваш запрос неверен, лучший способ сделать то, что вам нужно, это:

    public int countjournals() {
        Cursor dataCount = mDb.rawQuery("select count(*) from" + DATABASE_JOURNAL_TABLE, null);
        dataCount.moveToFirst();
        int jcount = dataCount.getInt(0);
        dataCount.close();
        return jcount;
    }

Примечание: также обратите внимание, что вы не можете использовать примитивные переменные в качестве ссылок (и из вашего кода это выглядит как выВы пытаетесь это сделать), также вы не можете передать ссылки на запросы SQLite.Вместо этого вам просто нужно присвоить метод (запрос) результат вашей переменной.

1 голос
/ 05 апреля 2011

Просто вставьте пробел после from и он начнет работать .....

Cursor dataCount = mDb.rawQuery("select count(*) from " + DATABASE_JOURNAL_TABLE, null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...