加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

sqlite 数据库

发布时间:2020-12-12 23:49:18 所属栏目:百科 来源:网络整理
导读:#import Foundation/Foundation.h #import "Person.h" #warning Step.1 引入 sqlite 数据库头文件 #import sqlite3.h @interface DataHandle : NSObject + ( instancetype )sharePersonDataHandle; -( void )openDB; - ( void )insertStudent:( Person *)per

#import <Foundation/Foundation.h>

#import "Person.h"

#warning Step.1 引入sqlite 数据库头文件

#import <sqlite3.h>

@interface DataHandle : NSObject

+ (instancetype)sharePersonDataHandle;


-(void)openDB;


- (void)insertStudent:(Person *)person;


- (void)updateStudent:(Person *)person number:(NSInteger)number;


- (void)deleteStudent:(NSInteger)number;


- (NSMutableArray *)selectAllStudent;

@end




#import "DataHandle.h"


@implementation DataHandle


+ (instancetype)sharePersonDataHandle

{

static DataHandle *personData = nil;

if (personData == nil) {

personData = [[DataHandle alloc] init];

}

return personData;

}


#warning Step.2 加入libsqlite3.0.dylib


#warning Step.3 创建数据库对象

static sqlite3 *db = nil;


#warning Step.4 打开数据库

-(void)openDB

{

if (db != nil) {

NSLog(@"数据库已经打开");

return;

}

NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

NSString *path = [array lastObject];

NSString *sqlitePath = [path stringByAppendingPathComponent:@"student.sqlite"];

NSLog(@"== %@",sqlitePath);

// 打开数据库

int result = sqlite3_open(sqlitePath.UTF8String,&db);

if (result == SQLITE_OK) {

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

// 建数据库表

NSString *createSql = @"CREATE TABLE IF NOT EXISTS lanou23(number INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,gender TEXT,age INSTEGER)";

int result = sqlite3_exec(db,createSql.UTF8String,NULL,nil);

if (result == SQLITE_OK) {

NSLog(@"创建表成功");

} else {

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

}

} else {

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

}

}


- (void)insertStudent:(Person *)person

{

NSString *insertSql = [NSString stringWithFormat:@"INSERT INTO lanou23(name,gender,age) values('%@','%@','%ld')",person.name,person.gender,person.age];

int result = sqlite3_exec(db,insertSql.UTF8String,nil);

if (result == SQLITE_OK) {

NSLog(@"插入成功");

} else {

NSLog(@"插入失败");

}

}



#warning 第六步 修改

- (void)updateStudent:(Person *)person number:(NSInteger)number

{

NSString *updateSql = [NSString stringWithFormat:@"UPDATE lanou23 SET name = '%@',gender = '%@',age = '%ld' WHERE number = '%ld'",person.age,number];

int result = sqlite3_exec(db,updateSql.UTF8String,19)">修改成功");

} else {

NSLog(@"修改失败");

}

}


#warning 第七步 删除

- (void)deleteStudent:(NSInteger)number

{

NSString *deleteSql = [NSString stringWithFormat:@"DELETE FROM lanou23 WHERE number = '%ld'",deleteSql.UTF8String,19)">删除成功");

} else {

NSLog(@"删除失败");

}


}


#warning 第八步 查询所有学生

- (NSMutableArray *)selectAllStudent

{

NSMutableArray *array = [NSMutableArray array];

NSString *selectSql = @"SELECT * FROM lanou23";

NSString *select = [NSString stringWithFormat:@"SELECT * FROM lanou23 WHERE name = '%@'",@"大水杯"];

// 声明数据库指针,作用是跟踪表里的每一行

sqlite3_stmt *stmt = nil;

// 查询之前准备工作: 将数据库对象db,sql语句,stmt关联起来

// 参数1.数据库对象,参数2.sql语句,参数3.sql语句长度,-1为不限制长度,参数4.数据库跟随指针

int result = sqlite3_prepare_v2(db,selectSql.UTF8String,-1,&stmt,19)">查询成功");

// 循环遍历每条数据

while (sqlite3_step(stmt) == SQLITE_ROW) {

// 取值

int number = sqlite3_column_int(stmt,0);

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

const unsigned char *gender = sqlite3_column_text(stmt,2);

int age = sqlite3_column_int(stmt,3);

NSString *nameStr = [NSString stringWithUTF8String:(const char *)name];

NSString *genderStr = [NSString stringWithUTF8String:(const char *)gender];

NSInteger numberInteger = number;

NSInteger ageInteger = age;

Person *pp = [[Person alloc] init];

pp.name = nameStr;

pp.gender = genderStr;

pp.age = ageInteger;

pp.number = numberInteger;

[array addObject:pp];

}

} else {

NSLog(@"查询失败");

}

return array;

}


@end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读