SQLite 中是不是有 Long 类型?
Posted
技术标签:
【中文标题】SQLite 中是不是有 Long 类型?【英文标题】:Is there type Long in SQLite?SQLite 中是否有 Long 类型? 【发布时间】:2012-01-30 03:27:00 【问题描述】:我想创建一个列类型为Long
而不是Integer
的表。可能吗?
【问题讨论】:
【参考方案1】:来自SQLite docs
整数。该值是一个有符号整数,根据值的大小存储在 1、2、3、4、6 或 8 个字节中。
由于long
是8字节,INTEGER
也可以保存8字节的值,所以可以使用INTEGER
。
【讨论】:
我输入 1549251913000 从 SQLite 获取时不匹配 请检查您是否错误地将其转换为int
,确保您始终使用long。【参考方案2】:
将列创建为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);
【讨论】:
和一直使用INTEGER
相比有什么区别?【参考方案3】:
我认为没有 long 类型。您可以使用 INTEGER(或)Numeric。这是支持的数据类型的链接http://www.sqlite.org/datatype3.html
【讨论】:
【参考方案4】:他上面的链接描述了一个 64 位整数或本质上是长的,另见 What is the difference between SQLite integer data types like int, integer, bigint, etc.?
和 Version of SQLite used in android?
【讨论】:
【参考方案5】:您只需定义一个整数类型的列。 SQLite 根据您的输入将列长度设置为 1,2,4,8。
【讨论】:
【参考方案6】:SQLIte 将根据您的输入设置合适的整数宽度
【讨论】:
【参考方案7】: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);
我用它来存储 timestamp 在 sqlite
【讨论】:
以上是关于SQLite 中是不是有 Long 类型?的主要内容,如果未能解决你的问题,请参考以下文章
SQLite 中的 NUMERIC 和 INTEGER 类型是不是完全相同?