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?

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.


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


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.



3

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


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.