Voglio creare una tabella con il tipo di colonna Long
invece di Integer
. È possibile?
Voglio creare una tabella con il tipo di colonna Long
invece di Integer
. È possibile?
Risposte:
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 INTEGER
può anche salvare valori di 8 byte, è possibile utilizzare INTEGER
.
int
, assicurarsi di utilizzarlo a lungo.
Crea la colonna come INTEGER
tipo:
db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_A + "("
+ KEY + " INTEGER" + ")");
Metti il long
valore nella INTEGER
colonna:
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);
Non credo che ci sia un tipo lungo. Puoi usare INTEGER (o) Numeric. Ecco il collegamento con i tipi di dati supportati http://www.sqlite.org/datatype3.html
Il suo collegamento sopra mostra un intero a 64 bit o Essenzialmente un lungo, vedi anche Qual è la differenza tra i tipi di dati interi SQLite come int, integer, bigint, ecc.?
SQLIte imposterà la larghezza intera adatta in base all'input
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