Y a-t-il du type Long dans SQLite?

126

Je souhaite créer une table avec le type de colonne Longau lieu de Integer. C'est possible?

Alex Kapustian
la source

Réponses:

220

À partir de la documentation SQLite

INTEGER . La valeur est un entier signé, stocké dans 1, 2, 3, 4, 6 ou 8 octets en fonction de l'amplitude de la valeur.

Depuis long8 octets et INTEGERpeut également enregistrer des valeurs de 8 octets, vous pouvez utiliser INTEGER.

Inder Kumar Rathore
la source
1
Je saisis 1549251913000 et une incompatibilité lors de l'obtention de SQLite
Nanda Z
Veuillez vérifier si vous avez tapé par erreur le cast int, assurez-vous que vous utilisez longtemps.
Inder Kumar Rathore
20

Créez la colonne en tant que INTEGERtype:

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

Mettez la longvaleur dans la INTEGERcolonne:

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

Important: récupérez la valeur du curseur commeLONG

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

Vous définissez simplement une colonne de type Integer. SQLite définit la longueur de la colonne sur 1,2,4,8 en fonction de votre entrée.

Shnkc
la source
3

SQLIte définira une largeur entière appropriée en fonction de votre entrée

DarkTemple
la source
0

la ENTIER peut stocker la longue mais pour obtenir longtemps du curseur devrait faire comme ceci:

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

j'utilise ceci pour stocker l' horodatage dans sqlite

Criss
la source