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