iOS - SQLite 数据库存储

本文介绍了SQLite数据库的基础知识,包括其在iOS中的使用,以及SQLite的操作方法。接着,详细讲解了iOS自带SQLite API的使用步骤。然后,重点讨论了fmdb这一方便的SQLite封装库,包括其主要类的功能和使用方法。此外,还提到了多线程环境下使用fmdb的注意事项。最后,提及了其他如PlausibleDatabase和sqlitepersistentobjects等SQLite第三方封装库的简要介绍。
摘要由CSDN通过智能技术生成

1、SQLite 数据库

  • SQLite 是一种轻型的嵌入式数据库,安卓和 iOS 开发使用的都是 SQLite 数据库。它占用资源非常低,在嵌入式设备中,可能需要几百 K 的内存数据就够了。他的处理速度比 Mysql、PostgreSQL 这两款著名的数据库都要快。数据库的存储和 Excel 很像,以表(table)为单位。表由多个字段(列、属性、column)组成,表里面的每一行数据称为记录。数据库操作包含打开数据库、创建表,表的增、删、改、查。

  • SQL(Structured Query Language)结构化查询语言,SQL 是一种对数据库中的数据进行定义和操作的语言。使用 SQL 语言编写出来的句子/代码叫 SQL 语句,在程序运行过程中,想要操作(增删改查,CRUD)数据库中的数据,必须使用 SQL 语句。SQL 语句不区分大小写,每句语句都必须以分号结尾。

  • SQL 中常用的关键字有 select、insert、update、delete、from、create、where、desc、orderby、table,数据库中不可以使用关键字来命名表、字段。SQL 语句中用 ?来作为占位符,不管字段是何种类型。

  • SQLite 语句的种类:
    • 数据定义语句(DDL:Data Definition Language):包括 create 和 drop 等操作,在数据库中创建新表或删除表(create table 或 drop table)。
    • 数据操作语句(DML:Data Manipulation Language):包括 insert、update、delete 等操作,上面的三种操作分别用于添加、修改、删除表中的数据。
    • 数据查询语句(DQL:Data Query Language):可以用于查询获得表中的数据,关键字 select 是 SQL(也是所有 SQL)用的最多的操作,其他 DQL 常用的关键字有 where、order by、group by 和 having。
  • 注意:写入数据库,字符串可以采用 char 方式,而从数据库中取出 char 类型,当 char 类型有表示中文字符时,会出现乱码。这是因为数据库默认使用 ASCII 编码方式。所以要想正确从数据库中取出中文,需要用 NSString 来接收从数据库取出的字符串。

  • SQLite 操作方法

        sqlite3 *db             数据库句柄,跟文件句柄很类似
        sqlite3_stmt *stmt      这个相当于 ODBC 的 Command 对象,用于保存编译好的 SQL 语句
        sqlite3_open()          打开数据库,没有数据库时创建。
        sqlite3_exec()          执行非查询的 sql 语句
        sqlite3_prepare_v2      执行查询的 sql 语句
        Sqlite3_step()          在调用 sqlite3_prepare 后,使用这个函数在记录集中移动。
        sqlite3_free()          清空变量
        Sqlite3_close()         关闭数据库文件
    
        还有一系列的函数,用于从记录集字段中获取数据,如:
    
        sqlite3_column_text()   取 text 类型的数据。
        sqlite3_column_blob()   取 blob 类型的数据
        sqlite3_column_int()    取 int 类型的数据
  • SQLite 命令行

        .help    :帮助
        .quit    :退出
        .database:列出数据库信息
        .dump    :查看所有的 sql 语句
        .schema  :查看表结构
        .tables  :显示所有的表
  • SQL 语句常用数据类型

        (1)整型:
    
            bigint  :整形数据,大小为 8 个字节
            integer :整形数据,大小为 4 个字节
            smallint:整形数据,大小为 2 个字节
            tinyint :从 0 到 255 的整形数据,存储大小为 1 字节
    
        (2)浮点型:
    
            float :4 字节浮点数
            double:8 字节浮点数
            real  :8 字节浮点数
    
        (3)字符型:
    
            char(n)   :n 长度的字串,n 不能超过 254
            varchar(n):长度不固定且其长度为 n 的字串,n 不能超过 4000
            text      :text 存储可变长度的非 unicode 数据,存放比 varchar 更大的字符串
    
            注意事项:
    
                尽量用 varchar
                超过 255 字节的只能用 varchar 或 text
                能用 varchar 的地方不用 text
    
            SQLite 字符串区别:
    
                char 存储定长数据很方便,char 字段上的索引效率极高,比如定义 char(10),那么不论你存储的数据是否达到了 10 个字节,都要占去 10 个字节的空间,不足的自动用空格填充。
                varchar 存储变长数据,但存储效率没有 char 高,如果一个字段可能的值是不固定长度的,我们只知道它不可能超过 10 个 > 字符,把它定义为 varchar(10) 是最合算的,varchar 类型的实际长度是它的值的实际长度 +1,为什么 +1 呢 ?这个字节用于保存实际使用了多大的长度。因此,从空间上考虑,用 varchar 合适,从效率上考虑,用 char 合适,关键是根据情况找到权衡点。
                text 存储可变长度的非 Unicode 数据,最大长度为 2^31-1(2147483647)个字符。
    
        (4)日期类型:
    
            date     :包含了年份,月份,日期
            time     :包含了小时,分钟,秒
            datetime :包含了年,月,日,时,分,秒
            timestamp:包含了年,月,日,时,分,秒,千分之一秒
    
            注意:datetime 包含日期时间格式,必须写成 ‘2010-08-05’不能写为‘2010-8-5’,否则在读取时会产生错误。
    
        (5)其他类型:
    
            null         :空值
            blob         :二进制对象,主要用来存放图片和声音文件等
            default      :缺省值
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值