首页 > 数据库技术 > 详细

FMDB的一些基本操作小结

时间:2016-12-12 15:02:02      阅读:191      评论:0      收藏:0      [点我收藏+]

http://blog.csdn.net/iunion/article/details/7204625

 

仅供自己记录使用,

 

h文件

 

[cpp] view plain copy
 
 print?
  1. #import <Foundation/Foundation.h>  
  2. #import "FMDatabase.h"  
  3. #import "FMDatabaseAdditions.h"  
  4.   
  5. @interface wiDBRoot : NSObject  
  6. @property (retain, nonatomic) FMDatabase *DB;  
  7. @property (retain, nonatomic) NSString *DBName;  
  8.   
  9. //+ (id)modelWithDBName:(NSString *)dbName;  
  10. - (id)initWithDBName:(NSString *)dbName;  
  11. // 删除数据库  
  12. - (void)deleteDatabse;  
  13.   
  14. // 数据库存储路径  
  15. //- (NSString *)getPath:(NSString *)dbName;  
  16. // 打开数据库  
  17. - (void)readyDatabse;  
  18.   
  19. // 判断是否存在表  
  20. - (BOOL) isTableOK:(NSString *)tableName;  
  21. // 获得表的数据条数  
  22. - (BOOL) getTableItemCount:(NSString *)tableName;  
  23. // 创建表  
  24. - (BOOL) createTable:(NSString *)tableName withArguments:(NSString *)arguments;  
  25. // 删除表-彻底删除表  
  26. - (BOOL) deleteTable:(NSString *)tableName;  
  27. // 清除表-清数据  
  28. - (BOOL) eraseTable:(NSString *)tableName;  
  29. // 插入数据  
  30. - (BOOL)insertTable:(NSString*)sql, ...;  
  31. // 修改数据  
  32. - (BOOL)updateTable:(NSString*)sql, ...;  
  33.   
  34.   
  35. // 整型  
  36. - (NSInteger)getDb_Integerdata:(NSString *)tableName withFieldName:(NSString *)fieldName;  
  37. // 布尔型  
  38. - (BOOL)getDb_Booldata:(NSString *)tableName withFieldName:(NSString *)fieldName;  
  39. // 字符串型  
  40. - (NSString *)getDb_Stringdata:(NSString *)tableName withFieldName:(NSString *)fieldName;  
  41. // 二进制数据型  
  42. - (NSData *)getDb_Bolbdata:(NSString *)tableName withFieldName:(NSString *)fieldName;  
  43.   
  44. @end  


m文件

 

 

