热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LKDBHelperSqlite操作数据库

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

首先这里要说明一下,为什么用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

 

 


推荐阅读
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
author-avatar
lk神密勇士
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有