如何使用Sqlite3数据库 iOS Sqlite3数据类型

lierenwf
lierenwf 这家伙很懒,还没有设置简介...

0 人点赞了该文章 · 53 浏览

如何使用Sqlite3数据库 iOS Sqlite3数据类型

    在iOS应用的客户端存储数据一般是存储在SQLite3中。在进行数据库Sql操作之前,首先有个问题需要说明,就是Sqlite的数据类型,和其他的数据库不同,Sqlite支持的数据类型有他自己的特色,这个特色有时会被认为是一个潜在的缺点,但是这个问题并不在我们的ios开发讨论范围之内。
如何使用Sqlite3数据库    Sqlite3数据类型及存储类
    每个存放在sqlite数据库中(或者由这个数据库引擎操作)的值都有下面中的一个存储类:
   (1)NULL,值是NULL
   (2)INTEGER,值是有符号整形,根据值的大小以1,2,3,4,6或8字节存放
   (3)REAL,值是浮点型值,以8字节IEEE浮点数存放
   (4)TEXT,值是文本字符串,使用数据库编码(UTF-8,UTF-16BE或者UTF-16LE)存放
   (5)BLOB,只是一个数据块,完全按照输入存放(即没有准换)
    注:①Sqlite没有单独的布尔存储类型,它使用INTEGER作为存储类 型,0为false,1为true
            ②Sqlite没有另外为存储日期和时间设定一个存储类集,内置的sqlite日期和时间函数能够将日期和时间以TEXT,REAL或INTEGER形式存放
      TEXT 作为IS08601字符串("YYYY-MM-DD HH:MM:SS.SSS")
      REAL 从格林威治时间11月24日,4174 B.C中午以来的天数
      INTEGER 从 1970-01-01 00:00:00 UTC以来的秒数
    SQLiteTypeAffinity(类型检测)
    用于自动检测值的类型,以下列举Affinity如何决定类型的规则
    (1)如果类型声明中有"CHAR","CLOB",or"TEXT",则使用Textaffinity
    (2)如果类型声明中有int,则使用INTEGERaffinity.
    (3)如果类型声明中有"REAL","FLOA",or"DOUB",则使用REALaffinity
    (4)如果类型声明中有BLOB或没有指定类型,则使用affinityNONE
    (5)否则使用Numericaffinity
    类型比较NULL
    memcmp函数原型
    intmemcmp(constvoid*ptr1,constvoid*ptr2,size_tnum); 
    比较两个指针指向内存的前num个byte
    比较之前的类型转换
    l(INTEGER,REALorNUMERIC)和(TEXTorNONE)比较,则TEXT,NONE会被转换成NUMERIC
    lTEXT和NONE比较,则NONE会被转换成TEXT
    其他情况直接比较。
    值得注意的是大多数的数据库在数据类型上都有严格的限制,在建立表的时候,每一列都必须制定一个数据类型,只有符合该数据类型的数据可以被保存在这一列当中。而在 Sqlite 2.X中,数据类型这个属性只属于数据本生,而不和数据被存在哪一列有关,也就是说数据的类型并不受数据列限制(有一个例外:INTEGER PRIMARY KEY,该列只能存整型数据)。希望通过iOS SQLite的操作内容的学习能对你ios应用开发有所帮助。

发布于 2022-09-29 17:01

免责声明:

本文由 lierenwf 原创或收集发布于 火鲤鱼 ,著作权归作者所有,如有侵权可联系本站删除。

火鲤鱼 © 2024 专注小微企业服务 冀ICP备09002609号-8