解析IOS开发学习数据库文档之IOS数据库封装

移动开发 iOS
IOS开发学习数据库文档之IOS数据库封装是本文要介绍的内容,主要来学习IOS开发中数据库的封装,具体内容来看本文详解。

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

H文件

  1. #import <Foundation/Foundation.h> 
  2. #import "sqlite3.h"  
  3. @interface DatabaseOperation : NSObject {  
  4.     sqlite3 *m_sql;  
  5.     NSString *m_dbName;  
  6. }  
  7. @property(nonatomic)sqlite3*    m_sql;  
  8. @property(nonatomic,retain)NSString*    m_dbName;  
  9. -(id)initWithDbName:(NSString*)dbname;  
  10. -(BOOL)openOrCreateDatabase:(NSString*)DbName;  
  11. -(BOOL)createTable:(NSString*)sqlCreateTable;  
  12. -(void)closeDatabase;  
  13. -(BOOL)InsertTable:(NSString*)sqlInsert;  
  14. -(BOOL)UpdataTable:(NSString*)sqlUpdata;  
  15. -(NSArray*)querryTable:(NSString*)sqlQuerry;  
  16. -(NSArray*)querryTableByCallBack:(NSString*)sqlQuerry;  
  17. @end  
  18.  
  19. M文件  
  20.  
  21. #import "DatabaseOperation.h"  
  22. @implementation DatabaseOperation  
  23. @synthesize m_sql;  
  24. @synthesize m_dbName;  
  25. - (id) initWithDbName:(NSString*)dbname  
  26. {  
  27.     self = [super init];  
  28.     if (self != nil) {  
  29.        if ([self openOrCreateDatabase:dbname]) {  
  30.             [self closeDatabase];  
  31.         }  
  32.     }  
  33.     return self;  
  34. }  
  35. - (id) init  
  36. {  
  37.     NSAssert(0,@"Never Use this.Please Call Use initWithDbName:(NSString*)");  
  38.     return nil;  
  39. }  
  40. - (void) dealloc  
  41. {  
  42.     self.m_sql = nil;  
  43.     self.m_dbName =nil;  
  44.     [super dealloc];  
  45. }  
  46. //创建数据库  
  47.  
  48. -(BOOL)openOrCreateDatabase:(NSString*)dbName  
  49. {  
  50.     self.m_dbName = dbName;  
  51.     NSArray *path =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);  
  52.     NSString *documentsDirectory = [path objectAtIndex:0];  
  53.     if(sqlite3_open([[documentsDirectorystringByAppendingPathComponent:dbName] UTF8String],&m_sql) !=SQLITE_OK)  
  54.     {  
  55.         NSLog(@"创建数据库失败");  
  56.         return    NO;  
  57.     }  
  58.     return YES;  
  59. }  
  60.  
  61. //创建表  
  62.  
  63. -(BOOL)createTable:(NSString*)sqlCreateTable  
  64. {  
  65.     if (![selfopenOrCreateDatabase:self.m_dbName]) {  
  66.         return NO;  
  67.     }  
  68.     char *errorMsg;  
  69.     if (sqlite3_exec (self.m_sql, [sqlCreateTable UTF8String],NULL, NULL, &errorMsg) != SQLITE_OK)  
  70.     {  
  71.         NSLog(@"创建数据表失败:%s",errorMsg);  
  72.         return NO;  
  73.     }  
  74.     [selfcloseDatabase];  
  75.     return YES;  
  76. }  
  77. //关闭数据库  
  78. -(void)closeDatabase  
  79. {  
  80.     sqlite3_close(self.m_sql);   
  81. }  
  82.  
  83. //insert  
  84.  
  85. -(BOOL)InsertTable:(NSString*)sqlInsert  
  86. {  
  87.     if (![selfopenOrCreateDatabase:self.m_dbName]) {  
  88.         return NO;  
  89.     }  
  90.    char* errorMsg = NULL;  
  91.     if(sqlite3_exec(self.m_sql, [sqlInsertUTF8String],0, NULL, &errorMsg) ==SQLITE_OK)  
  92. {  [selfcloseDatabase];  
  93. returnYES;}  
  94.     else {  
  95.         printf("更新表失败:%s",errorMsg);  
  96.         [selfcloseDatabase];  
  97.         return NO;  
  98.     }  
  99.     return YES;  
  100. }  
  101. //updata  
  102.  
  103. -(BOOL)UpdataTable:(NSString*)sqlUpdata{  
  104. if (![selfopenOrCreateDatabase:self.m_dbName]) {  
  105.  return NO;  
  106.     }  
  107. char *errorMsg;  
  108. if (sqlite3_exec (self.m_sql, [sqlUpdata UTF8String],0, NULL, &errorMsg) !=SQLITE_OK)  
  109. {  
  110. [selfcloseDatabase];  
  111. returnYES;  
  112. }else {  
  113. returnNO;  
  114. }  
  115.  
  116. return YES;  
  117. }  
  118. //select  
  119. -(NSArray*)querryTable:(NSString*)sqlQuerry  
  120. {  
  121.     if (![selfopenOrCreateDatabase:self.m_dbName]) {  
  122.         return nil;  
  123.     }  
  124.     int row = 0;  
  125.     int column = 0;  
  126.     char*    errorMsg = NULL;  
  127.     char**    dbResult = NULL;  
  128.     NSMutableArray*    array = [[NSMutableArrayalloc] init];  
  129.     if(sqlite3_get_table(m_sql, [sqlQuerryUTF8String], &dbResult, &row,&column,&errorMsg ) == SQLITE_OK)  
  130.     {  
  131.        if (0 == row) {  
  132.             [self closeDatabase];  
  133.             return nil;  
  134.         }  
  135.         int index = column;  
  136.         for(int i =0; i < row ; i++ ) {    
  137.             NSMutableDictionary*    dic = [[NSMutableDictionaryalloc] init];  
  138.             for(int j =0 ; j < column; j++ ) {  
  139.                 if (dbResult[index]) {  
  140.                     NSString*    value = [[NSStringalloc] initWithUTF8String:dbResult[index]];  
  141.                     NSString*    key = [[NSStringalloc] initWithUTF8String:dbResult[j]];  
  142.                     [dic setObject:value forKey:key];  
  143.                     [value release];  
  144.                     [key release];  
  145.                 }  
  146.                 index ++;  
  147.             }   
  148.             [array addObject:dic];  
  149.             [dic release];  
  150.         }  
  151.     }else {  
  152.         printf("%s",errorMsg);  
  153.         [selfcloseDatabase];  
  154.         return nil;  
  155.     }  
  156.     [selfcloseDatabase];  
  157.     return [array autorelease];  
  158. }  
  159. //select  
  160.  
  161. int processData(void* arrayResult,int columnCount,char** columnValue,char** columnName)  
  162. {  
  163.     int i;   
  164.     NSMutableDictionary* dic = [[NSMutableDictionaryalloc] init];  
  165.     for( i = 0 ; i < columnCount; i ++ )   
  166.     {   
  167.        if (columnValue[i]) {  
  168.             NSString* key = [[NSStringalloc] initWithUTF8String:columnName[i]];  
  169.             NSString* value = [[NSStringalloc] initWithUTF8String:columnValue[i]];  
  170.             [dic setObject:value forKey:key];  
  171.         }  
  172.     }   
  173.     [(NSMutableArray*)arrayResult addObject:dic];  
  174.     [dic release];  
  175.     return 0;   
  176. }  
  177.  
  178. //select  
  179.  
  180. -(NSArray*)querryTableByCallBack:(NSString*)sqlQuerry  
  181. {  
  182.     if (![selfopenOrCreateDatabase:self.m_dbName]) {  
  183.         return nil;  
  184.     }  
  185.     char*    errorMsg = NULL;  
  186.     NSMutableArray* arrayResult = [[NSMutableArrayalloc] init];  
  187.     if (sqlite3_exec(self.m_sql,[sqlQuerryUTF8String],processData,(void*)arrayResult,&errorMsg) !=SQLITE_OK) {  
  188.         printf("查询出错:%s",errorMsg);  
  189.     }  
  190.     [selfcloseDatabase];  
  191.     return [arrayResult autorelease];  
  192. }  
  193. @end 

小结:解析IOS开发学习数据库文档之IOS数据库封装的内容介绍完了,希望通过本文的学习鞥对你有所帮助!

责任编辑:zhaolei 来源: CSDN博客
相关推荐

2011-08-22 15:43:08

IOS开发数据库

2013-04-01 10:49:51

iOS开发sqlite数据库

2011-08-02 15:04:49

2011-08-25 11:08:21

Sybase数据库

2011-05-13 13:54:02

数据库文档数据库

2011-03-07 15:54:30

2010-09-30 09:11:01

2010-09-30 08:27:48

2021-09-06 10:24:12

鸿蒙HarmonyOS应用

2015-10-22 10:52:34

NoSQL数据库键值型数据库文档型数据库

2021-09-03 15:41:00

鸿蒙HarmonyOS应用

2010-05-13 14:14:45

2009-08-11 17:30:46

2024-10-28 16:31:03

2012-09-29 13:20:30

ASP.NETWeb框架

2011-07-27 08:56:32

Oracle数据库绑定变量软解析

2011-07-26 14:56:03

数据库发展

2021-05-24 09:08:50

数据库工具技术

2011-09-23 09:09:38

数据库迁移

2023-09-27 07:15:46

点赞
收藏

51CTO技术栈公众号