[英]SQLite table with integer column stores string
我在我的应用程序中发现了一些奇怪的东西。 我创建了一个名为type
的列的表,该列应存储整数:
db.execSQL("CREATE TABLE " + CellColumns.TABLE + " ("
+ CellColumns._ID + " INTEGER PRIMARY KEY,"
+ CellColumns.TYPE + " INTEGER," // <-- this
+ CellColumns.CELL_ID + " INTEGER,"
+ CellColumns.CITY_ID + " INTEGER,"
+ CellColumns.LOAD + " INTEGER,"
+ CellColumns.ORIENTATION + " INTEGER);");
读:
String type = c.getString(c.getColumnIndex(CellColumns.TYPE));
但不知何故,我总是将字符串存储到其中而没有任何问题(似乎我忘记了该列是用于整数的)。 还可以通过查询读取字符串。 列的这种动态“类型转换”是 sqlite 的一个特性吗?
从这里 :
大多数SQL数据库引擎(除了SQLite之外的每个SQL数据库引擎,据我们所知)都使用静态,严格的类型。 使用静态类型时,值的数据类型由其容器(存储值的特定列)确定。
SQLite使用更通用的动态类型系统。 在SQLite中,值的数据类型与值本身相关联,而不是与其容器相关联。 SQLite的动态类型系统向后兼容其他数据库引擎的更常见的静态类型系统,因为在静态类型数据库上工作的SQL语句应该在SQLite中以相同的方式工作。 但是,SQLite中的动态类型允许它执行传统的刚性类型数据库中无法实现的操作。
所以是的,这是sqlite的一个特性。 阅读我链接的整个页面,仔细阅读:)
你可以通过c.getInt()
, c.getDouble()
..等获得它
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.