自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

解析IOS開發(fā)學(xué)習(xí)數(shù)據(jù)庫(kù)文檔之IOS數(shù)據(jù)庫(kù)封裝

移動(dòng)開發(fā) iOS
IOS開發(fā)學(xué)習(xí)數(shù)據(jù)庫(kù)文檔之IOS數(shù)據(jù)庫(kù)封裝是本文要介紹的內(nèi)容,主要來(lái)學(xué)習(xí)IOS開發(fā)中數(shù)據(jù)庫(kù)的封裝,具體內(nèi)容來(lái)看本文詳解。

IOS開發(fā)學(xué)習(xí)數(shù)據(jù)庫(kù)文檔之IOS數(shù)據(jù)庫(kù)封裝是本文要介紹的內(nèi)容,主要來(lái)學(xué)習(xí)IOS開發(fā)中數(shù)據(jù)庫(kù)的封裝,具體內(nèi)容來(lái)看本文詳解。內(nèi)容不多,主要是以代碼來(lái)實(shí)現(xiàn)。

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. //創(chuàng)建數(shù)據(jù)庫(kù)  
  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(@"創(chuàng)建數(shù)據(jù)庫(kù)失敗");  
  56.         return    NO;  
  57.     }  
  58.     return YES;  
  59. }  
  60.  
  61. //創(chuàng)建表  
  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(@"創(chuàng)建數(shù)據(jù)表失敗:%s",errorMsg);  
  72.         return NO;  
  73.     }  
  74.     [selfcloseDatabase];  
  75.     return YES;  
  76. }  
  77. //關(guān)閉數(shù)據(jù)庫(kù)  
  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("查詢出錯(cuò):%s",errorMsg);  
  189.     }  
  190.     [selfcloseDatabase];  
  191.     return [arrayResult autorelease];  
  192. }  
  193. @end 

小結(jié):解析IOS開發(fā)學(xué)習(xí)數(shù)據(jù)庫(kù)文檔之IOS數(shù)據(jù)庫(kù)封裝的內(nèi)容介紹完了,希望通過(guò)本文的學(xué)習(xí)鞥對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來(lái)源: CSDN博客
相關(guān)推薦

2011-08-22 15:43:08

IOS開發(fā)數(shù)據(jù)庫(kù)

2013-04-01 10:49:51

iOS開發(fā)sqlite數(shù)據(jù)庫(kù)

2011-08-25 11:08:21

Sybase數(shù)據(jù)庫(kù)

2011-08-02 15:04:49

2011-03-07 15:54:30

2011-05-13 13:54:02

數(shù)據(jù)庫(kù)文檔數(shù)據(jù)庫(kù)

2010-09-30 08:27:48

2021-09-06 10:24:12

鴻蒙HarmonyOS應(yīng)用

2010-09-30 09:11:01

2015-10-22 10:52:34

NoSQL數(shù)據(jù)庫(kù)鍵值型數(shù)據(jù)庫(kù)文檔型數(shù)據(jù)庫(kù)

2021-09-03 15:41:00

鴻蒙HarmonyOS應(yīng)用

2010-05-13 14:14:45

2009-08-11 17:30:46

2012-09-29 13:20:30

ASP.NETWeb框架

2024-10-28 16:31:03

2011-07-27 08:56:32

Oracle數(shù)據(jù)庫(kù)綁定變量軟解析

2011-07-26 14:56:03

數(shù)據(jù)庫(kù)發(fā)展

2018-07-24 09:38:35

JavaMySQLJDBC

2021-05-24 09:08:50

數(shù)據(jù)庫(kù)工具技術(shù)

2011-09-23 09:09:38

數(shù)據(jù)庫(kù)遷移
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)