2010-09-30 23 views
7

我在应用程序中发现了一些东西。我创建了一个列的表名为type应存储整数:带整数列存储字符串的SQLite表

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的功能?

回答

14

here

大多数SQL数据库引擎(比SQLite的其他每一个SQL数据库引擎,据我们所知)使用静态,僵化打字。使用静态类型,值的数据类型由其容器确定 - 存储值的特定列。

SQLite使用更通用的动态类型系统。在SQLite中,值的数据类型与值本身相关联,而不与其容器相关联。 SQLite的动态类型系统向后兼容其他数据库引擎的更常见的静态类型系统,因为在静态类型数据库上工作的SQL语句应该在SQLite中以相同方式工作。但是,SQLite中的动态类型允许它执行传统的严格类型数据库中不可能的事情。

所以是的,这是sqlite的一个特性。阅读整个页面我链接,并仔细阅读:)

+0

想到我已经这样做了,似乎是太久以前。谢谢! – WarrenFaith 2010-09-30 11:59:27

相关问题