iOS 数据库开源框架FMDB的快速入门与使用

版权声明:本文为博主Atany原创文章,未经博主允许不得转载。博客地址:http://blog.csdn.net/yang8456211 https://blog.csdn.net/yang8456211/article/details/15811375

现在是2016年,我依然爱着你,我的FMDB!


之前也用过原生的Sql,但是确实FMDB更加的轻便好用,现在,就用最简单的语言记录一下FMDB的用法。


准备

1)首先下载FMDB开源框架,https://github.com/ccgus/fmdb

2)解压得到fmdb-master文件夹,我们只需要拷贝src文件夹的文件到项目就可以了。

3)删除src文件夹中fmdb.m这个文件,不要担心,这只是一些例子,如果不删会报duplicate symbol_main错误。

4)添加库

添加libsqlite3,因为FMDB也是基于Sqlite的。



基本语法

1)创建数据库

第一步就是定义数据库存放的位置,这里存到应用沙盒的document文件夹下。

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentDirectory = [paths objectAtIndex:0];
    NSLog(@"%@",documentDirectory);
    NSString *dbPath = [documentDirectory stringByAppendingPathComponent:@"MyDataBase.db"];
    FMDatabase *db = [FMDatabase databaseWithPath:dbPath] ;
    if (![db open]) {
        NSLog(@"打开数据库失败");
        assert(NO);
    }

dbPath就是数据库的路径了大笑,这里我们给数据库取名为MyDataBase.db,然后发送databaseWithPath消息来创建一个数据库。

如上图,我们成功在沙盒的Document文件夹下创建了MyDataBase.db数据库。

【注】:很多新手不知道怎么定位到沙盒下的某个文件夹,我的方法是可以先把需要的文件夹路径用NSLog打出来(因为运行的时候会产生一个UUID码,为程序命名,我们可不知道这个名字是什么。。)。上面我打出了documentDirectory路径,然后点击Finder,菜单栏选择“前往”,然后“前往文件夹。。”,把之前的路径复进去就OK了。


2)创建表

[db executeUpdate:@"CREATE TABLE Person (Name text,Age integer)"];

executeUpdate 后面跟 sql 语句就行,sql基本语句忘了的话,查查就知道了


3)增

[db executeUpdate:@"INSERT INTO Person (Name,Age) VALUES (?,?)",@"Atany",[NSNumber numberWithInt:22]];
[db executeUpdate:@"INSERT INTO Person (Name,Age) VALUES (?,?)",@"Mary",[NSNumber numberWithInt:20]];
[db executeUpdate:@"INSERT INTO Person (Name,Age) VALUES (?,?)",@"Peter",[NSNumber numberWithInt:38]];
[db executeUpdate:@"INSERT INTO Person (Name,Age) VALUES (?,?)",@"Henry",[NSNumber numberWithInt:15]];

增加了四条数据,同样是使用executeUpdate方法+sql语句来实现的。

我们使用SQLiteManager工具来查看结果,添加已经成功了。

4)删

[db executeUpdate:@"DELETE FROM Person WHERE Name = ?",@"Mary"];

结果:


5)改

[db executeUpdate:@"UPDATE Person SET Age = ? WHERE Name = ? ",[NSNumber numberWithInt:100],@"Henry"];
 结果:



6)查

NSLog(@"-----------------------------------");
    NSInteger i = 1;
    FMResultSet *rs = [db executeQuery:@"SELECT * FROM Person"];
    while ([rs next]) {
        NSString *name = [rs stringForColumn:@"Name"];
        NSString *age = [rs stringForColumn:@"Age"];
        NSLog(@"第[%d]条数据",i++);
        NSLog(@"Name:%@",name);
        NSLog(@"age:%@",age);
}
NSLog(@"-----------------------------------");

先用executeQuery得到结果集,然后通过next消息遍历结果集,使用stringForColumn方法取对应的值。

结果:

2013-11-13 11:19:24.930testFMDB[6875:c07] -----------------------------------

2013-11-13 11:19:24.931testFMDB[6875:c07][1]条数据

2013-11-13 11:19:24.931 testFMDB[6875:c07] Name:Atany

2013-11-13 11:19:24.931 testFMDB[6875:c07] age:22

2013-11-13 11:19:24.931 testFMDB[6875:c07][2]条数据

2013-11-13 11:19:24.932 testFMDB[6875:c07] Name:Peter

2013-11-13 11:19:24.932 testFMDB[6875:c07] age:38

2013-11-13 11:19:24.932 testFMDB[6875:c07][3]条数据

2013-11-13 11:19:24.932 testFMDB[6875:c07] Name:Henry

2013-11-13 11:19:24.932 testFMDB[6875:c07] age:100

 

FMDB的使用确实挺方便的,如果进行开发的话,我比较喜欢使用FMDB~得意


杨光(atany)原创,转载请注明博主与博文链接,未经博主允许,禁止任何商业用途。

博文地址:http://blog.csdn.net/yang8456211/article/details/15811375

博客地址:http://blog.csdn.net/yang8456211

本文遵循“署名-非商业用途-保持一致”创作公用协议











猜你喜欢

转载自blog.csdn.net/yang8456211/article/details/15811375