IOS應用中關(guān)于SQLite 3類型系統(tǒng)
IOS應用中關(guān)于SQLite 3類型系統(tǒng)是本文要介紹的內(nèi)容,主要是來了解并學習IOS應用中SQLite 的使用方法和技巧,關(guān)于SQLite 在IOS應用的操作本文有很詳細的講解,來看內(nèi)容。
在IOS應用的客戶端存儲數(shù)據(jù)一般是存儲在SQLite3中,下面簡單介紹SQLite支持的數(shù)據(jù)類型,以及類型間相互關(guān)系。大多數(shù)數(shù)據(jù)庫使用靜態(tài)的嚴格的類型系統(tǒng),列的類型在創(chuàng)建表的時候就已經(jīng)指定了。SQLite使用動態(tài)的類型系統(tǒng),列的類型由值決定。
SQLite具有的數(shù)據(jù)類型
- NULL:NULLvalue
Integer:值是signedinteger類型,大小可以是1,2,3,4,6,8bytes
REAL:浮點類型
TEXT:以UTF-8,UTF-16BEorUTF-16LE編碼存儲的字符類型
BLOB:二進制數(shù)據(jù)
其它數(shù)據(jù)類型說明
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如何決定類型的規(guī)則
(1)如果類型聲明中有int,則使用INTEGERaffinity.
(2)如果類型聲明中有"CHAR","CLOB",or"TEXT",則使用Textaffinity
(3)如果類型聲明中有BLOB或沒有指定類型,則使用affinityNONE
(4)如果類型聲明中有"REAL","FLOA",or"DOUB",則使用REALaffinity
(5)否則使用Numericaffinity
類型比較NULL
memcmp函數(shù)原型
- intmemcmp(constvoid*ptr1,constvoid*ptr2,size_tnum);
比較兩個指針指向內(nèi)存的前num個byte
比較之前的類型轉(zhuǎn)換
l(INTEGER,REALorNUMERIC)和(TEXTorNONE)比較,則TEXT,NONE會被轉(zhuǎn)換成NUMERIC
lTEXT和NONE比較,則NONE會被轉(zhuǎn)換成TEXT
其他情況直接比較。
小結(jié):IOS應用中關(guān)于SQLite 3類型系統(tǒng)的內(nèi)容介紹完了,希望通過IOS應用中SQLite 的操作內(nèi)容的學習能對你有所幫助。