#import "GYDataBaseHandle.h"
#import "FMDB.h"
#import "HMTPerson.h"
@implementation GYDataBaseHandle
static GYDataBaseHandle * _dbHandle = nil;
+ (GYDataBaseHandle *)shareInstance{
@synchronized(self){
if (!_dbHandle) {
_dbHandle = [[GYDataBaseHandle alloc]init];
[_dbHandle openDataBase];
[_dbHandle createTable];
}
}
return _dbHandle;
}
#pragma mark - 定义一个 FMDatabase 对象
static FMDatabase * database = nil;
#pragma mark - 获得沙盒文件下Documents路径
- (NSString *)getDocumentsPath{
NSString * documents = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
return documents;
}
#pragma mark - 打开数据库操作------ databaseWithPath open
- (void)openDataBase{
if (database) {
return;
}
NSString * DataBasePath = [[self getDocumentsPath] stringByAppendingPathComponent:@"test.sqlite"];
database = [FMDatabase databaseWithPath:DataBasePath];
if (![database open]) {
NSLog(@"打开数据库失败");
}
// 为数据库设置缓存,提高查询效率
database.shouldCacheStatements = YES;
NSLog(@"打开数据库成功");
}
#pragma mark - 关闭数据库操作
- (void)closeDataBase{
if (![database close]) {
NSLog(@"关闭数据库失败");
return;
}
database = nil;
NSLog(@"关闭数据库成功");
}
#pragma mark - 管理创建表的操作
- (void)createTable{
[self openDataBase];
// 判断表是否存在,不存在就创建------ tableExists
if (![database tableExists:@"Person"]) {
[database executeUpdate:@"CREATE TABLE Person(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)"];
NSLog(@"创建表成功");
}
[self closeDataBase];
}
#pragma mark - 增加数据操作----- executeUpdate
- (void)insertIntoDataBase:(HMTPerson *)person{
[self openDataBase];
[database executeUpdate:@" INSERT INTO Person (id,name,age) VALUES (?,?,?)",[NSString stringWithFormat:@"%i",person.personId],person.personName,[NSString stringWithFormat:@"%i",person.personAge]];
[self closeDataBase];
}
#pragma mark - 删除数据操作----- executeUpdate
- (void)deleteDataFromDataBase:(HMTPerson *)person{
[self openDataBase];
[database executeUpdate:@" DELETE FROM Person WHERE id = ?",[NSString stringWithFormat:@"%i",person.personId]];
[self closeDataBase];
}
#pragma mark - 更新数据操作----- executeUpdate
- (void)updateFromDataBase:(HMTPerson *)person{
[self openDataBase];
[database executeUpdate:@" UPDATE Person SET name = ? WHERE id = ?",person.personName,[NSString stringWithFormat:@"%i",person.personId]];
[self closeDataBase];
}
#pragma mark - 查询数据操作(与其他的都不一样,查询是调用executeQuery,切记切记!!!!!!)
- (void)selectAllDataFromDataBase{
[self openDataBase];
FMResultSet * resultSet = [database executeQuery:@" SELECT * FROM Person"];
while ([resultSet next]) {
int Id = [resultSet intForColumn:@"id"];
NSString * name = [resultSet stringForColumn:@"name"];
int age = [resultSet intForColumn:@"age"];
NSLog(@"personId:%i,personName:%@,personAge:%i",Id,name,age);
}
[self closeDataBase];
}
@end