SQLite中有Long类型吗?

4c8rllxm  于 2023-08-06  发布在  SQLite
关注(0)|答案(7)|浏览(264)

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

soat7uwm

soat7uwm1#

来自SQLite文档

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

由于long是8字节,INTEGER也可以保存8字节的值,因此可以使用INTEGER

qeeaahzv

qeeaahzv2#

将列创建为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);

eqqqjvef

eqqqjvef3#

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

zazmityj

zazmityj5#

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

bcs8qyzn

bcs8qyzn6#

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

v440hwme

v440hwme7#

INTEGER可以存储long,但要从cursor获取long,应该这样做:

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

字符串
我用它来存储timestampsqlite

相关问题