建立一个单例:
DataBaseHandle.h
代码语言:javascript复制#import <Foundation/Foundation.h>
@class PersonModel;
@class FMDatabase;
@interface DataBaseHandle : NSObject
@property(nonatomic,retain)FMDatabase *db;
//创建单例的的接口
(DataBaseHandle *)shareDateBaseHandle;
//创建一个Person表格
(void)creatPersonTable;
//插入person的方法
(void)insertPersonTable : (PersonModel *)person;
//写一个删除人的接口
(void)deletePersonByPerssonID : (NSString *)ID;
//写一个修改人的接口
(void)uodatePerson : (NSString )age ByPersonID : (NSString )ID;
//写一个查询所有人的接口
(NSMutableArray *)selectAllPersonFromPersonTable;
@end</pre>
DataBaseHandle.m
#import "DataBaseHandle.h"
#import "FMDB.h"
#import "PersonModel.h"
@implementation DataBaseHandle
(void)dealloc
{
self.db = nil;
[super dealloc];
}</pre>
创建单例的的接口:
//创建单例对象使其存在于静态区
static DataBaseHandle *handle = nil;
//创建单例的的借口
(DataBaseHandle *)shareDateBaseHandle{
@synchronized(self){
if (handle == nil) {
handle = [[DataBaseHandle alloc]init];
}
}
return handle;
}</pre>
写一个私有的方法,返回数据库的路径
- (NSString *)dbpath{
return [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject] stringByAppendingPathComponent:@"db.sqlite"];
}</pre>
创建一个Person表格
//创建一个Person表格
(void)creatPersonTable{
//初始化数据库对象
self.db = [FMDatabase databaseWithPath: [self dbpath]];
//打开数据库
BOOL isOpen = [self.db open];
if (isOpen) {
NSLog(@"打开成功");
//创建表
BOOL isCreat = [self.db executeUpdate:@"create table if not exists Person(id integer primary key autoincrement,name text,gender text,age integer,salary integer)"];
NSLog(@"%@",isCreat ? @"创建成功":@"创建失败");
}else{
NSLog(@"打开失败");
}
}</pre>
四种方法:增、删、改、查;
//插入person的方法
(void)insertPersonTable : (PersonModel *)person{
BOOL isInsert = [self.db executeUpdate:@"insert into Person(name,age)values(?,?)",person.name,person.age];
NSLog(@"%@",isInsert ? @"插入成功":@"插入失败");
}
//写一个删除的接口
(void)deletePersonByPerssonID : (NSString *)ID{
BOOL isDelete = [self.db executeUpdate:@"delete from Person where id = ?",ID];
NSLog(@"%@",isDelete ? @"删除成功":@"删除失败");
}
//写一个修改人的接口
(void)uodatePerson : (NSString )age ByPersonID : (NSString )ID{
BOOL isUpdate = [self.db executeUpdate:@"update Person set age = ? where id = ?",age,ID];
NSLog(@"%@",isUpdate ? @"修改成功":@"修改失败");
}
//写一个查询所有人的接口
(NSMutableArray )selectAllPersonFromPersonTable{
FMResultSet set = [self.db executeQuery:@"select from Person"];
NSMutableArray array = [NSMutableArray arrayWithCapacity:0];
while ([set next]) {
NSInteger ID = [set intForColumn:@"id"];
NSString *name = [set stringForColumn:@"name"];
NSInteger age = [set intForColumn:@"age"];
//创建Person对象存储信息
PersonModel *p = [[PersonModel alloc]init];
p.ID = [NSString stringWithFormat:@"%ld",ID];
p.name = name;
p.age = [NSString stringWithFormat:@"%ld",age];
//添加到数组
[array addObject:p];
[p release];
}
return array;
}</pre>
建一个model类
PersonModel.h
#import <Foundation/Foundation.h>
@interface PersonModel : NSObject
@property(nonatomic,copy)NSString ID;
@property(nonatomic,copy)NSString name;
@property(nonatomic,copy)NSString *age;
@end
PersonModel.m
import "PersonModel.h"
@implementation PersonModel
(void)dealloc
{
self.name = nil;
self.age = nil;
self.ID = nil;
[super dealloc];
}
@end</pre>
===============================测试调用===============================
#import "FirstViewController.h"
#import "DataBaseHandle.h"
#import "PersonModel.h"
@interface FirstViewController ()
@property(nonatomic,retain)NSMutableArray *dataSource;//接收查询的结果
@end
@implementation FirstViewController
(void)dealloc
{
self.dataSource = nil;
[super dealloc];
}</pre>
//懒加载
(NSMutableArray *)dataSource{
if (_dataSource == nil) {
self.dataSource = [NSMutableArray arrayWithCapacity:0];
}
return [[_dataSource retain]autorelease];
}</pre> TEXT:
- (void)viewDidLoad {
[super viewDidLoad];
//调用并验证
[[DataBaseHandle shareDateBaseHandle]creatPersonTable];
NSLog(@"%@",NSHomeDirectory());
PersonModel *p = [[PersonModel alloc]init];
p.name = @"小韩哥";
p.age = @"20";
//调用插入person的方法
// [[DataBaseHandle shareDateBaseHandle]insertPersonTable:p];
//接收数据库返回的查询结果
self.dataSource = [[DataBaseHandle shareDateBaseHandle]selectAllPersonFromPersonTable];
//调用删除人的方法
[[DataBaseHandle shareDateBaseHandle]deletePersonByPerssonID:@"9"];
}</pre>
配置显示:
#pragma mark - Table view data source
(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 1;
}
(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
return self.dataSource.count;
}
(UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath )indexPath {
UITableViewCell cell = [tableView dequeueReusableCellWithIdentifier:@"firstcell" forIndexPath:indexPath];
PersonModel *p = self.dataSource[indexPath.row];
cell.textLabel.text = p.name;
return cell;
}</pre>