FMDB 相关

  1 #import "ViewController.h"
  2 
  3 #import "FMDBMigrationManager.h"
  4 #import "FMDB.h"
  5 
  6 #define PATH_OF_DOCUMENT    [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]
  7 #define CREATE_TEACHER_TAB @"CREATE TABLE IF NOT EXISTS %@(content text,time text)"
  8 //插入基础元素
  9 #define INSERT_SQL @"insert into %@(content, time) values(?,?)"
 10 
 11 @interface ViewController () {
 12     
 13     FMDatabaseQueue *dbQueue;
 14 }
 15 
 16 @end
 17 
 18 @implementation ViewController
 19 
 20 - (void)viewDidLoad {
 21     [super viewDidLoad];
 22     // Do any additional setup after loading the view, typically from a nib.
 23     
 24     NSString * doc = PATH_OF_DOCUMENT;
 25     NSString * path = [doc stringByAppendingPathComponent:@"teacherCache.sqlite"];
 26     
 27     if (!dbQueue) {
 28         
 29         dbQueue = [FMDatabaseQueue databaseQueueWithPath:path];
 30     }
 31     
 32     [self createTable:@"user"];
 33 }
 34 
 35 - (NSString *)databaseFilePath {
 36     
 37     NSString * doc = PATH_OF_DOCUMENT;
 38     NSString * path = [doc stringByAppendingPathComponent:@"teacherCache.sqlite"];
 39     return path;
 40 }
 41 
 42 - (void)didReceiveMemoryWarning {
 43     [super didReceiveMemoryWarning];
 44     // Dispose of any resources that can be recreated.
 45 }
 46 
 47 - (BOOL)isTableExist:(NSString *)tableName {
 48     
 49     FMDatabase *db = [FMDatabase databaseWithPath:[self databaseFilePath]];
 50     if ([db open]) {
 51         
 52         FMResultSet *rs = [db executeQuery:@"select count(*) as 'count' from sqlite_master where type ='table' and name = ?", tableName];
 53         while ([rs next]) {
 54             
 55             // just print out what we've got in a number of formats.
 56             NSInteger count = [rs intForColumn:@"count"];
 57             
 58             [db close];
 59             
 60             if (count <= 0) {
 61                 
 62                 return NO;
 63             }else {
 64                 
 65                 return YES;
 66             }
 67         }
 68         [db close];
 69     }else {
 70         
 71         NSLog(@"error when open db");
 72     }
 73     
 74     return NO;
 75 }
 76 
 77 - (void)createTable:(NSString*)table {
 78     
 79     if ([self isTableExist:table]) {
 80         
 81         NSLog(@"table exist already");
 82         
 83         NSLog(@"alter now");
 84         FMDatabase *db = [FMDatabase databaseWithPath:[self databaseFilePath]];
 85         if ([db open]) {
 86             if (![db columnExists:@"noe" inTableWithName:table]) {
 87                 
 88                 [self alterTable:table];
 89             }
 90             
 91             [db close];
 92         }
 93         
 94         return;
 95     }
 96     FMDatabase *db = [FMDatabase databaseWithPath:[self databaseFilePath]];
 97     if ([db open]) {
 98         
 99         NSString *sSQL = [NSString stringWithFormat:CREATE_TEACHER_TAB, table];
100         BOOL res = [db executeUpdate:sSQL];
101         if (!res) {
102             
103             NSLog(@"error when creating db table");
104         }else {
105             
106             NSLog(@"succ to creating db table");
107             
108             [self insertContentTable:table Content:@"ssfdsf" Time:@"2015-04-05"];
109         }
110         [db close];
111         
112     }else {
113         
114         NSLog(@"error when open db");
115     }
116 }
117 
118 - (void)insertContentTable:(NSString*)table Content:(NSString*)content Time:(NSString *)time
119 {
120     [dbQueue inDatabase:^(FMDatabase *db)
121      {
122          NSString *sql = [NSString stringWithFormat:INSERT_SQL,table];
123          
124          BOOL res = [db executeUpdate:sql,content,time];
125          if (!res)
126          {
127              NSLog(@"error when insertContentTable");
128          }
129          else
130          {
131              NSLog(@"succ to insertContentTable");
132          }
133      }];
134 }
135 
136 - (void)alterTable:(NSString*)table {
137     
138     [dbQueue inDatabase:^(FMDatabase *db) {
139          
140          NSString *sql = [NSString stringWithFormat:@"ALTER TABLE %@ ADD %@ text",table, @"noe"];
141          
142          BOOL res = [db executeUpdate:sql];
143          if (!res)
144          {
145              NSLog(@"error when alterTable");
146          }
147          else
148          {
149              NSLog(@"succ to alterTable");
150          }
151      }];
152 }

 

posted @ 2015-11-25 16:42  CC的糖豆  阅读(151)  评论(0编辑  收藏  举报