zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

iOS中 用FMDB封装一个SQLite数据库详解手机开发

2023-06-13 09:20:07 时间
//写一个修改人的接口 - (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]; 


- (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; 

@end 

PersonModel.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; }

来自:http://blog.csdn.net/qq_31810357/article/details/49181453

3352.html

服务器部署程序员系统优化网站设置运维