Existe o tipo Long no SQLite?

125

Eu quero criar uma tabela com o tipo de coluna em Longvez de Integer. É possível?

Alex Kapustian
fonte

Respostas:

220

A partir dos documentos SQLite

INTEGER . O valor é um número inteiro assinado, armazenado em 1, 2, 3, 4, 6 ou 8 bytes, dependendo da magnitude do valor.

Como longtem 8 bytes e INTEGERtambém pode salvar valores de 8 bytes, você pode usar INTEGER.

Inder Kumar Rathore
fonte
1
entrada i 1549251913000 e incompatibilidade quando recebendo a partir SQLite
Nanda Z
Verifique se você está digitando a transmissão por engano int, verifique se está usando por muito tempo.
Inder Kumar Rathore
20

Crie a coluna como um INTEGERtipo:

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

Coloque o longvalor na INTEGERcoluna:

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

Importante: recupere o valor do cursor comoLONG

Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_A, null);
long value = cursor.getLong(0);
Vasil Valchev
fonte
5

Você acabou de definir uma coluna com o tipo Inteiro. O SQLite define o comprimento da coluna para 1,2,4,8, dependendo da sua entrada.

Shnkc
fonte
3

O SQLIte definirá a largura inteira adequada, dependendo da sua entrada

DarkTemple
fonte
0

o INTEGER pode armazenar o comprimento, mas para obter o comprimento do cursor, deve fazer o seguinte:

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);
}

eu uso isso para armazenar timestamp no sqlite

Criss
fonte