一、什么是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 }