iOS SQLite3的使用方法和技巧有哪些
发布网友
发布时间:2022-04-23 15:12
我来回答
共1个回答
热心网友
时间:2022-04-07 18:26
以下介绍iOS SQLite3支持的数据类型,以及类型间相互关系。大多数数据库使用静态的严格的类型系统,列的类型在创建表的时候就已经指定了。SQLite使用动态的类型系统,列的类型由值决定。
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
http://mobile.51cto.com/iphone-321872.htm
(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 SQLite3具有的数据类型
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)
以上是iOS SQLite3类型系统的内容,希望会对ios开发者有所帮助。