IOS應用中關于SQLite 3類型系統
IOS應用中關于SQLite 3類型系統是本文要介紹的內容,主要是來了解并學習IOS應用中SQLite 的使用方法和技巧,關于SQLite 在IOS應用的操作本文有很詳細的講解,來看內容。
在IOS應用的客戶端存儲數據一般是存儲在SQLite3中,下面簡單介紹SQLite支持的數據類型,以及類型間相互關系。大多數數據庫使用靜態的嚴格的類型系統,列的類型在創建表的時候就已經指定了。SQLite使用動態的類型系統,列的類型由值決定。
SQLite具有的數據類型
- NULL:NULLvalue
Integer:值是signedinteger類型,大小可以是1,2,3,4,6,8bytes
REAL:浮點類型
TEXT:以UTF-8,UTF-16BEorUTF-16LE編碼存儲的字符類型
BLOB:二進制數據
其它數據類型說明
Integerprimarykey列是個例外??
布爾類型:SQLite中沒有定義布爾類型,而是以Integer存儲布爾值,0(false),1(true)
Dateandtime類型
SQLite中也沒有定義日期時間類型,日期時間可以用TEXT,REAL,orINTEGER存儲
TEXT:存儲為字符串("YYYY-MM-DDHH:MM:SS.SSS").
- REAL:asJuliandaynumbers,thenumberofdayssincenooninGreenwichonNovember24,4714B.C.accordingtotheprolepticGregoriancalendar.
- INTEGER:asUnixTime,thenumberofsecondssince1970-01-0100:00:00UTC.
SQLiteTypeAffinity(類型檢測)
用于自動檢測值的類型,以下列舉Affinity如何決定類型的規則
(1)如果類型聲明中有int,則使用INTEGERaffinity.
(2)如果類型聲明中有"CHAR","CLOB",or"TEXT",則使用Textaffinity
(3)如果類型聲明中有BLOB或沒有指定類型,則使用affinityNONE
(4)如果類型聲明中有"REAL","FLOA",or"DOUB",則使用REALaffinity
(5)否則使用Numericaffinity
類型比較NULL
memcmp函數原型
- intmemcmp(constvoid*ptr1,constvoid*ptr2,size_tnum);
比較兩個指針指向內存的前num個byte
比較之前的類型轉換
l(INTEGER,REALorNUMERIC)和(TEXTorNONE)比較,則TEXT,NONE會被轉換成NUMERIC
lTEXT和NONE比較,則NONE會被轉換成TEXT
其他情況直接比較。
小結:IOS應用中關于SQLite 3類型系統的內容介紹完了,希望通過IOS應用中SQLite 的操作內容的學習能對你有所幫助。