问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

什么是封装数据库?

发布网友 发布时间:2022-04-08 09:28

我来回答

2个回答

懂视网 时间:2022-04-08 13:49


#import "DBManager.h"
#import "FMDatabase.h"
@implementation DBManager
{
    FMDatabase *_fmdb;
    NSLock *_lock;
}
+(DBManager *)shareManager{
    static DBManager *manager=nil;
    static dispatch_once_t once;
    dispatch_once(&once, ^{
        if (manager==nil) {
            manager=[[DBManager alloc]init];
        }
    });
    return manager;
}

-(id)init{
    self=[super init];
    if (self) {
        
        _lock=[[NSLock alloc]init];
        
//        [_lock lock];  加锁
//        [_lock unlock];  解锁
        
        NSString *path=[NSHomeDirectory() stringByAppendingString:@"/Documents/user.db"];
        _fmdb=[[FMDatabase alloc]initWithPath:path];
        if ([_fmdb open]) {
            NSString *createSql=@"create table if not exists userInfo(id integer primary key autoincrement,name varchar(256),age integer,image blob)";//创建一个userInfo表,表中有id、name、age、image 四个属性。 blob 是用来存储2进制的。 integer 整型varchar(256) 字符型
            // create table if not exists 表名(属性 属性的类型,属性 属性的类型)
            //primary key 主键 autoincrement 自增
            BOOL success=[_fmdb executeUpdate:createSql];
            if (!success) {
                NSLog(@"create:%@",_fmdb.lastError);
            }
        }
    }
    return self;
}
// 插入数据
-(void)insertModel:(UserModel *)model{
    [_lock lock];
    NSString *insertSql=@"insert into userInfo(name,age,image) values(?,?,?)";
    //insert into 表名(属性名,属性名) values(?,?)
    UIImage *image=model.headImage;
    NSData *data=UIImagePNGRepresentation(image);//UIImagePNGRepresentation 这个方法是可以将png类型的图片转化成 NSData
    BOOL success=[_fmdb executeUpdate:insertSql,model.name,model.age,data];//executeUpdate 后面需要去接 继承与NSObject类所实例化的对象 否则会抛出EXC_BAD_ACCESS错误
    if (!success) {
        NSLog(@"%@",_fmdb.lastError);
    }
    [_lock unlock];
}
//删除数据
-(void)deleteDataWith:(NSNumber *)dataID{
    [_lock lock];
    NSString *deleteSql=@"delete from userInfo where id=?";// delete from 表名 where 属性=?
    BOOL success=[_fmdb executeUpdate:deleteSql,dataID];
    if (!success) {
        NSLog(@"%@",_fmdb.lastError);
    }
    [_lock unlock];
}

-(void)updateWith:(UserModel *)model{
    [_lock lock];
    NSString *updateSql=@"update userInfo set name=?,age=?,image=? where id =?";// update 表名 set 属性名=?,属性名=? where 属性名=?
    UIImage *image=model.headImage;
    NSData *data=UIImagePNGRepresentation(image);
    NSNumber *IDNum=[NSNumber numberWithInteger:[model.id1 integerValue]];
    BOOL success=[_fmdb executeUpdate:updateSql,model.name,model.age,data,IDNum];
    if (!success) {
        NSLog(@"%@",_fmdb.lastError);
    }
    [_lock unlock];
}

-(NSArray *)selectAllData{
    [_lock lock];
    NSString *selSQL=@"select * from userInfo";//* 查找全部 select * from 表名
    FMResultSet *set=[_fmdb executeQuery:selSQL];
    NSMutableArray *array=[[NSMutableArray alloc]init];
    while ([set next]) {
        UserModel *model=[[UserModel alloc]init];
        model.name=[set stringForColumn:@"name"];
        NSData *data=[set dataForColumn:@"image"];
        UIImage *image=[UIImage imageWithData:data];//把NSData类型的数据转化成image
        model.headImage=image;
        model.age=[NSNumber numberWithInteger:[[set stringForColumn:@"age"] integerValue]];
        [array addObject:model];
    }
    [_lock unlock];
    return [array copy];
}
// 查找一条语句是否存在
-(BOOL)isOrNotIN:(NSNumber *)idOne{
    NSString *sql=@"select * from userInfo where id=?";//
    FMResultSet *set=[_fmdb executeQuery:sql];
    return [set next];
}


@end

封装数据库

标签:

热心网友 时间:2022-04-08 10:57

封装的是操作数据库的一系列方法.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 江苏善和堂中医养生有限公司怎么样? 浙江有哪18家连锁药店?药店联盟有哪些成员? 请问那些药店可以全国加盟需要多少资金 御本堂大药房加盟宣传资料 胜利镇有几家慢性病药店 哈尔滨真道堂大药房有限公司怎么样? 写论文的时候,插入分节符(下一页),下一节开头段前有些能空行有些空不了行,我估计是第一个碰到的。 word 插入分节符 明明点的是下一页 ,结果插入的却是分节符(连续),这是怎么回事? word里插入连续分节符后,后面的内容移到下一页,怎么解决? 请问word中使用连续分节符之后为什么后面的文字会在下一页,现在上一页有大段空白,无法将文字调整上去 在excel单元格中插入分隔符后怎么输入文字 我手机的双卡两个我要登录另一个怎么出来的还是原来的那个? 刮痧能治什么病呢? 请问两张手机卡怎么用同一个? 1.刮痧有啥好处?2.汗蒸与刮痧的区别 刮痧有什么作用?可以治疗或改善什么? 刮痧的好处有谁知道? 刮痧对身体的好处有多大? 我想添加"行书"作为WORD文档的字体,可以怎样操作? 刮痧有什么好处和坏处,刮痧有哪些好处 OPPO手机自带的剪辑软件叫什么? 东方财富手机APP中如何更改身份证信息? 北京交警APP身份证号码怎样修改北京交警APP身份证号码怎样修改? 你好!银行身份证过期,可以在app上面更改吗? 我的常州App怎么修改身份证号码 金骏眉茶叶放车后背箱一年多了还能喝吗 北京市昌平区回龙观龙园派出所电话是多少? 北京市昌平区龙域中路融泽嘉园1号院10所属哪个派出所管辖范围 北京昌平区龙园派出所这几天算不算高风险? 回龙观龙园派出所周末能办暂住证吗 北京是昌平区回龙观龙腾苑三区所属哪个派出所,具体地址在哪个街道? 现在回龙观派出所都管哪个区域 龙园派出所户籍大厅 异地身份证补办 多长时间 请问谁知道北京昌平回龙观“龙园派出所”的所长、指导员、副所长都叫什么名字?谢谢各位大侠!!! 北京回龙观天龙苑小区属于哪个派出所管辖 回龙观龙园派出所几点上班呢 mct是什么意思? 龙园山庄属于深圳市哪个派出所管辖? 太原市长风东街东中环龙园小区属哪个派出所管辖? mct角膜塑形镜好吗?