| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
jopen
10年前发布

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