Есть ли в SQLite тип Long?

126

Я хочу создать таблицу с типом столбца Longвместо Integer. Является ли это возможным?

Алекс Капустян
источник

Ответы:

220

Из документации SQLite

INTEGER . Значение представляет собой целое число со знаком, хранящееся в 1, 2, 3, 4, 6 или 8 байтах в зависимости от величины значения.

Поскольку longэто 8 байт, а INTEGERтакже можно сохранять значения 8 байт, вы можете использовать INTEGER.

Индер Кумар Ратор
источник
1
Я ввожу 1549251913000 и несоответствие при получении из SQLite
Nanda Z
Пожалуйста, проверьте, не ошибочно ли вы вводите его int, убедитесь, что вы используете его как можно дольше.
Индер Кумар Ратор
20

Создайте столбец как INTEGERтип:

db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_A + "("
                + KEY + " INTEGER" + ")");

Поместите longзначение в INTEGERстолбец:

contentValues.put(KEY, object.getLongValue());
db.insert(TABLE_A, null, contentValues);

Важно: получить значение из курсора какLONG

Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_A, null);
long value = cursor.getLong(0);
Васил Валчев
источник
15

Я не думаю, что это долго. Вы можете использовать INTEGER (или) Numeric. Вот ссылка с поддерживаемыми типами данных http://www.sqlite.org/datatype3.html

коша
источник
5

Вы просто определяете столбец с целочисленным типом. SQLite устанавливает длину столбца 1,2,4,8 в зависимости от вашего ввода.

Shnkc
источник
3

SQLIte установит подходящую целочисленную ширину в зависимости от вашего ввода

DarkTemple
источник
0

INTEGER может хранить долго , но , чтобы получить длинные от курсора должны сделать так:

int type = cursor.getType(j);

String value = cursor.getString(j);
try {
       int intValue = Integer.parseInt(value);
       field.set(object, intValue);
    } catch (NumberFormatException e) {
       long longValue = Long.parseLong(value);
       field.set(object, longValue);
}

я использую это для хранения метки времени в sqlite

Criss
источник