• LKDBHelper Sqlite操作数据库


    首先这里要说明一下,为什么用FMDB而不用Core Data呢,因为我们不知道Core Data是如何映射对象里面的属性关系的,如果我们更改了属性的话,就会报错

    首先是创建LKDBHelper对象

        LKDBHelper * dbHelper = [LKDBHelper getUsingLKDBHelper];

    然后根据model创建表

        [dbHelper createTableWithModelClass:[MyWorkModelclass]];

    好了,这就创建完了,接下来看看这个model里面的一些操作

    .h文件

    #import "ITTBaseModelObject.h"
    
    #import "MyWorkListModel.h"
    #import "MyWorkSettingModel.h"
    @interface MyWorkModel : ITTBaseModelObject
    
    @property(retain,nonatomic) UIImage  * thumbnail;
    @property(retain,nonatomic) NSString * workName;
    @property(retain,nonatomic) NSString * workNumber;
    @property(retain,nonatomic) NSString * createDate;
    @property(retain,nonatomic) NSString * userId;
    @property(retain,nonatomic) NSString * templateId; // 预览的时候用
    @property(retain,nonatomic) NSString * workState;// 作品状态 1,自由状态  2,购物车状态
    @property(retain,nonatomic) NSString * workType; // 作品类型
    // db attri  在购物车结算的时候用
    @property (retain,nonatomic) NSString * price;
    @property (retain,nonatomic) NSString * productId;
    @property (retain,nonatomic) NSString * subProId;
    @property (retain,nonatomic) NSString * pId;// 上传服务器返回的作品id
    @property (retain,nonatomic) NSString * thumnailId;//缩略图路径
    
    
    @property (nonatomic, retain)MyWorkSettingModel *myWorkSettingModel;
    @property (nonatomic, retain)MyWorkListModel *myWorkListModel;
    
    
    +(MyWorkModel *) getMyWorkWithWorkId:(NSInteger ) rowId;
    +(NSMutableArray * ) searchAllMyWorkWithUid:(NSString*) uid;
    
    +(BOOL)updateMyWorkState:(MyWorkModel *) myWork workState:(NSString *)workState;
    +(void)upMyWorkUserID:(MyWorkModel *)myWork userId:(NSString*) uid;
    +(void)updataMyWork:(MyWorkModel * )myWork updataPar:(NSDictionary * ) paraDic;
    
    +(NSMutableArray * ) searchInShopCarWorkWithUid:(NSString*) uid;
    +(void) deleteMyWork:(MyWorkModel *)myWork;
    +(BOOL)setMyworWithPid:(NSString * ) pid myWork:(MyWorkModel *)myWork;
    +(MyWorkModel *) getMyworkWithPid:(NSString*)pid;
    
    @end

    .m文件

    //
    //  MyWorkModel.m
    //  wanhuPrint
    //
    //  Created by Mao on 13-7-30.
    //
    //
    
    #import "MyWorkModel.h"
    @implementation MyWorkModel
    
    - (id)init
    {
        self = [super init];
        if (self) {
        }
        return self;
    }
    
    /**
     这里映射的时候要注意,返回的诗歌字典,左边是对应的属性名,右边是LKSQLInherit
     **/
    +(NSDictionary *)getTableMapping
    {
        return @{
                 @"workName":LKSQLInherit,
                 @"workNumber":LKSQLInherit,
                 @"createDate":LKSQLInherit,
                 @"userId":LKSQLInherit,
                 @"workType":LKSQLInherit,
                 @"userId": LKSQLInherit,
                 @"templateId":LKSQLInherit,
                 @"workState":LKSQLInherit,
                 @"price":LKSQLInherit,
                 @"productId":LKSQLInherit,
                 @"subProId":LKSQLInherit,
                 @"pId":LKSQLInherit,
                 @"thumnailId":LKSQLInherit
                 };
    }
    
    /*
     这个方法返回表名
     */
    +(NSString *)getTableName
    {
        return @"MyWorksTable";
    }
    
    /*
     这个方法返回版本号,用于更新数据库
     */
    +(int)getTableVersion
    {
        return 1;
    }
     
    -(void)dealloc
    {
        [_createDate release];
        [_workName release];
        [_thumbnail release];
        [_workNumber release];
        [_userId release];
        [_workState release];
        [_templateId release];
        [_subProId release];
        [_productId release];
        [_price release];
        [_pId release];
        [_thumnailId release];
        [super dealloc];
    }
    
    #pragma mark - DBUtil
    /*获取单一作品,从一个model根据rowid查询一个model,注意where后面跟NSString or NSDictionary or nil,orderBy是排序方法,for example:Ascending "name asc",Descending "name desc",此处不用排序。查询方法返回的是一个model或者一个NSArray
     */
    +(MyWorkModel *) getMyWorkWithWorkId:(NSInteger ) rowId
    {
        LKDBHelper * help = [LKDBHelper getUsingLKDBHelper];
        MyWorkModel * myWork=[help searchSingle:[MyWorkModel class] where:[NSString stringWithFormat:@"rowId=%d",rowId]  orderBy:nil];
        return myWork;
    }
    
    // 显示我所有的作品,根据uid查询一组model,返回NSArray
    +(NSMutableArray * ) searchAllMyWorkWithUid:(NSString*) uid
    {
      NSMutableArray * arr= [[LKDBHelper getUsingLKDBHelper] search:[MyWorkModel class] where:[NSString stringWithFormat:@"userId=%@",uid] orderBy:@"rowId desc" offset:0 count:100000];
        return  arr;
    }
    
    /*
     根据uid更新一个model,where后面跟主键或者rowid
     */
    +(void)upMyWorkUserID:(MyWorkModel *)myWork userId:(NSString*) uid
    {
        LKDBHelper * helper =[LKDBHelper getUsingLKDBHelper];
        [helper updateToDB:[MyWorkModel class] set:[NSString stringWithFormat:@"userId=%@",uid] where: @{@"rowId":[NSString stringWithFormat:@"%d",myWork.rowid]}];
    }
    
    //修改我的作品状态 1,自由状态  2.在购物车中
    +(BOOL)updateMyWorkState:(MyWorkModel *) myWork workState:(NSString *)workState
    {
        LKDBHelper *help =[LKDBHelper getUsingLKDBHelper];
        if([help isExistsClass:[MyWorkModel class] where:@{@"rowId":[NSString stringWithFormat:@"%d",myWork.rowid]}]){
            BOOL isUpdate= [ help updateToDB:[MyWorkModel class] set:[NSString stringWithFormat:@"workState = %@",workState] where:@{@"rowId":[NSString stringWithFormat:@"%d",myWork.rowid]}];
            return isUpdate;
        }
        return NO;
    }
    
    +(void)updataMyWork:(MyWorkModel * )myWork updataPar:(NSDictionary * ) paraDic
    {
        
        NSString * keyStr = [paraDic objectForKey:@"KEY"];
        NSString * value =[paraDic objectForKey:@"VALUE"];
        LKDBHelper * help = [LKDBHelper getUsingLKDBHelper];
        [help updateToDB:[MyWorkModel class] set:[NSString stringWithFormat:@"%@ = %@",keyStr,value] where:@{@"rowId":[NSString stringWithFormat:@"%d",myWork.rowid]}];
    }
    
    //设置pid
    +(BOOL)setMyworWithPid:(NSString * ) pid myWork:(MyWorkModel *)myWork
    {
        LKDBHelper  * help = [LKDBHelper getUsingLKDBHelper];
        if([help isExistsClass:[MyWorkModel class] where:@{@"rowId":[NSString stringWithFormat:@"%d",myWork.rowid]}]){
            BOOL isSetPid =[help updateToDB:[MyWorkModel class] set: [NSString stringWithFormat:@"pId= %@",pid] where:@{@"rowId":[NSString stringWithFormat:@"%d",myWork.rowid]}];
            return isSetPid;
        }
        return NO;
    }
    
    +(MyWorkModel *) getMyworkWithPid:(NSString*)pid
    {
        LKDBHelper * help = [LKDBHelper getUsingLKDBHelper];
       MyWorkModel*myWork =[help searchSingle:[MyWorkModel class] where:[NSString stringWithFormat:@"pId=%@",pid] orderBy:nil];
        return  myWork;
    }
    //获取所有购物车中的作品
    +(NSMutableArray * ) searchInShopCarWorkWithUid:(NSString*) uid
    {
        NSMutableArray * arr= [[LKDBHelper getUsingLKDBHelper] search:[MyWorkModel class] where:[NSString stringWithFormat:@"userId =%@ and workState = 2",uid] orderBy:@"createDate" offset:0 count:1000];
        return  arr;
    }
    +(void) deleteMyWork:(MyWorkModel *)myWork
    {
        LKDBHelper * help = [LKDBHelper getUsingLKDBHelper];
        [help deleteToDB:myWork callback:^(BOOL result) {
            if (!result) {
                [help deleteToDB:myWork];
            }
        }];
    }
    @end

     

  • 相关阅读:
    分别使用vue和react创建一个可伸缩的树
    渲染一颗树(分别使用vue和react创建)
    n皇后问题JS实现(N-Queens)
    中序遍历二叉树(js)
    LeetCode 258 Add Digits
    js二维数组去重
    js 数组中sort方法存在的问题
    原生js实现一个简单轮播效果
    原生js实现一个连连看小游戏(三)-----------点击列表获取索引
    js生成随机不重复数字的几种方法
  • 原文地址:https://www.cnblogs.com/xiaobaizhu/p/3373111.html
Copyright © 2020-2023  润新知