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

java对数据库操作的封装是怎么样的?

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

我来回答

3个回答

懂视网 时间: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

java本身对数据库没有封装,对数据库封装好的有hibernate,ibatis(mybatis),hibernate封装的比较彻底,基本操作不用自己写SQL语句,ibatis的话还是要自己写SQL语句,比较灵活.

热心网友 时间:2022-04-08 12:15

对数据库操作的data base helper类有很多 随你自己写都行 网上搜索一大把
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 ...感觉私密处不那么紧致了,有什么能让私密处变紧致的办法吗?_百度知 ... 怎么样才可以下载你画我猜 下载游戏你画我猜 为何秦始皇穿黑龙袍,而后世皇帝大多穿黄龙袍? 跪求你画我猜辅助绘图工具,哪位老铁给我分享一个,先谢了 梦见儿子龙袍加身,儿子穿着黄袍和我睡在一齐,成了小皇帝 下载你画我猜游戏 唐温如,凭借一首诗艳冠元明诗坛,怎样看待? 昨晚做了个梦,梦见龙皇帝,,梦里好漫长,醒来好像也就那么个半小时不到吧。 你画我猜提示应用程序未安装解决方法 求手机游戏《你画我猜》iPhone版本下载。谢谢! 形容黄脸婆的句子有哪些? 手机可以下载“你画我猜”游戏吗? 努尔哈赤说他永远忠于李家,他做到了吗? 你画我猜谷歌市场安装教程 朱元璋为何要杀自己的亲儿子,这和他做的梦有什么关联? 我也经常梦见古代 一个是清朝 一个是中华*时期 而且我已经好几次梦见穿龙袍的男人 但是看不清脸 怎么下载 你画我猜 梦到别人一家穿着黄色龙袍好不好? 梦见自己的老公身上穿着龙袍的样子在躺着被推走了 171号段手机,怎么注销和报停? 171号码不使用了但是实名制了,想注销卡,但是找不到卖卡的人了,因为它既不属于联通也不属于移动,已 数据库封装类 216的立方根是多少?要过程 请教一下学霸们,216的立方根等于6,是怎么算出来是6的,总不能叫我一 216的立方根怎么样算出来是6 -216的立方根是多少?-27的立方根与根号81之和呢? 大家快帮忙想几道数学题 知道药品的名字和条形码,怎么才能查出它的生产批号和生产日期 香烟条形码可以看生产日期吗? 手机条形码可以扫出该商品的生产日期吗 炒锅条形码查询6915389901807 能查出生产日期吗? 家有瓶酒 有条形码想查询一下生产日期. 不是说不粘锅一点不粘么?怎么我家刚买的才用两次就开始粘锅了?! 为什么买的不粘锅 会粘锅? 那种蜂窝底的炒锅是不粘锅吗? 女人养生必须喝姜茶 姜茶对女性有哪些作 女人喝红糖姜茶什么时候喝好,红糖姜茶的功效与作用 做到看书快有什么诀窍? 怎么快速阅读背书?