Android 具有整数列存储字符串的SQLite表
我在申请表中发现了一些奇怪的东西。我创建了一个名为Android 具有整数列存储字符串的SQLite表,android,database,sqlite,types,Android,Database,Sqlite,Types,我在申请表中发现了一些奇怪的东西。我创建了一个名为type的列的表,该列应该存储整数: db.execSQL("CREATE TABLE " + CellColumns.TABLE + " (" + CellColumns._ID + " INTEGER PRIMARY KEY," + CellColumns.TYPE + " INTEGER," // <-- this + CellColumns.CELL_ID + " INTEGER," + CellCo
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);");
但不知何故,我总是毫无问题地将字符串存储到其中(似乎我忘记了此列是用于整数的)。使用查询读取字符串也很有效。列的这种动态“类型转换”是sqlite的一个特性吗 来自:
大多数SQL数据库引擎(据我们所知,除了SQLite之外的所有SQL数据库引擎)都使用静态的、严格的类型。对于静态类型,值的数据类型由其容器(存储值的特定列)确定
SQLite使用更通用的动态类型系统。在SQLite中,值的数据类型与值本身关联,而不是与其容器关联。SQLite的动态类型系统与其他数据库引擎更常见的静态类型系统向后兼容,因为在静态类型数据库上工作的SQL语句在SQLite中的工作方式应该相同。然而,SQLite中的动态类型允许它做一些在传统的严格类型化数据库中不可能做的事情
是的,这是sqlite的一个特性。阅读我链接的整个页面,仔细阅读:)你可以通过
c.getInt()
,c.getDouble()
获得它。。etc等认为我已经这么做了,似乎是很久以前的事了。非常感谢。也许是这样,但根本不能回答这个问题。
String type = c.getString(c.getColumnIndex(CellColumns.TYPE));