簡體   English   中英

帶有整數列的 SQLite 表存儲字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM