注意sqlite3和java的整数数据类型的区别
作为新手的我,没有考虑数据库和java的数据类型的对应上的区别:
sqlite3的数据类型和java数据类型对应上要小心,特别是整数类型。
java 中int类型4位存储,范围 -2^31到2^31-1,即-2147483648到2147483647
java 中long类型8位存储,范围-2^63到2^63-1,即--9223372036854775808到9223372036854775807
sqlite3的integer类型用1, 2, 3, 4, 6, or 8位存储。原文:
-
INTEGER. The value is a signed integer, stored in 1, 2, 3, 4, 6, or 8 bytes depending on the magnitude of the value.
所以java中byte,short,int,long类型表示的范围都在sqlite3的integer类型范围中。
现在可以看到sqlite3的integer不等于java的integer类型,因为表示范围不同。
如果sqlite3的integer类型表示的范围在-2147483648到2147483647间,那么java对应的用integer类型也可以,如果sqlite3的integer类型表示的范围超过了-2147483648到2147483647间,而位于-9223372036854775808到9223372036854775807间,那么java就必须用long类型表示。
喜欢简洁,远离繁琐