FMDB使用和基本SQL语句

FMDB是一个基于sqlite_3封装的第三方数据库,相比调用Apple原生的sql语句简单许多。下面简单看下怎么使用。

目录结构

首先是创建数据库存放的路劲,在ios应用程序里面,每个应用对应一个空间,称为沙盒。应用只能访问自己沙盒内部的资源,不能越界访问别的沙盒。通过NSHomeDirectory()可以找到沙盒的路劲,打开finder,选择前往,输入打印的地址例如:

/Users/xxx/Library/Application Support/iPhone Simulator/7.1/Applications/69454C51-6BA5-41DD-AE6B-1BA16D42F9C7
在这个目录下可以看到有四块内容,分别是Document,Library,App包名称,temp。
  • Document  一般存放程序中建立的文件,比如数据库文件,itunes备份时候会同步备份该目录下文件。
  • Library   主要存放默认设置和状态信息。该目录下分为Cache和Preferences两个目录,Caches存放程序中缓存的文件,保存程序下次启动需要的信息,在应用程序退出时候也不会删除,不会同步备份这部分数据。Preferences主要存放设置信息,比如UserDefault的文件,以plist形式存放在该目录下。
  • App包名称  默认生成的文件,包含程序所有的资源文件,比如bundle,图片,音频,视频等资源,不要修改这部分内容,否则运行时候会报错。
  • temp      存放临时创建的文件,下次程序启动不需要的信息。                                                                         
了解了文件存放目录情况,我们首先来创建数据库,FMDB提供三种方式
  1. 创建一个路劲存放数据库,比如说在Document/xx.DB,数据库就存放在Document下面。如果不指定路劲或者路劲不正确也没关系,会自动创建一个路劲。
  2. 如果指定@“”路劲,那么会在temp目录下创建一个临时目录,数据库链接关闭时候会自动被删除。
  3. 如果传递一个NULL,那么会在内存中创建一个数据库,同样的数据库链接关闭时候会被自动删除。
我们指定在Document下面创建数据库,需要判断是否能够成功打开,避免空间不够等原因导致失败。

创建数据库
    //创建一个数据库
    NSArray *documentArrar = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentPath = [documentArrar objectAtIndex:0];
    NSString *tempPath = NSTemporaryDirectory();
    NSLog(@"documentPath = %@",documentPath);
    NSLog(@"tempPath = %@",tempPath);
        NSString *path = [documentPath stringByAppendingPathComponent:@"TF.db"];
        _dataBase = [FMDatabase databaseWithPath:path];
        if (![_dataBase open]) {
            NSLog(@"fail to open db");
            return;
        }
    [_dataBase close];
我们创建了一个名称叫TF.db的数据库。

更新操作
除了select操作之外都是更新操作,使用executeUpdate方法执行。
增加:
首先我们创建表,首先是User表,他有name,age,address等属性。
    [_dataBase executeUpdate:@"CREATE TABLE User (Name NSString, Age NSInteger,Address NSString,TelePhone NSInteger,ID int)"];
User括号里的分别对应着属性和类型
在Document路径下通过数据库软件打开数据库可以看到



插入:
通过INSERT INTO 表名 (参数名称,...)VAULES (?,...) 来更新表里面对应参数的值,例如
    [_dataBase executeUpdate:@"INSERT INTO User (Name,Age,Address,TelePhone,ID) VALUES (?,?,?,?,?)",@"lirihuang",[NSNumber numberWithInt:24],@"chenzhou",[NSNumber numberWithFloat:18612254138],[NSNumber numberWithInteger:46]];
打开数据库软件可以看到



值得注意的是VULES里面需要传入是对象,不能是简单数据类型,比如整形,需要用NSNumber包装成对象。

删除:
    [_dataBase executeUpdate:@"DELETE FROM User WHERE Age = 24"];
这句话意思是删除User表中指定列Age=24。


查找
使用executeQuery方法来查找数据库中元素。如果要查找表中全部列,使用*通配符查找。
FMResultSet *rs = [_dataBase executeQuery:@"SELECT * FROM User"];
    if ([rs next]) {
        NSString *name = [rs stringForColumn:@"Name"];
        int age = [rs intForColumn:@"Age"];
        NSString *address = [rs stringForColumn:@"Address"];
        NSLog(@"name = %@ age = %d,address = %@",name,age,address);
    }
    [rs close];


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值