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 }