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
  • 相关阅读:
    你们要的Intellij IDEA 插件开发秘籍,来了!
    【JDK 11】关于 Java 模块系统,看这一篇就够了
    《水浒传》中的物价
    读书廿一日计划
    诗词记录
    PLSQL14不识别Oracle数据库以及tnsnames.ora中配置的连接串(连接远程Oracle,本地仅安装客户端)
    框架安全之Shiro渗透
    .NET 3.5 安装
    中间件安全之Nginx渗透
    中间件安全之JBoss渗透
  • 原文地址:https://www.cnblogs.com/liaods/p/4787591.html
Copyright © 2011-2022 走看看