热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

IOS数据库封装

2019独角兽企业重金招聘Python工程师标准IOS开发学习数据库文档之IOS数据库封装是本文要介绍的内容,主要来学习IOS开发中数据库的封装,

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

IOS开发学习数据库文档之IOS数据库封装是本文要介绍的内容,主要来学习IOS开发中数据库的封装,具体内容来看本文详解。内容不多,主要是以代码来实现。

H文件

#import   #import "sqlite3.h"   &#64;interface DatabaseOperation : NSObject {       sqlite3 *m_sql;       NSString *m_dbName;   }   &#64;property(nonatomic)sqlite3*    m_sql;   &#64;property(nonatomic,retain)NSString*    m_dbName;   -(id)initWithDbName:(NSString*)dbname;   -(BOOL)openOrCreateDatabase:(NSString*)DbName;   -(BOOL)createTable:(NSString*)sqlCreateTable;   -(void)closeDatabase;   -(BOOL)InsertTable:(NSString*)sqlInsert;   -(BOOL)UpdataTable:(NSString*)sqlUpdata;   -(NSArray*)querryTable:(NSString*)sqlQuerry;   -(NSArray*)querryTableByCallBack:(NSString*)sqlQuerry;   &#64;end     M文件     #import "DatabaseOperation.h"   &#64;implementation DatabaseOperation   &#64;synthesize m_sql;   &#64;synthesize m_dbName;   - (id) initWithDbName:(NSString*)dbname   {       self &#61; [super init];       if (self !&#61; nil) {          if ([self openOrCreateDatabase:dbname]) {               [self closeDatabase];           }       }       return self;   }   - (id) init   {       NSAssert(0,&#64;"Never Use this.Please Call Use initWithDbName:(NSString*)");       return nil;   }   - (void) dealloc   {       self.m_sql &#61; nil;       self.m_dbName &#61;nil;       [super dealloc];   }   //创建数据库     -(BOOL)openOrCreateDatabase:(NSString*)dbName   {       self.m_dbName &#61; dbName;       NSArray *path &#61;NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);       NSString *documentsDirectory &#61; [path objectAtIndex:0];       if(sqlite3_open([[documentsDirectorystringByAppendingPathComponent:dbName] UTF8String],&m_sql) !&#61;SQLITE_OK)       {           NSLog(&#64;"创建数据库失败");           return    NO;       }       return YES;   }     //创建表     -(BOOL)createTable:(NSString*)sqlCreateTable   {       if (![selfopenOrCreateDatabase:self.m_dbName]) {           return NO;       }       char *errorMsg;       if (sqlite3_exec (self.m_sql, [sqlCreateTable UTF8String],NULL, NULL, &errorMsg) !&#61; SQLITE_OK)       {           NSLog(&#64;"创建数据表失败:%s",errorMsg);           return NO;       }       [selfcloseDatabase];       return YES;   }   //关闭数据库   -(void)closeDatabase   {       sqlite3_close(self.m_sql);    }     //insert     -(BOOL)InsertTable:(NSString*)sqlInsert   {       if (![selfopenOrCreateDatabase:self.m_dbName]) {           return NO;       }      char* errorMsg &#61; NULL;       if(sqlite3_exec(self.m_sql, [sqlInsertUTF8String],0, NULL, &errorMsg) &#61;&#61;SQLITE_OK)   {  [selfcloseDatabase];   returnYES;}       else {           printf("更新表失败:%s",errorMsg);           [selfcloseDatabase];           return NO;       }       return YES;   }   //updata     -(BOOL)UpdataTable:(NSString*)sqlUpdata{   if (![selfopenOrCreateDatabase:self.m_dbName]) {    return NO;       }   char *errorMsg;   if (sqlite3_exec (self.m_sql, [sqlUpdata UTF8String],0, NULL, &errorMsg) !&#61;SQLITE_OK)   {   [selfcloseDatabase];   returnYES;   }else {   returnNO;   }     return YES;   }   //select   -(NSArray*)querryTable:(NSString*)sqlQuerry   {       if (![selfopenOrCreateDatabase:self.m_dbName]) {           return nil;       }       int row &#61; 0;       int column &#61; 0;       char*    errorMsg &#61; NULL;       char**    dbResult &#61; NULL;       NSMutableArray*    array &#61; [[NSMutableArrayalloc] init];       if(sqlite3_get_table(m_sql, [sqlQuerryUTF8String], &dbResult, &row,&column,&errorMsg ) &#61;&#61; SQLITE_OK)       {          if (0 &#61;&#61; row) {               [self closeDatabase];               return nil;           }           int index &#61; column;           for(int i &#61;0; i < row ; i&#43;&#43; ) {                 NSMutableDictionary*    dic &#61; [[NSMutableDictionaryalloc] init];               for(int j &#61;0 ; j < column; j&#43;&#43; ) {                   if (dbResult[index]) {                       NSString*    value &#61; [[NSStringalloc] initWithUTF8String:dbResult[index]];                       NSString*    key &#61; [[NSStringalloc] initWithUTF8String:dbResult[j]];                       [dic setObject:value forKey:key];                       [value release];                       [key release];                   }                   index &#43;&#43;;               }                [array addObject:dic];               [dic release];           }       }else {           printf("%s",errorMsg);           [selfcloseDatabase];           return nil;       }       [selfcloseDatabase];       return [array autorelease];   }   //select     int processData(void* arrayResult,int columnCount,char** columnValue,char** columnName)   {       int i;        NSMutableDictionary* dic &#61; [[NSMutableDictionaryalloc] init];       for( i &#61; 0 ; i < columnCount; i &#43;&#43; )        {           if (columnValue[i]) {               NSString* key &#61; [[NSStringalloc] initWithUTF8String:columnName[i]];               NSString* value &#61; [[NSStringalloc] initWithUTF8String:columnValue[i]];               [dic setObject:value forKey:key];           }       }        [(NSMutableArray*)arrayResult addObject:dic];       [dic release];       return 0;    }     //select     -(NSArray*)querryTableByCallBack:(NSString*)sqlQuerry   {       if (![selfopenOrCreateDatabase:self.m_dbName]) {           return nil;       }       char*    errorMsg &#61; NULL;       NSMutableArray* arrayResult &#61; [[NSMutableArrayalloc] init];       if (sqlite3_exec(self.m_sql,[sqlQuerryUTF8String],processData,(void*)arrayResult,&errorMsg) !&#61;SQLITE_OK) {           printf("查询出错:%s",errorMsg);       }       [selfcloseDatabase];       return [arrayResult autorelease];   }   &#64;end 


转:https://my.oschina.net/makeffort/blog/90065



推荐阅读
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • 实现一个通讯录系统,可添加、删除、修改、查找、显示、清空、排序通讯录信息
    本文介绍了如何实现一个通讯录系统,该系统可以实现添加、删除、修改、查找、显示、清空、排序通讯录信息的功能。通过定义结构体LINK和PEOPLE来存储通讯录信息,使用相关函数来实现各项功能。详细介绍了每个功能的实现方法。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了多因子选股模型在实际中的构建步骤,包括风险源分析、因子筛选和体系构建,并进行了模拟实证回测。在风险源分析中,从宏观、行业、公司和特殊因素四个角度分析了影响资产价格的因素。具体包括宏观经济运行和宏经济政策对证券市场的影响,以及行业类型、行业生命周期和行业政策对股票价格的影响。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
author-avatar
韦韦韦骏轩_
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有