[cpp] view plain copy
 
 print?
    1. #import "wiDBRoot.h"  
    2.   
    3. @interface wiDBRoot ()  
    4. - (NSString *)getPath:(NSString *)dbName;  
    5. @end  
    6.   
    7. @implementation wiDBRoot  
    8. @synthesize DB;  
    9. @synthesize DBName;  
    10.   
    11. /* 
    12. + (id)modelWithDBName:(NSString *)dbName 
    13. { 
    14.     [[[self alloc] initWithDBName:dbName] autorelease]; 
    15.     return self; 
    16. } 
    17. */  
    18.   
    19. - (id)initWithDBName:(NSString *)dbName  
    20. {  
    21.   
    22.     self = [super init];  
    23.       
    24.     if(nil != self)  
    25.     {  
    26.         DBName = [self getPath:dbName];  
    27.         WILog(@"DBName: %@", DBName);  
    28.     }  
    29.       
    30.     return self;  
    31. }  
    32.   
    33. - (void)dealloc {  
    34.     [DB close];  
    35.     [DB release];  
    36.     [DBName release];  
    37.     [super dealloc];  
    38. }  
    39.   
    40. // 数据库存储路径(内部使用)  
    41. - (NSString *)getPath:(NSString *)dbName  
    42. {  
    43.     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
    44.     NSString *documentsDirectory = [paths objectAtIndex:0];  
    45.     return [documentsDirectory stringByAppendingPathComponent:dbName];  
    46. }  
    47.   
    48. // 打开数据库  
    49. - (void)readyDatabse  
    50. {  
    51.     //BOOL success;  
    52.     //NSError *error;  
    53.       
    54.     //NSFileManager *fileManager = [NSFileManager defaultManager];  
    55.     //success = [fileManager fileExistsAtPath:self.DBName];  
    56.       
    57.     if ([DB databaseExists])  
    58.         return;  
    59.       
    60.     //DB = [FMDatabase databaseWithPath:DBName];  
    61.     DB = [[FMDatabase alloc] initWithPath:DBName];  
    62.       
    63.     if (![DB open])  
    64.     {  
    65.         [DB close];  
    66.         NSAssert1(0, @"Failed to open database file with message ‘%@‘.", [DB lastErrorMessage]);  
    67.     }  
    68.   
    69.     // kind of experimentalish.  
    70.     [DB setShouldCacheStatements:YES];  
    71. }  
    72.   
    73. #pragma mark 删除数据库  
    74. // 删除数据库  
    75. - (void)deleteDatabse  
    76. {  
    77.     BOOL success;  
    78.     NSError *error;  
    79.       
    80.     NSFileManager *fileManager = [NSFileManager defaultManager];  
    81.       
    82.     // delete the old db.  
    83.     if ([fileManager fileExistsAtPath:DBName])  
    84.     {  
    85.         [DB close];  
    86.         success = [fileManager removeItemAtPath:DBName error:&error];  
    87.         if (!success) {  
    88.             NSAssert1(0, @"Failed to delete old database file with message ‘%@‘.", [error localizedDescription]);  
    89.         }  
    90.     }      
    91. }  
    92.   
    93. // 判断是否存在表  
    94. - (BOOL) isTableOK:(NSString *)tableName  
    95. {  
    96.     FMResultSet *rs = [DB executeQuery:@"SELECT count(*) as ‘count‘ FROM sqlite_master WHERE type =‘table‘ and name = ?", tableName];  
    97.     while ([rs next])  
    98.     {  
    99.         // just print out what we‘ve got in a number of formats.  
    100.         NSInteger count = [rs intForColumn:@"count"];  
    101.         WILog(@"isTableOK %d", count);  
    102.           
    103.         if (0 == count)  
    104.         {  
    105.             return NO;  
    106.         }  
    107.         else  
    108.         {  
    109.             return YES;  
    110.         }  
    111.     }  
    112.   
    113.     return NO;  
    114. }  
    115.   
    116. // 获得表的数据条数  
    117. - (BOOL) getTableItemCount:(NSString *)tableName  
    118. {  
    119.     NSString *sqlstr = [NSString stringWithFormat:@"SELECT count(*) as ‘count‘ FROM %@", tableName];  
    120.     FMResultSet *rs = [DB executeQuery:sqlstr];  
    121.     while ([rs next])  
    122.     {  
    123.         // just print out what we‘ve got in a number of formats.  
    124.         NSInteger count = [rs intForColumn:@"count"];  
    125.         WILog(@"TableItemCount %d", count);  
    126.           
    127.         return count;  
    128.     }  
    129.       
    130.     return 0;  
    131. }  
    132.   
    133. // 创建表  
    134. - (BOOL) createTable:(NSString *)tableName withArguments:(NSString *)arguments  
    135. {  
    136.     NSString *sqlstr = [NSString stringWithFormat:@"CREATE TABLE %@ (%@)", tableName, arguments];  
    137.     if (![DB executeUpdate:sqlstr])  
    138.     //if ([DB executeUpdate:@"create table user (name text, pass text)"] == nil)  
    139.     {  
    140.         WILog(@"Create db error!");  
    141.         return NO;  
    142.     }  
    143.   
    144.     return YES;  
    145. }  
    146.   
    147. // 删除表  
    148. - (BOOL) deleteTable:(NSString *)tableName  
    149. {  
    150.     NSString *sqlstr = [NSString stringWithFormat:@"DROP TABLE %@", tableName];  
    151.     if (![DB executeUpdate:sqlstr])  
    152.     {  
    153.         WILog(@"Delete table error!");  
    154.         return NO;  
    155.     }  
    156.       
    157.     return YES;  
    158. }  
    159.       
    160. // 清除表  
    161. - (BOOL) eraseTable:(NSString *)tableName  
    162. {  
    163.     NSString *sqlstr = [NSString stringWithFormat:@"DELETE FROM %@", tableName];  
    164.     if (![DB executeUpdate:sqlstr])  
    165.     {  
    166.         WILog(@"Erase table error!");  
    167.         return NO;  
    168.         }  
    169.       
    170.     return YES;  
    171.     }      
    172.   
    173. // 插入数据  
    174. - (BOOL)insertTable:(NSString*)sql, ...  
    175. {  
    176.     va_list args;  
    177.     va_start(args, sql);  
    178.       
    179.     BOOL result = [DB executeUpdate:sql error:nil withArgumentsInArray:nil orVAList:args];  
    180.       
    181.     va_end(args);  
    182.     return result;  
    183. }  
    184.   
    185. // 修改数据  
    186. - (BOOL)updateTable:(NSString*)sql, ...  
    187. {  
    188.     va_list args;  
    189.     va_start(args, sql);  
    190.       
    191.     BOOL result = [DB executeUpdate:sql error:nil withArgumentsInArray:nil orVAList:args];  
    192.       
    193.     va_end(args);  
    194.     return result;  
    195. }  
    196.   
    197. // 暂时无用  
    198. #pragma mark 获得单一数据  
    199.   
    200. // 整型  
    201. - (NSInteger)getDb_Integerdata:(NSString *)tableName withFieldName:(NSString *)fieldName  
    202. {  
    203.     NSInteger result = NO;  
    204.       
    205.     NSString *sql = [NSString stringWithFormat:@"SELECT %@ FROM %@", fieldName, tableName];  
    206.     FMResultSet *rs = [DB executeQuery:sql];  
    207.     if ([rs next])  
    208.         result = [rs intForColumnIndex:0];  
    209.     [rs close];  
    210.       
    211.     return result;  
    212. }  
    213.   
    214. // 布尔型  
    215. - (BOOL)getDb_Booldata:(NSString *)tableName withFieldName:(NSString *)fieldName  
    216. {  
    217.     BOOL result;  
    218.   
    219.     result = [self getDb_Integerdata:tableName withFieldName:fieldName];  
    220.   
    221.     return result;  
    222. }  
    223.   
    224. // 字符串型  
    225. - (NSString *)getDb_Stringdata:(NSString *)tableName withFieldName:(NSString *)fieldName  
    226. {  
    227.     NSString *result = NO;  
    228.       
    229.     NSString *sql = [NSString stringWithFormat:@"SELECT %@ FROM %@", fieldName, tableName];  
    230.     FMResultSet *rs = [DB executeQuery:sql];  
    231.     if ([rs next])  
    232.         result = [rs stringForColumnIndex:0];  
    233.     [rs close];  
    234.   
    235.     return result;  
    236. }  
    237.   
    238. // 二进制数据型  
    239. - (NSData *)getDb_Bolbdata:(NSString *)tableName withFieldName:(NSString *)fieldName  
    240. {  
    241.     NSData *result = NO;  
    242.       
    243.     NSString *sql = [NSString stringWithFormat:@"SELECT %@ FROM %@", fieldName, tableName];  
    244.     FMResultSet *rs = [DB executeQuery:sql];  
    245.     if ([rs next])  
    246.         result = [rs dataForColumnIndex:0];  
    247.     [rs close];  
    248.       
    249.     return result;  
    250. }  
    251.   
    252. @end  

FMDB的一些基本操作小结

原文:http://www.cnblogs.com/zxykit/p/6164042.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!