Android: Как я могу перенести ExecuteScalar на Java? - PullRequest
3 голосов
/ 08 сентября 2011

Метод SqlCommand.ExecuteScalar
Выполняет запрос и возвращает первый столбец первой строки в наборе результатов, возвращаемых запрос. Дополнительные столбцы или строки игнорируются.

Полагаю, это будет связано с интенсивным использованием дженериков.

Предположим, у меня есть SQLiteDatabase / Курсор объект.

Ответы [ 4 ]

2 голосов
/ 26 сентября 2011

У меня эта логика сработала:

public int ExecuteScalar(/* code...*/) {
    Cursor cursor = database.rawQuery(sql, selectionArgs);
    try {
        cursor.moveToNext();
        int val = cursor.getInt(0);
        cursor.close();
        return val;
    }   
    catch (Exception e) {
        /* code...*/
    }
    return -1;
}
2 голосов
/ 08 сентября 2011

Посмотрите на SQLLiteStatement

long simpleQueryForLong() Выполните инструкцию, которая возвращает таблицу 1 на 1 с числовым значением.

String simpleQueryForString() Выполнить инструкцию, которая возвращает таблицу 1 на 1 с текстовым значением.

0 голосов
/ 10 февраля 2018

Предоставление объекта базы данных db

long result = db.compileStatement("select count(*) from some_table").simpleQueryForLong();
0 голосов
/ 26 сентября 2011

Если вы получаете первичный ключ, вы можете использовать метод оператора getGeneratedKeys, который возвращает resultSet сгенерированных ключей после вставки.

...