数据持久化三之SQlite3

前端之家收集整理的这篇文章主要介绍了数据持久化三之SQlite3前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

使用数据库的步骤ios使用的数据库sqlite3

UIKit框架并不支持sqlite3,需要导入一个支持sqlite的库

1.创建一个数据库文件,如果已经有了只需要打开数据库文件

2.创建一张表

3.对表的数据进行增删改查

#import "ViewController.h"

#import <sqlite3.h>

@interface ViewController (){

//声明一个数据库变量

sqlite3 *_db;

}

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

//1.创建数据库

[self createDB];

//2.创建表

[self createTable];

//3.插入数据

[self insertData];

//4.删除数据

[self deleteData];

//5.更新数据

[self updateData];

//6.查找数据

[self selectData];

}

#pragma mark - 创建/打开数据库

- (void) createDB{

//1.创建数据库的路径(实际开发过程中是沙盒目录下的一个路径);

const char * path = "/Users/fanjuan/Desktop/my files/网络/day6-数据库/数据库文件/user.sqlite";

//2.打开一个数据库文件(如果数据库不存在就创建一个新的);

//参数1:数据库文件的路径

//参数2:指向数据库的指针的地址,代表当前打开或者创建的数据库

//返回值:打开或者创建是否成功

int ret = sqlite3_open(path,&_db);

//3.判断数据库打开创建是否成功

//sqlITE_OK专门用来判断数据库操作成功的宏

if (ret == sqlITE_OK) {

NSLog(@"数据库打开/创建成功");

}else{

NSLog(@"数据库打开/创建失败");

}

}

#pragma mark - 创建表

- (void)createTable{

//1.创建一个创建表的sql语句

const char *sql = "CREATE TABLE IF NOT EXISTS t_user(id integer PRIMARY KEY AUTOINCREMENT,name text NOT NULL,age integer NOT NULL DEFAULT 22,score real DEFAULT 0); ";

//sqlite3_exec 专门用来执行DDL,DML语句的方法

//DQL语句不可以使用这个函数;

//参数1:数据库(必须是已经打开的数据库);

//参数2:需要执行的sql语句

//参数5:错误信息

//返回值:是否成功执行sql语句

//2.执行创建表的sql语句;

int ret = sqlite3_exec(_db,sql,NULL,NULL);

//3.判断表是否创建成功

if (ret == sqlITE_OK)
{

NSLog(@"创建成功");

}else{

NSLog(@"创建表失败");

}

}

#pragma mark - 插入数据

- (void) insertData{

//1.创建插入数据的sql语句

const char *sql = "INSERT INTO t_user (name,age,score) VALUES ('fanjuan',22,99);";

//一次插入多条数据

NSMutableString *mstr = [NSMutableString string];

for (int i=0; i<20; i++) {

NSString *str = [NSString stringWithFormat:@"INSERT INTO t_user (name,score) VALUES ('fanjuan%d',%d,%f);",i,arc4random() % 10 + 10,(float)(arc4random()%101)];

[mstr appendString:str];

}

const char *sql2 = [mstr UTF8String];

//2.执行插入数据的sql语句

int ret = sqlite3_exec(_db,sql2,NULL);

//3.判断是否成功

if (ret == sqlITE_OK) {

NSLog(@"插入数据成功");

}else{

NSLog(@"插入数据失败");

}

}

#pragma mark - 删除数据

- (void) deleteData{

//1.创建sql语句

const char *sql = "DELETE FROM t_user WHERE name ='fanjuan';";

//2.执行sql语句

int ret = sqlite3_exec(_db,NULL);

//3.判断是否成功

if (ret == sqlITE_OK) {

NSLog(@"删除数据成功");

}else{

NSLog(@"删除数据失败");

}

}

#pragma mark - 更新数据

- (void)updateData{

//1.创建sql语句

const char *sql = "UPDATE t_user SET score = 99 WHERE score < 80;";

//2.执行sql语句

int ret = sqlite3_exec(_db,NULL);

//3.判断是否成功

if (ret == sqlITE_OK) {

NSLog(@"更新数据成功");

}else{

NSLog(@"更新数据失败");

}

}

#pragma mark 查询数据

- (void)selectData{

//1.创建sql语句

const char *sql = "SELECT * FROM t_user;";

//2.执行语句

//参数1:数据库

//参数2:数据查询sql语句

//参数3:sql语句的长度(传入-1自动计算)

//参数4:结果集(专门用来存放结果的容器)

//参数5:null

// 创建存放结果集指针

sqlite3_stmt *stmt;

int ret= sqlite3_prepare_v2(_db

,-1,&stmt,NULL);

//3.判断查询是否成功;

if (ret == sqlITE_OK) {

NSLog(@"查询成功");

//将数据从结果 集中拿出来

//遍历结果集中的数据

while (sqlite3_step(stmt) == sqlITE_ROW) {

//拿到查询结果的数据

//参数1:结果集指针

//参数2:列标号(从0开始)

const unsigned char *name = sqlite3_column_text(stmt,1);

int age = sqlite3_column_int(stmt,2);

double score = sqlite3_column_double(stmt,3);

NSLog(@"%s-%d-%.2lf",name,score);

}

}else{

NSLog(@"查询失败");

}

}

@end

猜你在找的Sqlite相关文章