loading请求处理中...

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

2021-12-01 02:26:46 阅读 9916次 标签: 开发 作者: anyi
    在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应用开发有所帮助。
(一品威客 anyi)
Tag: 数据类型

APP开发公司推荐

成为一品威客服务商,百万订单等您来有奖注册中

留言( 展开评论

快速发任务

价格是多少?怎样找到合适的人才?

官方顾问免费为您解答

 
APP开发相关任务
DESIGN TASK 更多
区块链交易所的ui 二次开发

¥1000 已有2人投标

文件处理应用程序开发

¥5000 已有0人投标

车辆3D模型展示开发

¥5000 已有0人投标

数据展示网站开发

¥10000 已有6人投标

电视机顶盒安装包软件开发

¥20000 已有2人投标

sketchup插件开发

¥50000 已有0人投标