
ViewController.m
#import "ViewController.h"
#import "DataBaseHandle.h"
#import "Student.h"
@interface ViewController ()
- (IBAction)openDB:(id)sender;
- (IBAction)createTable:(id)sender;
- (IBAction)insert:(id)sender;
- (IBAction)delete:(id)sender;
- (IBAction)change:(id)sender;
- (IBAction)selectAll:(id)sender;
- (IBAction)closeDB:(id)sender;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
- (IBAction)openDB:(id)sender {
[[DataBaseHandle shareDataBaseHandle] openDB];
}
- (IBAction)createTable:(id)sender {
[[DataBaseHandle shareDataBaseHandle] creatTable];
}
- (IBAction)insert:(id)sender {
Student *stu = [[Student alloc] init];
stu.name = @"哈哈";
stu.sex = @"女";
stu.age = 20;
[[DataBaseHandle shareDataBaseHandle] insertStu:stu];
}
- (IBAction)delete:(id)sender {
Student *stu = [[Student alloc] init];
stu.name = @"老师";
[[DataBaseHandle shareDataBaseHandle] deleteStu:stu];
}
- (IBAction)change:(id)sender {
Student *stu = [[Student alloc] init];
stu.name = @"男男女女";
stu.age = 15;
stu.sex = @"男";
[[DataBaseHandle shareDataBaseHandle] updateStu:stu];
}
- (IBAction)selectAll:(id)sender {
NSMutableArray *stuArr = [[DataBaseHandle shareDataBaseHandle] selectAllStu];
for (Student *stu in stuArr) {
NSLog(@"%@", stu.name);
}
}
- (IBAction)closeDB:(id)sender {
[[DataBaseHandle shareDataBaseHandle] closeDB];
}
@end
#import <Foundation/Foundation.h>
#import <sqlite3.h>
#import "Student.h"
@interface DataBaseHandle : NSObject
{
sqlite3 *dbPoint;
}
+ (instancetype)shareDataBaseHandle;
- (void)openDB;
- (void)creatTable;
- (void)insertStu:(Student *)stu;
- (void)deleteStu:(Student *)stu;
- (void)updateStu:(Student *)stu;
- (NSMutableArray *)selectAllStu;
- (void)closeDB;
@end
DataBaseHandle.m
#import "DataBaseHandle.h"
@implementation DataBaseHandle
+ (instancetype)shareDataBaseHandle {
static DataBaseHandle *handle;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
handle = [[DataBaseHandle alloc] init];
});
return handle;
}
- (void)openDB {
NSString *sandBoxPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *dbPath = [sandBoxPath stringByAppendingPathComponent:@"Student.sqlite"];
int result = sqlite3_open([dbPath UTF8String], &dbPoint);
if (result == SQLITE_OK) {
NSLog(@"开启成功");
} else {
NSLog(@"开启失败");
}
NSLog(@"%@", dbPath);
}
- (void)creatTable {
NSString *sqlStr = @"create table if not exists stu(number integer primary key autoincrement, sex text, name text, age integer)";
int result = sqlite3_exec(dbPoint, [sqlStr UTF8String], nil, nil, nil);
if (result == SQLITE_OK) {
NSLog(@"表创建成功");
} else {
NSLog(@"表创建失败");
}
}
- (void)insertStu:(Student *)stu {
NSString *sqlStr = [NSString stringWithFormat:@"insert into stu(name, sex, age) values ('%@', '%@', '%ld')", stu.name, stu.sex, stu.age];
int result = sqlite3_exec(dbPoint, [sqlStr UTF8String], nil, nil, nil);
if (result == SQLITE_OK) {
NSLog(@"添加成功");
} else {
NSLog(@"添加失败");
}
}
- (void)deleteStu:(Student *)stu {
NSString *sqlStr = [NSString stringWithFormat:@"delete from stu where name = '%@'", stu.name];
int result = sqlite3_exec(dbPoint, [sqlStr UTF8String], nil, nil, nil);
if (result == SQLITE_OK) {
NSLog(@"删除成功");
} else {
NSLog(@"删除失败");
}
}
- (void)updateStu:(Student *)stu {
NSString *sqlStr = [NSString stringWithFormat:@"update stu set name = '%@', age = '%ld' where sex = '%@'", stu.name, stu.age, stu.sex];
int result = sqlite3_exec(dbPoint, [sqlStr UTF8String], nil, nil, nil);
if (result == SQLITE_OK) {
NSLog(@"更新成功");
} else {
NSLog(@"跟新失败");
}
}
- (NSMutableArray *)selectAllStu {
NSString *sqlStr = @"select * from stu";
sqlite3_stmt *stmt = nil;
int result = sqlite3_prepare_v2(dbPoint, [sqlStr UTF8String], -1, &stmt, nil);
NSMutableArray *strArr = [NSMutableArray array];
if (result == SQLITE_OK) {
while (sqlite3_step(stmt) == SQLITE_ROW) {
const unsigned char *sex = sqlite3_column_text(stmt, 1);
const unsigned char *name = sqlite3_column_text(stmt, 2);
int age = sqlite3_column_int(stmt, 3);
Student *stu = [[Student alloc] init];
stu.name = [NSString stringWithUTF8String:(const char *)name];
stu.sex = [NSString stringWithUTF8String:(const char *)sex];
stu.age = age;
[strArr addObject:stu];
}
}
sqlite3_finalize(stmt);
return strArr;
}
- (void)closeDB {
int result = sqlite3_close(dbPoint);
if (result == SQLITE_OK) {
dbPoint = nil;
NSLog(@"关闭数据库");
}
}
@end
Student.h
#import <Foundation/Foundation.h>
@interface Student : NSObject
@property(nonatomic, copy)NSString *name;
@property(nonatomic, copy)NSString *sex;
@property(nonatomic, assign)NSInteger age;
@end
