2014-02-12 174 views
0

我有一個包含SQLite數據庫的Android應用程序。表中的一個字段是Integer類型,但由於某種原因,我一直可以將字符串保存至此。直到最近我還沒有意識到我這麼做。整數列包含字符串數據

該列名爲favourited,類型爲integer,我可以保存看起來像日期的字符串。是的,我的一個非常奇怪的實現,但請告訴我,如果你知道爲什麼它沒有拋出異常或什麼。

回答

1

documentation

SQLite的使用更一般的動態型系統。在SQLite中,值的數據類型與值本身相關聯,而不與其容器相關聯。 SQLite的動態類型系統向後兼容其他數據庫引擎的更常見的靜態類型系統,因爲在靜態類型數據庫上工作的SQL語句應該在SQLite中以相同的方式工作。但是,SQLite中的動態類型允許它執行傳統的嚴格類型數據庫中不可能的事情。

爲了最大化SQLite和其他數據庫引擎之間的兼容性,SQLite支持的列「類型親和力」的概念。列的類型親緣關係是存儲在該列中的數據的推薦類型。這裏的重要想法是,這種類型是推薦的,不是必需的。任何列都可以存儲任何類型的數據。只是有些列在給出選擇的情況下會傾向於使用一個存儲類而不是另一個。列的首選存儲類稱爲其「親和性」。

+0

嗯。非常有趣.....非常感謝你的亨利。 +1 – Subby

0

實際上SQLite將所有東西都存儲爲字符串。數字存儲爲「12345」。所以整數和其他列類型比可用的信息更豐富。

+0

這是不正確的。閱讀Henry在他的回答中提供的鏈接。 – laalto

相關問題