Gibt es in SQLite den Typ Long?


125

Ich möchte eine Tabelle mit dem Spaltentyp Longanstelle von erstellen Integer. Ist es möglich?

Antworten:


220

Aus den SQLite-Dokumenten

INTEGER . Der Wert ist eine vorzeichenbehaftete Ganzzahl, die je nach Größe des Werts in 1, 2, 3, 4, 6 oder 8 Byte gespeichert wird.

Da longes 8 Byte ist und INTEGERauch Werte von 8 Bytes speichern kann, können Sie verwenden INTEGER.


1
Ich gebe 1549251913000 ein und stimme nicht überein, wenn ich es von SQLite bekomme
Nanda Z

Bitte überprüfen Sie, ob Sie versehentlich Casting eingeben, intund stellen Sie sicher, dass Sie durchgehend lange verwenden.
Inder Kumar Rathore

20

Erstellen Sie die Spalte als INTEGERTyp:

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

Tragen Sie den longWert in die INTEGERSpalte ein:

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

Wichtig: Rufen Sie den Wert vom Cursor als abLONG

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


5

Sie definieren einfach eine Spalte mit Integer-Typ. SQLite legt die Spaltenlänge abhängig von Ihrer Eingabe auf 1,2,4,8 fest.



3

SQLIte legt die geeignete Ganzzahlbreite abhängig von Ihrer Eingabe fest


0

Der INTEGER kann das Long speichern, aber um vom Cursor Long zu werden, sollte er Folgendes tun:

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

Ich benutze dies, um Zeitstempel in SQLite zu speichern

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.