数据持久化三之SQlite3

数据持久化三之SQlite3,第1张

概述使用数据库的步骤ios使用的数据库是sqlite3 UIKit框架并不支持sqlite3,需要导入一个支持sqlite的库 1.创建一个数据库文件,如果已经有了只需要打开数据库文件 2.创建一张表 3.对表的数据进行增删改查 #import "ViewController.h" #import <sqlite3.h> @interface ViewController (){     //声明一个

使用数据库的步骤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

总结

以上是内存溢出为你收集整理的数据持久化三之SQlite3全部内容,希望文章能够帮你解决数据持久化三之SQlite3所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1166555.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存