SQLite3的使用

一、什么是SQLIte

SQLite是一款轻型的嵌入式数据库,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就足够了。它的处理速度比Mysql、PostgreSQL这两款著名的数据库都还快

二、数据库存储数据的步骤

1、新建一个数据库

2、新建一张表(table)

3、添加多个字段(column,列,属性)

4、添加多行记录(row,每行存放多个字段对应的值)

三、SQL语句种类

1、数据定义语句(DDL:Data Definition Language) 包括create和drop等操作 在数据库中创建新表或删除表(create table或 drop table)

2、数据操作语句(DML:Data Manipulation Language) 包括insert、update、delete等操作 上面的3种操作分别用于添加、修改、删除表中的数据

3、数据查询语句(DQL:Data Query Language) 可以用于查询获得表中的数据 关键字select是DQL(也是所有SQL)用得最多的操作 其他DQL常用的关键字有where,order by,group by和having

四、SQLite的字段类型

1. integer : 整型值

2. real : 浮点值

3. text : 文本字符串

4. blob : 二进制数据(比如文件)

实际上SQLite是无类型的,但为了保持良好的编程规范,方便程序员之间的交流,编写建表语句的时候最好还是加上每个字段的具体类型

五、SQLite的使用

1、创建数据库

在IOS中使用SQLite3时,首先需要添加库文件libsqlite3.dylib和导入主头文件

 1 // 拼接数据库地址
 2     NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject];
 3     NSString *sqlFile = [path stringByAppendingPathComponent:@student.sqlite];
 4     // 打开数据
 5     int result = sqlite3_open(sqlFile.UTF8String, &_db);
 6 // 打开数据库会返回一个int类型的返回值,通过该值可以判断创建数据库是否成功
 7      // 判断是否打开成功
 8     if (result == SQLITE_OK) {
 9         NSLog(@打开成功);
10         // 创建表
11         /*
12          第一个参数: 需要执行SQL语句的数据库对象
13          第二个参数: 需要执行的SQL语句
14          第三个参数: 回调函数
15          第四个参数: 第三个参数的参数
16          第五个参数: 接收错误信息
17          */
18                     // 创建表的sql语句
19         NSString *sql = @CREATE TABLE IF NOT EXISTS t_student(id INTEGER PRIMARY KEY AUTOINCREMENT , name TEXT, age INTEGER, score REAL);;
20         result = sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL);
21         if (result == SQLITE_OK) {
22             NSLog(@创建表成功);
23         }else
24         {
25             NSLog(@创建表失败);
26         }
27     }else
28     {
29         NSLog(@打开失败);
30     }

 2、插入数据

1 NSString *sql = @INSERT INTO t_student(age, score, name) VALUES ('28', 100, 'jonathan');
2     int result =  sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL);
3     if (result == SQLITE_OK) {
4         NSLog(@插入成功);
5     }

3、修改数据

1 NSString *sql = @UPDATE t_student SET name = 'LNJ';;
2     int result =  sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL);
3     if (result == SQLITE_OK) {
4         NSLog(@修改成功);
5     }

4、删除数据

1 NSString *sql = @DELETE FROM t_student WHERE id = 1; ;
2     int result =  sqlite3_exec(_db, sql.UTF8String, NULL, NULL, NULL);
3     if (result == SQLITE_OK) {
4         NSLog(@删除成功);
5     }

5、查询数据

sqlite3操作中, 所有DML语句都是使用sqlite3_exec函数执行SQL语句即可,但是如果是需要查询数据库, 不能使用sqlite3_exec, 因为它并没有返回查询到得结果发给我们

 1 NSString *sql = @SELECT * FROM t_student;;
 2     sqlite3_stmt *stemt = NULL;
 3     /*
 4      第一个参数:需要执行SQL语句的数据库
 5      第二个参数:需要执行的SQL语句
 6      第三个参数: 告诉系统SQL语句的长度, 如果传入一个小于0的数, 系统会自动计算
 7      第四个参数:结果集, 里面存放所有查询到的数据(不严谨)
 8      */
 9     sqlite3_prepare_v2(_db, sql.UTF8String, -1, &stemt, NULL);
10     // 判断有没有查询结果
11     while (sqlite3_step(stemt) == SQLITE_ROW) {
12         // 取出第一个字段的查询得结果
13         const unsigned char *name = sqlite3_column_text(stemt, 1);
14         // 取出第一个字段的查询得结果
15         int age = sqlite3_column_int(stemt, 2);
16         // 取出第一个字段的查询得结果
17         double score = sqlite3_column_double(stemt, 3);
18         NSLog(@%s %d %f, name, age, score);
19     }
原文地址:https://www.cnblogs.com/gzhu-lkun/p/5823923.html