#import <sqlite3.h>
#import “Student.h”
@interface DataManage : NSObject{
sqlite3 *db;
}
//单利方法建立数据库
+(DataManage *)shareManage;
//打开数据库
- (void)open;
//关闭数据库 - (void)close;
//创建表 - (void)create;
//插入数据 - (void)insert:(Student *)student;
//更新数据 - (void)update:(Student *)student;
//删除数据 - (void)deleteData:(NSString *)name;
//查询数据 - (NSMutableArray *)select;
// 单例
+(DataManage *)shareManage{
//创建静态变量
static DataManage *manage;
if (!manage) {
manage = [DataManage new];
}
return manage;
}
//打开数据库
- (void)open{
//创建路径
NSString *docum = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject];
NSString *sqlitepath = [docum stringByAppendingPathComponent:@“1606D.sqlite”];
NSLog(@"++++%@",sqlitepath);
//打开
int result = sqlite3_open(sqlitepath.UTF8String, &db);
//判断是否打开成功
if (result == SQLITE_OK) {
NSLog(@“数据库打开成功”);
}else{
NSLog(@“数据库打开失败”);
}
}
//关闭数据库
-(void)close{
//关闭
int result = sqlite3_close(db);
//判断是否关闭成功
if (result == SQLITE_OK) {
NSLog(@“数据库关闭成功”);
}else{
NSLog(@“数据库关闭失败”);
}
}
//创建
- (void)create{
//创建SQL语句
NSString *sqltring = @“create table if not exists student (name text, coverSmall text, programName text)”;
//执行语句
char *error = nil;
sqlite3_exec(db, sqltring.UTF8String, nil, nil, &error);
if (error == nil) {
NSLog(@“创建表格成功”);
}else{
NSLog(@“创建表格失败”);
}
}
//插入
- (void)insert:(Student *)student{
NSString *sqltring = [NSString stringWithFormat:@“insert into student (name , coverSmall , programName) values (’%@’,’%@’,’%@’)”,student.name,student.coverSmall,student.programName];
//执行语句
char *error = nil;
sqlite3_exec(db, sqltring.UTF8String, nil, nil, &error);
if (error == nil) {
NSLog(@“插入数据成功”);
NSLog(@"%@",sqltring);
}else{
NSLog(@“插入数据失败”);
}
}
//更新
- (void)update:(Student *)student{
NSString *sqltring = [NSString stringWithFormat:@“update student set name = ‘%@’, coverSmall = ‘%@’, programName = ‘%@’ where name = ‘%@’”,student.name,student.coverSmall,student.programName,student.name];
//执行语句
char *error = nil;
sqlite3_exec(db, sqltring.UTF8String, nil, nil, &error);
if (error == nil) {
NSLog(@“更新数据成功”);
}else{
NSLog(@“更新数据失败”);
}
}
//删除 - (void)deleteData:(NSString *)name{
NSString *sqltring = [NSString stringWithFormat:@“delete from student where name = ‘%@’”,name];
//执行语句
char *error = nil;
sqlite3_exec(db, sqltring.UTF8String, nil, nil, &error);
if (error == nil) {
NSLog(@“删除数据成功”);
}else{
NSLog(@“删除数据失败”);
}
}
//查询
-(NSMutableArray *)select{
NSString *sqltring = @“select * from student”;
//预编译指针
sqlite3_stmt *stmt = nil;
//准备语句
sqlite3_prepare(db, sqltring.UTF8String, -1, &stmt, nil);
//存放查询出来的数据
NSMutableArray *array = [NSMutableArray new];
//单步执行语句
while (sqlite3_step(stmt) == SQLITE_ROW) {
Student *studen = [Student new];
//获取第一例
const unsigned char *name = sqlite3_column_text(stmt, 0);
NSString *nameNsstring = [NSString stringWithUTF8String:(const char *)name];
studen.name = nameNsstring;
//获取第二例
const unsigned char *coverSmall = sqlite3_column_text(stmt, 1);
NSString *ageNsstring1 = [NSString stringWithUTF8String:(const char *)coverSmall];
studen.coverSmall = ageNsstring1;
//获取第三例
const unsigned char *programName = sqlite3_column_text(stmt, 2);
NSString *ageNsstring2 = [NSString stringWithUTF8String:(const char *)programName];
studen.programName = ageNsstring2;
[array addObject:studen];
NSLog(@"++++++++++++%@",array);
}
//释放 数据库管理指针
sqlite3_finalize(stmt);
return array;
}