Ich möchte eine Tabelle mit dem Spaltentyp Longanstelle von erstellen Integer. Ist es möglich?
Ich möchte eine Tabelle mit dem Spaltentyp Longanstelle von erstellen Integer. Ist es möglich?
Antworten:
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.
intund stellen Sie sicher, dass Sie durchgehend lange verwenden.
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);
Ich glaube nicht, dass es Typ Long gibt. Entweder können Sie INTEGER (oder) Numeric verwenden. Hier ist ein Link zu den unterstützten Datentypen http://www.sqlite.org/datatype3.html
Sein obiger Link zeigt eine 64-Bit-Ganzzahl oder im Wesentlichen eine lange, siehe auch Was ist der Unterschied zwischen SQLite-Ganzzahl-Datentypen wie int, integer, bigint usw.?
SQLIte legt die geeignete Ganzzahlbreite abhängig von Ihrer Eingabe fest
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