iOS中 用FMDB封装一个SQLite数据库

建立一个单例:

DataBaseHandle.h

#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

DataBaseHandle.m

#import "DataBaseHandle.h"#import "FMDB.h"#import "PersonModel.h"@implementation DataBaseHandle- (void)dealloc{self.db = nil;[super dealloc];}

创建单例的的接口:

//创建单例对象使其存在于静态区static DataBaseHandle *handle = nil;//创建单例的的借口+ (DataBaseHandle *)shareDateBaseHandle{@synchronized(self){if (handle == nil) {handle = [[DataBaseHandle alloc]init];}}return handle;}

写一个私有的方法,返回数据库的路径

– (NSString *)dbpath{return [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)lastObject] stringByAppendingPathComponent:@"db.sqlite"];}

创建一个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(@"打开失败");}}四种方法:增、删、改、查;

//插入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;}建一个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;@endPersonModel.m#import "PersonModel.h"@implementation PersonModel- (void)dealloc{self.name = nil;self.age = nil;self.ID = nil;[super dealloc];}@end===============================测试调用===============================#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];}//懒加载- (NSMutableArray *)dataSource{if (_dataSource == nil) {self.dataSource = [NSMutableArray arrayWithCapacity:0];}return [[_dataSource retain]autorelease];}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"];}配置显示:#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;}布局预览:

不要气馁于那前方的阴影,那只是因为我背后光芒万丈

iOS中 用FMDB封装一个SQLite数据库

相关文章:

你感兴趣的文章:

标签云: