C'è il tipo Long in SQLite?


126

Voglio creare una tabella con il tipo di colonna Longinvece di Integer. È possibile?

Risposte:


220

Dai documenti SQLite

INTEGER . Il valore è un numero intero con segno, memorizzato in 1, 2, 3, 4, 6 o 8 byte a seconda della grandezza del valore.

Poiché longè di 8 byte e INTEGERpuò anche salvare valori di 8 byte, è possibile utilizzare INTEGER.


1
ho inserito 1549251913000 e una mancata corrispondenza quando lo ottengo da SQLite
Nanda Z

Si prega di verificare se si sta digitando erroneamente il casting su int, assicurarsi di utilizzarlo a lungo.
Inder Kumar Rathore

20

Crea la colonna come INTEGERtipo:

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

Metti il longvalore nella INTEGERcolonna:

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

Importante: recupera il valore dal cursore comeLONG

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


5

Devi solo definire una colonna con il tipo Integer. SQLite imposta la lunghezza della colonna su 1,2,4,8 a seconda dell'input.



3

SQLIte imposterà la larghezza intera adatta in base all'input


0

L' INTEGER può memorizzare il long ma per ottenere long dal cursore dovrebbe fare così:

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

lo uso per memorizzare il timestamp in sqlite

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.