码迷,mamicode.com
首页 > 数据库 > 详细

FMDB的使用

时间:2015-05-26 21:36:44      阅读:300      评论:0      收藏:0      [点我收藏+]

标签:

//
//  ViewController.m
//  SQLLITE
//
//  Created by wup on 15/5/26.
//  Copyright (c) 2015年 apple. All rights reserved.
//
#import "ViewController.h"
#import <sqlite3.h>
#import "shop.h"
#import "FMDB.h"
@interface ViewController () <UITableViewDataSource,UISearchBarDelegate>
@property (nonatomic,strong)   NSMutableArray *shops;
@property (nonatomic,strong) UITableView *tbv ;
@property (nonatomic,strong)  FMDatabase *fmdb;
@end
@implementation ViewController
-(NSMutableArray *)shops
{
    if (!_shops)
    {
         _shops =[NSMutableArray array];//初始化数组
    }
    return _shops;
}
- (void)viewDidLoad {
    [super viewDidLoad];
    _tbv = [[UITableView alloc] initWithFrame:self.view.bounds];
    [self.view addSubview:_tbv];
    _tbv.dataSource = self;
    _tbv.separatorStyle = UITableViewCellSeparatorStyleNone;//去除tableview上面的横线
    self.tbv.contentInset = UIEdgeInsetsMake(64, 0, 0 , 0 );
    UISearchBar *uscb = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 20, 320, 44)];
    [self.view addSubview:uscb];
    uscb.delegate = self;
    NSString *filename = [NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory
                                                              , NSUserDomainMask, YES).lastObject stringByAppendingString:@"wup4.sqllite"] ;
    
    _fmdb = [[FMDatabase alloc] initWithPath:filename];//初始化sqlite
    [_fmdb open];//打开数据库
//   建表
    [_fmdb executeUpdate:@"CREATE TABLE IF NOT EXISTS t_shop (id integer PRIMARY KEY, name text NOT NULL, price real);"];
    /**
     *  数据表插入数据方法
     */
     for (int i = 0 ;i < 100 ; i ++)
     {
         NSString *str = [NSString stringWithFormat:@"手机%d",i];
         [_fmdb executeUpdateWithFormat:@"INSERT INTO t_shop(name, price) VALUES (%@, %u);",str,arc4random() % 1000];
     }
    /**
     *  数据表检索,while循环每次获取到下一行数据时将数据转换成模型并添加到数组中。
     *  fmres.next返回的事bool类型,获取到为真,检索完成即为假。
     */
    FMResultSet *fmres  = [_fmdb executeQuery:@"SELECT name,price FROM t_shop;"];//数据库查询命令
    while (fmres.next) {
        shop *testshop = [[shop alloc] init];
        testshop.name  =  [fmres stringForColumn:@"name"];
        testshop.price =  [fmres stringForColumn:@"price"];
        
   
        [self.shops addObject:testshop];
        
    }
    NSLog(@"%d",_shops.count);
    NSLog(@"Retain count is %ld", CFGetRetainCount((__bridge CFTypeRef)_shops));//ARC下打印retain count
//    [_fmdb executeUpdate:@"DELETE FROM t_shop;"];
   
};
#pragma mark - searchbar 的代理方法
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
    NSString *sql  = [NSString stringWithFormat:@"SELECT name,price FROM t_shop WHERE name LIKE ‘%%%@%%‘ OR price LIKE ‘%%%@%%‘;",searchText,searchText];
    
    FMResultSet *fmres  = [self.fmdb executeQuery:sql];//数据库查询命令
    
    NSLog(@"%d",_shops.count);
    NSLog(@"Retain count is %ld", CFGetRetainCount((__bridge CFTypeRef)_shops));//ARC下打印retain count
    self.shops = nil;
    while (fmres.next) {
        shop *testshop = [[shop alloc] init];
        testshop.name  =  [fmres stringForColumn:@"name"];
        testshop.price =  [fmres stringForColumn:@"price"];
        
        
        [self.shops addObject:testshop];
        
    }
    
    NSLog(@"Retain count is %ld", CFGetRetainCount((__bridge CFTypeRef)_shops));//ARC下打印retain count
    [self.tbv reloadData];
}
#pragma mark - tableview 的代理方法
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.shops.count;
    
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *ID = @"cell";
    
     UITableViewCell *cell  = [tableView dequeueReusableCellWithIdentifier:ID];
    if (cell == nil) {
         cell  = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];
    }
    
    shop *test2shop = self.shops[indexPath.row];
    cell.textLabel.text = test2shop.name;
    cell.detailTextLabel.text   = test2shop.price;
    
    
    
    return cell;
}
@end

FMDB的使用

标签:

原文地址:http://my.oschina.net/wupengnash/blog/420284

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!