zoukankan      html  css  js  c++  java
  • 封装数据库

      1 #import "DBManager.h"
      2 #import "FMDatabase.h"
      3 @implementation DBManager
      4 {
      5     FMDatabase *_fmdb;
      6     NSLock *_lock;
      7 }
      8 +(DBManager *)shareManager{
      9     static DBManager *manager=nil;
     10     static dispatch_once_t once;
     11     dispatch_once(&once, ^{
     12         if (manager==nil) {
     13             manager=[[DBManager alloc]init];
     14         }
     15     });
     16     return manager;
     17 }
     18 
     19 -(id)init{
     20     self=[super init];
     21     if (self) {
     22         
     23         _lock=[[NSLock alloc]init];
     24         
     25 //        [_lock lock];  加锁
     26 //        [_lock unlock];  解锁
     27         
     28         NSString *path=[NSHomeDirectory() stringByAppendingString:@"/Documents/user.db"];
     29         _fmdb=[[FMDatabase alloc]initWithPath:path];
     30         if ([_fmdb open]) {
     31             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) 字符型
     32             // create table if not exists 表名(属性 属性的类型,属性 属性的类型)
     33             //primary key 主键 autoincrement 自增
     34             BOOL success=[_fmdb executeUpdate:createSql];
     35             if (!success) {
     36                 NSLog(@"create:%@",_fmdb.lastError);
     37             }
     38         }
     39     }
     40     return self;
     41 }
     42 // 插入数据
     43 -(void)insertModel:(UserModel *)model{
     44     [_lock lock];
     45     NSString *insertSql=@"insert into userInfo(name,age,image) values(?,?,?)";
     46     //insert into 表名(属性名,属性名) values(?,?)
     47     UIImage *image=model.headImage;
     48     NSData *data=UIImagePNGRepresentation(image);//UIImagePNGRepresentation 这个方法是可以将png类型的图片转化成 NSData
     49     BOOL success=[_fmdb executeUpdate:insertSql,model.name,model.age,data];//executeUpdate 后面需要去接 继承与NSObject类所实例化的对象 否则会抛出EXC_BAD_ACCESS错误
     50     if (!success) {
     51         NSLog(@"%@",_fmdb.lastError);
     52     }
     53     [_lock unlock];
     54 }
     55 //删除数据
     56 -(void)deleteDataWith:(NSNumber *)dataID{
     57     [_lock lock];
     58     NSString *deleteSql=@"delete from userInfo where id=?";// delete from 表名 where 属性=?
     59     BOOL success=[_fmdb executeUpdate:deleteSql,dataID];
     60     if (!success) {
     61         NSLog(@"%@",_fmdb.lastError);
     62     }
     63     [_lock unlock];
     64 }
     65 
     66 -(void)updateWith:(UserModel *)model{
     67     [_lock lock];
     68     NSString *updateSql=@"update userInfo set name=?,age=?,image=? where id =?";// update 表名 set 属性名=?,属性名=? where 属性名=?
     69     UIImage *image=model.headImage;
     70     NSData *data=UIImagePNGRepresentation(image);
     71     NSNumber *IDNum=[NSNumber numberWithInteger:[model.id1 integerValue]];
     72     BOOL success=[_fmdb executeUpdate:updateSql,model.name,model.age,data,IDNum];
     73     if (!success) {
     74         NSLog(@"%@",_fmdb.lastError);
     75     }
     76     [_lock unlock];
     77 }
     78 
     79 -(NSArray *)selectAllData{
     80     [_lock lock];
     81     NSString *selSQL=@"select * from userInfo";//* 查找全部 select * from 表名
     82     FMResultSet *set=[_fmdb executeQuery:selSQL];
     83     NSMutableArray *array=[[NSMutableArray alloc]init];
     84     while ([set next]) {
     85         UserModel *model=[[UserModel alloc]init];
     86         model.name=[set stringForColumn:@"name"];
     87         NSData *data=[set dataForColumn:@"image"];
     88         UIImage *image=[UIImage imageWithData:data];//把NSData类型的数据转化成image
     89         model.headImage=image;
     90         model.age=[NSNumber numberWithInteger:[[set stringForColumn:@"age"] integerValue]];
     91         [array addObject:model];
     92     }
     93     [_lock unlock];
     94     return [array copy];
     95 }
     96 // 查找一条语句是否存在
     97 -(BOOL)isOrNotIN:(NSNumber *)idOne{
     98     NSString *sql=@"select * from userInfo where id=?";//
     99     FMResultSet *set=[_fmdb executeQuery:sql];
    100     return [set next];
    101 }
    102 
    103 
    104 @end
  • 相关阅读:
    Nodejs核心模块之net和http的使用详解
    Node基础:1
    js中const,var,let区别
    count(1)与count(*)比较
    基于物联网实现的智能物流系统
    树莓派 Learning 002 装机后的必要操作 --- 07 设置静态IP地址
    树莓派 Learning 002 装机后的必要操作 --- 06 共用键鼠 之 windows和树莓派
    Ubuntu Linux 使用桂电校园网 上网
    树莓派 Learning 002 装机后的必要操作 --- 00 修改键盘布局
    树莓派 Learning 002 装机后的必要操作 --- 05 给树莓派搭建“x86 + pi”环境 -- 安装**32位运行库** -- 解决`E:未发现软件包 xxx` 问题
  • 原文地址:https://www.cnblogs.com/liaods/p/4787591.html
Copyright © 2011-2022 走看看