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
     
     
  • 相关阅读:
    windows根据端口号杀进程
    eclipse快捷键
    Parameter 'ids' not found. Available parameters are [array]
    java 根据ip获取地区信息(淘宝和新浪)
    unicode转中文
    Maven构建项目出现No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
    Spring Boot使用注解实现AOP
    java源码equals和hashCode
    SpringBoot+mybatis使用@Transactional无效
    第三十一节 用类对函数进行装饰
  • 原文地址:https://www.cnblogs.com/zhongxuan/p/4798347.html
Copyright © 2011-2022 走看看