使用数据库的步骤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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)