zoukankan      html  css  js  c++  java
  • 数据库的使用

     

    #import <Foundation/Foundation.h>

    #import "FMDatabase.h"

    #import "FMDatabaseQueue.h"

    #import "DeviceInfo.h"

    #import "DeviceGroupInfo.h"

    #import "TimeingInfo.h"

    #import "UserInfo.h"

    #define DeviceTable_SQL  @"DeviceInfoTable"

    #define SQL_ContentKey     @"content"

    @interface SQLdataManger : NSObject

    + (SQLdataManger*)instance;

    + (void)clearInstance;

    //按照给定的语句查询

    - (NSArray *)queryOtherDataWithSql:(NSString *)sql;

    //读取所有的设备

    - (NSArray *)queryDeviceInfoTable;

    - (DeviceInfo *)queryDataWithMAC:(NSString *)MAC;

    //插入单条设备指令

    -(BOOL)insertOrReqlaceSignalDevice:(DeviceInfo *)devInfo;

    - (BOOL)deleteTableDataWithMAC:(NSString *)MAC;

    //用户表

    - (NSDictionary *)queryUserData:(NSString *)userName;

    -(BOOL)deleteUserWithName:(NSString *)userName;

    -(BOOL)insertOrReqlaceUserDataWithName:(UserInfo *)userInfo;

    -(NSMutableArray *)allGroupNames;//获取所有的控制组合

    -(BOOL)deleteGroupWith:(NSString *)groupName;//删除组合

    -(BOOL)insertGroupWith:(DeviceGroupInfo *)groupName;//添加组合

    //通过sql查询数据

    -(NSMutableArray *)executeQueryData:(NSString *)sql;

    //执行SQL指令

    -(BOOL)executeSQL:(NSString *)sql;

    -(BOOL)insertOrReqlaceTimeDataWithInfo:(TimeingInfo *)info;

    @end

    //

    //  SQLdataManger.m

    //  SSProduct

    //

    //  Created by Showsoft_002 on 13-8-20.

    //  Copyright (c) 2013 Showsoft_002. All rights reserved.

    //

    #import "SQLdataManger.h"

    static SQLdataManger * instance=nil;

    #define SQLfileName @"__MACOSX"

    //#define SQLfileName @"ShowsoftSQL.sql"

    #define SQLAESEncry

    #define AESEncry_KEY @"showsoftAESEncryKEYSSProduct0123"

    @interfaceSQLdataManger(){

        NSString *sqlDataPath;

    }

    @end

    @implementation SQLdataManger

    +(SQLdataManger*)instance

    {

        if( instance == nil ){

    //        static dispatch_once_t onceToken;

            @synchronized(self) {

                instance =  [[SQLdataManger alloc] init];

                [instance createTable];

                

                NSLog(@"-------------------------startInit");

            }

    //        });

        }

        returninstance;

    }

    + (void)clearInstance{

        if (instance) {

            instance = nil;

            

        }

    }

    - (void)createTable {

        NSFileManager * fileManager = [NSFileManagerdefaultManager];

            

        NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

        NSString *paths = [[path objectAtIndex:0] stringByAppendingPathComponent:SQLfileName];

        

    //    [fileManager removeItemAtPath:paths error:nil];

        

        sqlDataPath = paths;

        

        if ([fileManager fileExistsAtPath:paths] == NO) {

            // create it

            FMDatabase * db = [FMDatabase databaseWithPath:paths];

            if ([db open]) {

                

                //建立一张表,用于存设备信息

                NSString * sql = @"CREATE TABLE 'DeviceInfoTable' (MAC text identity primary key , 'ip' VARCHAR, 'deviceName' VARCHAR,'icoType' VARCHAR,'addTime' VARCHAR)";

                BOOL res = [db executeUpdate:sql];

                if (!res) {

                    NSLog(@"error when creating db table");

                } else {

                    NSLog(@"succ to creating db table");

                }

                

                //创建组合表,存储用户组合控制信息

                sql = @"CREATE TABLE 'DeviceGroupTable' (groupName text identity primary key,'devices' VARCHAR,'addTime' VARCHAR ,'openState' VARCHAR)";

                res = [db executeUpdate:sql];

                if (!res) {

                    NSLog(@"error when creating db table");

                } else {

                    NSLog(@"succ to creating db table");

                }

                

                //创建定时管理表

                sql = @"CREATE TABLE 'DeviceTimeTable' (oneKey text dentity primary key,'mac' VARCHAR, 'toTime' VARCHAR,'repeatWeek' VARCHAR ,'action' VARCHAR,'timeType' VARCHAR ,'timeIndex' VARCHAR,'addTime' VARCHAR)";

                res = [db executeUpdate:sql];

                if (!res) {

                    NSLog(@"error when creating db table");

                } else {

                    NSLog(@"succ to creating db table");

                }

                //创建用户管理表

                sql = @"CREATE TABLE 'UserDataTable' (userName text dentity primary key,'displayName' VARCHAR, 'passWord' VARCHAR,'clientMAC' VARCHAR ,'clientID' VARCHAR,'clientName' VARCHAR ,'addTime' VARCHAR)";

                res = [db executeUpdate:sql];

                if (!res) {

                    NSLog(@"error when creating db table");

                } else {

                    NSLog(@"succ to creating db table");

                }

                

                [db close];

            } else {

                NSLog(@"error when open db");

            }

        }

    }

    - (NSString *)checkNULLstring:(NSString *)oriString{

        NSString *string = @"";

        if( !oriString ) return string;

        if( [oriString isKindOfClass:[NSNull class] ] ) return string ;

        string =[NSString stringWithFormat:@"%@" , oriString ];

        

        return string ;

    }

    - (NSArray *)queryDeviceInfoTable{

        ////@"CREATE TABLE 'UnitsRoomInfo' (onlyOne text identity primary key , 'BuildingName' VARCHAR, 'DanYuanName' VARCHAR,'UnitsName' VARCHAR,'FloorNumName' VARCHAR,'AreaBuild' VARCHAR,'AreaTaoNei' VARCHAR,'TotalPrice' VARCHAR,'SaleState' VARCHAR )";

        NSMutableArray *mutableArray = [[NSMutableArrayalloc]init];

        

        FMDatabase * db = [FMDatabasedatabaseWithPath:sqlDataPath];

        

        if ([db open]) {

            NSString * sql = [NSStringstringWithFormat:@"select * from DeviceInfoTable" ];

            NSLog(@"sql is %@" , sql);

            

            FMResultSet * rs = [db executeQuery:sql];

            

            while ([rs next]) {

                NSDictionary *dic = [rs resultDictionary] ;

                [mutableArray addObject:[self deviceInfoForm:dic]];

            }

            [db close];

        }

        return mutableArray ;

    }

    - (NSArray *)queryOtherDataWithSql:(NSString *)sql{

        NSMutableArray *mutableArray = [[NSMutableArray alloc]init] ;

        

        FMDatabase * db = [FMDatabasedatabaseWithPath:sqlDataPath];

        

        if ([db open]) {

            FMResultSet * rs = [db executeQuery:sql];

            

            while ([rs next]) {

                NSDictionary *dic = [rs resultDictionary] ;

                //            rtDic = [NSDictionary dictionaryWithDictionary:dic];

                [mutableArray addObject:[self deviceInfoForm:dic]];

            }

            [db close];

        }

        

        NSArray *sortedArray = [mutableArray sortedArrayUsingComparator: ^(DeviceInfo *obj1, DeviceInfo *obj2) {

            NSString *r1String = obj1.addTime;

            NSString *r2String = obj2.addTime;

            

            r1String = [r1String stringByReplacingOccurrencesOfString:@"-"withString:@""];

            r1String = [r1String stringByReplacingOccurrencesOfString:@" "withString:@""];

            

            r2String = [r2String stringByReplacingOccurrencesOfString:@"-"withString:@""];

            r2String = [r2String stringByReplacingOccurrencesOfString:@" "withString:@""];

            

            int value1 = [r1String integerValue];

            int value2 = [r2String integerValue];

            

            if (value1 > value2) {

                return (NSComparisonResult)NSOrderedDescending;

            }

            

            if (value1 < value2) {

                return (NSComparisonResult)NSOrderedAscending;

            }

            return (NSComparisonResult)NSOrderedSame;

        }];

        return sortedArray ;

    }

    -(BOOL)insertOrReqlaceSignalDevice:(DeviceInfo *)devInfo{

        FMDatabase * db = [FMDatabasedatabaseWithPath:sqlDataPath];

        BOOL res = NO ;

        if ([db open] ) {

            NSString * sql = @"insert or replace into DeviceInfoTable (MAC,ip,deviceName,icoType,addTime) values(?,?,?,?,?)" ;

            

            NSString *MAC = [self checkNULLstring:devInfo.mac];

            NSString *ip = [self checkNULLstring:devInfo.ip];

            NSString *deviceName = [self checkNULLstring:devInfo.deviceName];

            NSString *icoType =[NSString stringWithFormat:@"%d",devInfo.icoType];

    //        NSString *groupName=[self checkNULLstring:devInfo.parenGroupName];

            NSString *addTime = [NSStringstringWithFormat:@"%d" , (int)[[NSDatedate] timeIntervalSince1970] ];

            

            NSLog(@"addTimeString is %@" , addTime );

            

            res = [db executeUpdate:sql,MAC,ip,deviceName,icoType,addTime];

            

            [db close];

        }

        return res;

    }

    - (BOOL)deleteTableDataWithMAC:(NSString *)MAC{

        FMDatabase * db = [FMDatabasedatabaseWithPath:sqlDataPath];

        BOOL res = NO ;

        

        if ([db open]) {

            NSString * sql = [NSStringstringWithFormat:@"delete from DeviceInfoTable where MAC ='%@'" , MAC];

            

            res = [db executeUpdate:sql];

            if (!res) {

                NSLog(@"error to insert data");

            } else {

                NSLog(@"succ to insert data");

            }

            [db close];

        }

        

        return res ;

    }

    - (DeviceInfo *)queryDataWithMAC:(NSString *)MAC{

        NSMutableArray *mutableArray = [[NSMutableArrayalloc]init];

        

        FMDatabase * db = [FMDatabasedatabaseWithPath:sqlDataPath];

        

        if ([db open]) {

            NSString * sql = [NSStringstringWithFormat:@"select * from DeviceInfoTable where MAC = '%@'" , MAC];

            NSLog(@"sql is %@" , sql);

            

            FMResultSet * rs = [db executeQuery:sql];

            

            while ([rs next]) {

                NSDictionary *dic = [rs resultDictionary] ;

                [mutableArray addObject:dic];

            }

            [db close];

        }

        DeviceInfo *info=[self deviceInfoForm:[mutableArray objectAtIndex:0]];

        return info ;

    }

    -(NSMutableArray *)allGroupNames

    {

        NSMutableArray *mutableArray = [[NSMutableArrayalloc]init];

        

        FMDatabase * db = [FMDatabasedatabaseWithPath:sqlDataPath];

        

        if ([db open]) {

            NSString * sql = [NSStringstringWithFormat:@"select * from DeviceGroupTable" ];

            NSLog(@"sql is %@" , sql);

            

            FMResultSet * rs = [db executeQuery:sql];

            

            while ([rs next]) {

                NSDictionary *dic = [rs resultDictionary] ;

                DeviceGroupInfo *groupInfo=[[DeviceGroupInfo alloc]init];

                groupInfo.groupName=[dic objectForKey:@"groupName"];

                groupInfo.devMACList=[[NSMutableArrayalloc]initWithArray:[[dic objectForKey:@"devices"] componentsSeparatedByString:@"|||"]];

                groupInfo.addTime=[dic objectForKey:@"addTime"];

                groupInfo.openState=[dic objectForKey:@"openState"];

                [mutableArray addObject:groupInfo];

            }

            [db close];

        }

        return mutableArray ;

    }

    -(BOOL)deleteGroupWith:(NSString *)groupName//删除组合

    {

        FMDatabase * db = [FMDatabasedatabaseWithPath:sqlDataPath];

        BOOL res = NO ;

        

        if ([db open]) {

            NSString * sql = [NSStringstringWithFormat:@"delete from DeviceGroupTable where groupName ='%@'" , groupName];

            

            res = [db executeUpdate:sql];

            if (!res) {

                NSLog(@"error to insert data");

            } else {

                NSLog(@"succ to insert data");

            }

            [db close];

        }

        

        return res ;

    }

    -(BOOL)insertGroupWith:(DeviceGroupInfo *)groupName//添加组合

    {

        FMDatabase * db = [FMDatabasedatabaseWithPath:sqlDataPath];

        BOOL res = NO ;

        if ([db open] ) {

            

            NSString * sql = @"insert or replace into DeviceGroupTable (groupName,devices,addTime,openState) values(?,?,?,?)" ;

            

            NSString *groupNameT = [self checkNULLstring:groupName.groupName];

            NSString *addTime = [NSStringstringWithFormat:@"%d" , (int)[[NSDatedate] timeIntervalSince1970] ];

            NSMutableString *devs=[[NSMutableStringalloc]init];

            for (int i=0; i<groupName.devMACList.count; i++) {

                [devs appendFormat:@"%@|||",[groupName.devMACList objectAtIndex:i]];

            }

    //        NSLog(@"addTimeString is %@" , addTime );

            if(devs.length<1)

               [devs appendString:@""];

            NSString *openState=[self checkNULLstring:groupName.openState];

            res = [db executeUpdate:sql,groupNameT,devs,addTime,openState];

            

            [db close];

        }

        return res;

    }

    //用户表

    - (NSDictionary *)queryUserData:(NSString *)userName

    {

    //    NSMutableArray *mutableArray = [[NSMutableArray alloc]init];

        

        FMDatabase * db = [FMDatabasedatabaseWithPath:sqlDataPath];

        

        if ([db open]) {

            NSString * sql = [NSStringstringWithFormat:@"select * from UserDataTable where userName='%@'",userName];

            NSLog(@"sql is %@" , sql);

            

            FMResultSet * rs = [db executeQuery:sql];

            

            while ([rs next]) {

                NSDictionary *dic = [rs resultDictionary] ;

                return dic;

    //            [mutableArray addObject:[self deviceInfoForm:dic]];

            }

            [db close];

        }

        returnnil ;

    }

    -(BOOL)deleteUserWithName:(NSString *)userName

    {

        FMDatabase * db = [FMDatabasedatabaseWithPath:sqlDataPath];

        BOOL res = NO ;

        

        if ([db open]) {

            NSString * sql = [NSStringstringWithFormat:@"delete from UserDataTable where userName ='%@'" , userName];

            

            res = [db executeUpdate:sql];

            if (!res) {

                NSLog(@"error to insert data");

            } else {

                NSLog(@"succ to insert data");

            }

            [db close];

        }

        

        return res ;

    }

    -(BOOL)insertOrReqlaceUserDataWithName:(UserInfo *)userInfo

    {

        FMDatabase * db = [FMDatabasedatabaseWithPath:sqlDataPath];

        BOOL res = NO ;

        if ([db open] ) {

            

            NSString * sql = @"insert or replace into UserDataTable (userName,displayName,passWord,clientMAC,clientID,clientName,addTime) values(?,?,?,?,?,?,?)" ;

            

            NSString *userName = [self checkNULLstring:userInfo.userName];

            NSString *displayName = [self checkNULLstring:userInfo.displayName];

            NSString *passWord = [self checkNULLstring:userInfo.passWord];

            NSString *clientMAC = [self checkNULLstring:userInfo.clientMAC];

            NSString *clientID = [self checkNULLstring:userInfo.clientID];

            NSString *clientName = [self checkNULLstring:userInfo.clientName];

            

            NSString *addTime = [NSStringstringWithFormat:@"%d" , (int)[[NSDatedate] timeIntervalSince1970] ];

            res = [db executeUpdate:sql,userName,displayName,passWord,clientMAC,clientID,clientName,addTime];

            

            [db close];

        }

        return res;

    }

    //通过sql查询数据

    -(NSMutableArray *)executeQueryData:(NSString *)sql

    {

        NSMutableArray *mutableArray = [[NSMutableArray alloc]init] ;

        

        FMDatabase * db = [FMDatabasedatabaseWithPath:sqlDataPath];

        

        if ([db open]) {

            FMResultSet * rs = [db executeQuery:sql];

            

            while ([rs next]) {

                NSDictionary *dic = [rs resultDictionary] ;

                [mutableArray addObject:dic];

            }

            [db close];

        }

        return mutableArray;

    }

    //执行SQL指令

    -(BOOL)executeSQL:(NSString *)sql

    {

        FMDatabase * db = [FMDatabasedatabaseWithPath:sqlDataPath];

        BOOL res = NO ;

        

        if ([db open]) {

            res = [db executeUpdate:sql];

            if (!res) {

                NSLog(@"error to insert data");

            } else {

                NSLog(@"succ to insert data");

            }

            [db close];

        }

        

        return res ;

    }

    -(BOOL)insertOrReqlaceTimeDataWithInfo:(TimeingInfo *)info

    {

        FMDatabase * db = [FMDatabasedatabaseWithPath:sqlDataPath];

        BOOL res = NO ;

        

        NSString * sql = @"insert or replace into DeviceTimeTable (oneKey,mac,toTime,repeatWeek,action,timeType,timeIndex,addTime) values(?,?,?,?,?,?,?,?)" ;

        NSString *addTime = [NSStringstringWithFormat:@"%d" , (int)[[NSDatedate] timeIntervalSince1970] ];

        info.addTime=addTime;

        

        if ([db open]) {

            res = [db executeUpdate:sql,[NSString stringWithFormat:@"%@_%d",info.mac,info.timeIndex],info.mac,info.toTime,info.repeatWeek,[NSString stringWithFormat:@"%d",info.action],[NSString stringWithFormat:@"%d",info.timeType],[NSString stringWithFormat:@"%d",info.timeIndex],info.addTime];

            if (!res) {

                NSLog(@"error to insert data");

            } else {

                NSLog(@"succ to insert data");

            }

            [db close];

        }

        

        return res ;

    }

    -(DeviceInfo *)deviceInfoForm:(NSDictionary *)dic

    {

        DeviceInfo *info=[[DeviceInfoalloc]init];

        info.mac=[dic objectForKey:@"MAC"];

        info.ip=[dic objectForKey:@"ip"];

        info.deviceName=[dic objectForKey:@"deviceName"];

        info.icoType=[[dic objectForKey:@"icoType"]integerValue];

        info.addTime=[dic objectForKey:@"addTime"];

    //    info.parenGroupName=[dic objectForKey:@"groupName"];

        return info;

    }

    @end

  • 相关阅读:
    .Net Core自动化部署系列(一):Jenkins + GitLab
    经典案例复盘——运维专家讲述如何实现K8S落地(摘抄)
    Quartz系列(一):基础介绍
    生产环境项目问题记录系列(二):同步方法调用异步方法
    微服务理论系列(一):服务发现四问四答(摘抄)
    Java中的继承、封装、多态的理解
    Java三大主流框架概述
    面试的技巧
    myBaits持久性框架
    MyBaits框架入门总结
  • 原文地址:https://www.cnblogs.com/alihaiseyao/p/3603907.html
Copyright © 2011-2022 走看看