SQLite 中有 Long 类型吗?

我想创建一个列类型为 Long而不是 Integer的表。这可能吗?

103226 次浏览

我不认为有长的类型。可以使用 INTEGER (或) Numeric。下面是支持的数据类型 http://www.sqlite.org/datatype3.html的链接

他上面的链接描绘了一个64位整数或本质上是一个长的,也可以看 SQLite 整数数据类型之间的区别是什么?

在 Android 中使用的 SQLite 版本?

您只需定义一个 Integer 类型的列。 SQLite 根据您的输入将列长度设置为1、2、4、8。

来自 SQLite 文档

INTEGER .该值是一个有符号整数,根据值的大小以1、2、3、4、6或8字节的形式存储。

因为 long是8字节,而且 INTEGER也可以保存8字节的值,所以可以使用 INTEGER

SQLite 将根据您的输入设置合适的整数宽度

将列创建为 INTEGER类型:

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

long值放入 INTEGER列:

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

重要提示: 从光标中检索值作为 LONG

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

整数可以存储 很长,但是要从 光标获得长度,应该这样做:

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

我用这个在 斯克莱特中存储 时间戳