Как получить значение столбца из курсора sqlite? - PullRequest
18 голосов
/ 23 февраля 2012

Я пытаюсь получить значение столбца от курсора, этот столбец создается во время выполнения вычислениями в запросе, я получаю нулевое значение этого столбца, я могу получить значение всех других существующих столбцовв таблице SQLite.

Я выполняю тот же запрос в редакторе SQLite, он также показывает значение сгенерированного столбца в наборе результатов.

Почему это дает нулевое значение при извлечении его из курсора?

Ответы [ 5 ]

57 голосов
/ 23 февраля 2012

Очень просто, вы можете получить его одним из следующих способов

String id = cursor.getString( cursor.getColumnIndex("id") ); // id is column name in db

или

String id = cursor.getString( cursor.getColumnIndex(0)); // id is first column in db
3 голосов
/ 09 июля 2012

Имена столбцов курсора чувствительны к регистру, убедитесь, что вы соответствуете регистру, указанному в имени псевдонима БД или столбца

2 голосов
/ 15 октября 2015
  1. Если вы не знаете индекс столбца в запросе выбора, выполните следующие действия:

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

    создать класс Database Costant с именем «DBConstant.java» и определить поля таблицы

    public static final String ID = "id";

    Затем получить значение от курсора,

    cursor.getString (cursor.getColumnIndex (DBConstant.ID));

    cursor.getColumnIndex (имя поля);он возвращает индекс столбца поля в выбранной вами инструкции cursor.getString (индекс столбца).он возвращает значение, которое находится в этом столбце

  2. Если вы знаете индекс столбца в вашем запросе выбора,

    cursor.getString (0);

0 голосов
/ 22 июня 2019

В Android Studio 3.4.1 (я использую Kotlin , но здесь это не имеет никакого значения), я обнаружил очень странное поведение.

Например:

Cursor c = db.rawQuery("Select IDH, ID, NOME, CONTEUDO from CalcHome 
           Inner Join Calcs using(id)", null)

Имена столбцов регистрировались жестко, независимо от регистра имен полей в Select.Компонент массива c.columnNames[0] равен Idh, а не IDH

Итак

int a = c.getInt(c.getColumnIndex("IDH")) // gives a runtime error.

Но

int a = c.getInt(c.getColumnIndex("Idh")) // works!
0 голосов
/ 26 марта 2019

Если вы хотите получить строковое значение

String id = cursor.getString( cursor.getColumnIndex("name") ); // id is column name in db
or

String id = cursor.getString( cursor.getColumnIndex(0)); 

Если вы хотите получить целочисленное значение

String id = cursor.getInt( cursor.getColumnIndex("id") ); // id is column name in db
or

String id = cursor.getInt( cursor.getColumnIndex(0)); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...