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 }
时间: 2024-12-11 00:24:20

FMDB 相关的相关文章

SQL数据库相关 FMDB框架的使用

SQLite是一个开源的嵌入式关系数据库,它在2000年由D. Richard Hipp发布,它的减少应用程序管理数据的开销,SQLite可移植性好,很容易使用,很小,高效而且可靠.SQLite嵌入到使用它的应用程序中,它们共用相同的进程空间,而不是单独的一个进程.从外部看,它并不像一个RDBMS,但在进程内部,它却是完整的,自包含的数据库引擎. 嵌入式数据库的一大好处就是在你的程序内部不需要网络配置,也不需要管理.因为客户端和服务器在同一进程空间运行.SQLite 的数据库权限只依赖于文件系统

FMDB

FMDB 对 sqlite进行了封装,这样数据库的相关操作就变得灰常的简单.. 首先去这里下载FMDB:https://github.com/ccgus/fmdb 把FMDB的相关文件添加到工程 在工程中假如framwwork:libsqlite3.dylib 然后在.h中引入: [cpp] view plain copy #import "FMDatabase.h" 首先,你要使用一个数据库文件的路径来构造一个FMDB对象: [cpp] view plain copy FMDatab

FMDB 使用方法

优秀的第三方库,README 也是很优秀的,理解了 README,会对使用带来很多便利. ARC 和 MRC 项目中使用 ARC 还是 MRC,对使用 FMDB 都没有任何影响,FMDB 会在编译项目时自动匹配. 使用 在 FMDB 中有三个重要的类: FMDatabase:是一个提供 SQLite 数据库的类,用于执行 SQL 语句. FMResultSet:用在 FMDatabase 中执行查询的结果的类. FMDatabaseQueue:在多线程下查询和更新数据库用到的类. 数据库创建 F

我为什么用 SQLite 和 FMDB 而不用 Core Data

转:http://segmentfault.com/a/1190000000363392 编者注:文章的"我"是指原作者. 凭良心讲,我不能告诉你不去使用Core Data.它不错,而且也在变好,并且它被很多其他Cocoa开发者所理解,当有新人加入你的组或者需要别人接手你的项目的时候,这点很重要.更重要的是,不值得花时间和精力去写自己的系统去代替它.真的,使用Core Data吧. 为什么我不使用Core Data Mike Ash写到: 就我自己而言,我不是个狂热粉丝.我发现API是

FMDB用法

iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepersistentobjects等,FMDB (https://github.com/ccgus/fmdb) 是一款简洁.易用的封装库,这一篇文章简单介绍下FMDB的使用. 在FMDB下载文件后,工程中必须导入如下文件,并使用 libsqlite3.dylib 依赖包. FMDB同时兼容ARC和非ARC工

UI进阶 FMDB

一.FMDB简介 1.FMDB简介 iOS中原生的SQLite API在进行数据存储的时候,需要使用C语言中的函数,操作比较繁琐.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.SQLitePersistentObjects等.       FMDB是一款简洁.易用的封装库.因此,在这里推荐使用第三方框架FMDB,它是对libsqlite3框架的封装,用起来的步骤与SQLite使用类似,并且它对于多线程的并发操作进行了处理,所以是线程安全

在iOS开发中使用FMDB-备用

SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库.iOS SDK很早就支持了SQLite,在使用时,只需要加入 libsqlite3.dylib 依赖以及引入 sqlite3.h 头文件即可.但是,原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,开源社区中就出现了一系列将SQLite API进行封装的库,而FMDB (https://github.com/ccgus/fmdb) 则是开源社区中的优秀者. FMDB在

在iOS开发中使用FMDB

前言 SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库.iOS SDK 很早就支持了 SQLite,在使用时,只需要加入 libsqlite3.dylib 依赖以及引入 sqlite3.h 头文件即可.但是,原生的 SQLite API 在使用上相当不友好,在使用时,非常不便.于是,开源社区中就出现了一系列将 SQLite API 进行封装的库,而 FMDB (https://github.com/ccgus/fmdb) 则是开源社区中的

iOS数据库操作(使用FMDB)

iOS学习笔记(十六)——数据库操作(使用FMDB) 分类: iOS开发 2013-07-15 23:19 8655人阅读 评论(5) 收藏 举报 目录(?)[+] iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepersistentobjects等,FMDB (https://github.com/ccgus/fmdb) 是一款简洁.易用的封装库,这一