zoukankan      html  css  js  c++  java
  • ios数据库FMDB

    一、下载fmdb类库

    二、添加libsqulite3.0.dylib

    三、添加头文件#import "FMDB.h"

    四、打开数据库

    a、设置路径NSString *path = [[NSSearchPathForDirectoriesInDomainas(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]  stringByAppendingPathComponent:@"shops.sqlite"];

    b、设置强引用属性 @property (nonatomic, strong) FMDatabase *db;

    c、self.db =  [FMDatabase databaseWithPath:path];//返回一个数据库对象

    d、打开 [self.db open];

    //两个重要语句

    //executeQuery:查询数据

    //executeUpdate:除查询数据以外的其他操作

    五、创表

    [self.db execureUpdate:@"CREATE TABLE IF NOT EXISTS t_shop (if integer PRIMARY KEY, name text NOT NULL, price real);"];

    六、插入数据

    NSString *name = [NSString stringWithFormat:@"手机-%d",i];

    [self.db executeUpdateWithFormat:@"INSERT INTO t_shop(name, price) VALUES (%@, %d);",name,arc4random()%1000];

    七、读取数据

    a、得到结果集

    FMResultSet *set = [self.db executeQuery:@"SELECT * FROM t_shop;"];

    b、不断取出数据

    while(set.next){

       //获得当前所指向的数据

    NSString *name = [set stringForColumn:@"name"];

    double price =[set doubleForColumn:@"price"];

    NSLog(@"%@  %f",name , price);

    }

    八、删除数据

    [self.db executeUpdate:@"DELETE FROM t_SHOP WHERE price < 500;"];

    九、封装数据库

    a、不让控制器接触数据库,设置一个工具类ShopTool

    b、设置数据模型Shop

    c、在ShopTool中,将db设置成全局变量

    static FMDatabase *_db;

    b、初始化 +(void)initalize

    .......

    封装的ShopTool代码:

    #import <Foundation/Foundation.h>
    @class HMShop;
    
    @interface HMShopTool : NSObject
    + (NSArray *)shops;
    + (void)addShop:(HMShop *)shop;
    @end
    
    
    #import "HMShopTool.h"
    #import "FMDB.h"
    #import "HMShop.h"
    
    @implementation HMShopTool
    
    static FMDatabase *_db;
    
    + (void)initialize
    {
        // 1.打开数据库
        NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"shops.sqlite"];
        _db = [FMDatabase databaseWithPath:path];
        [_db open];
        
        // 2.创表
        [_db executeUpdate:@"CREATE TABLE IF NOT EXISTS t_shop (id integer PRIMARY KEY, name text NOT NULL, price real);"];
    }
    
    + (void)addShop:(HMShop *)shop
    {
        [_db executeUpdateWithFormat:@"INSERT INTO t_shop(name, price) VALUES (%@, %f);", shop.name, shop.price];
    }
    
    + (NSArray *)shops
    {// 得到结果集
        FMResultSet *set = [_db executeQuery:@"SELECT * FROM t_shop;"];
        
        // 不断往下取数据
        NSMutableArray *shops = [NSMutableArray array];
        while (set.next) {
            // 获得当前所指向的数据
            HMShop *shop = [[HMShop alloc] init];
            shop.name = [set stringForColumn:@"name"];
            shop.price = [set doubleForColumn:@"price"];
            [shops addObject:shop];
        }
        return shops;
    }
    @end

    控制器代码:

    #import "HMViewController.h"
    //#import "FMDB.h"
    #import "HMShop.h"
    #import "HMShopTool.h"
    
    @interface HMViewController ()
    //@property (nonatomic, strong) FMDatabase *db;
    @end
    
    @implementation HMViewController
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        // 1.打开数据库
    //    NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"shops.sqlite"];
    //    self.db = [FMDatabase databaseWithPath:path];
    //    [self.db open];
    //    
    //    // 2.创表
    //    [self.db executeUpdate:@"CREATE TABLE IF NOT EXISTS t_shop (id integer PRIMARY KEY, name text NOT NULL, price real);"];
        // executeQuery:查询数据
    //    [self.db executeQuery:<#(NSString *), ...#>];
        
        // executeUpdate:除查询数据以外的其他操作
    //    [self.db executeUpdate:<#(NSString *), ...#>];
    }
    
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    {
    //    for (int i = 0; i<100; i++) {
    //        HMShop *shop = [[HMShop alloc] init];
    //        shop.name = [NSString stringWithFormat:@"枕头--%d", i];
    //        shop.price = arc4random() % 200;
    //        [HMShopTool addShop:shop];
    //    }
        
        NSArray *shops = [HMShopTool shops];
        for (HMShop *shop in shops) {
            NSLog(@"%@ %f", shop.name, shop.price);
        }
        
    //    [self.db executeUpdate:@"DELETE FROM t_shop WHERE price < 800;"];
    //    
    //    [self query];
    }

    shop.h模型代码:

    #import <Foundation/Foundation.h>
    
    @interface HMShop : NSObject
    @property (nonatomic, copy) NSString *name;
    @property (nonatomic, assign) double  price;
    @end
     
     
  • 相关阅读:
    Codeforces Gym 100571A A. Cursed Query 离线
    codeforces Gym 100500 J. Bye Bye Russia
    codeforces Gym 100500H H. ICPC Quest 水题
    codeforces Gym 100500H A. Potion of Immortality 简单DP
    Codeforces Gym 100500F Problem F. Door Lock 二分
    codeforces Gym 100500C D.Hall of Fame 排序
    spring data jpa 创建方法名进行简单查询
    Spring集成JPA提示Not an managed type
    hibernate配置文件中的catalog属性
    SonarLint插件的安装与使用
  • 原文地址:https://www.cnblogs.com/zhongxuan/p/4798347.html
Copyright © 2011-2022 走看看