iOS数据持久化——FMDB应用

        弄了很久的FMDB的操作,断断续续的终于能算上是完工了,demo的源码此处。哈哈,其实代码里面都有注释,想信大家也都能看的懂。不过一些我认识比较重点的还是要罗嗦下了……

首先工程里添这个FMDB可去这里下载到。然后添加所支持的内库,这个 libsqlite3.0.dylib.大环境就搭建好了。

然后要为我们的数据找到一个路径安排下来,我们当然是想每次访问的都是同一个数据库了。所以在此的单例模式是最合适不过了。对应代码里的 DBmanager.h这个类里。

static DBmanager *_sharedDBmanager;

+(DBmanager *)defaultDBManager{
    if (!_sharedDBmanager) {
        _sharedDBmanager = [[DBmanager alloc] init];
    }
    return _sharedDBmanager;
}
下面是创建的路径,数据库的路径的代码
    NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    
    NSString *dbPath = [docPath stringByAppendingPathComponent:name];
    if (!_dataBase) {
        _dataBase = [FMDatabase databaseWithPath:dbPath];
    }
    if (![_dataBase open]) {
        NSLog(@"不能打开数据库!");
        return 0;
    }else
        return 1;
然后我们就可以先查看下我们的表是不是存在,如果不存在下一步就是创建表了。(我们对数据库操作都放在 SUserDB.h类里,以便我们好管理)

  FMResultSet *set = [_db executeQuery:[NSString stringWithFormat:@"select count (*) from sqlite_master where type = 'table' and name = '%@'",kUserTableName]];
这里的kUserTableName是我们表所起的名称,然后上面是squlit语句,下面的增删改查中也都用到了squlit语句,下面的就不再一一说了,我第一次接触这个东西时,也很搞不懂,不过看多了也就熟悉了,感觉也没什么难的。

    [set next];
    NSInteger count = [set intForColumnIndex:0];//查看表是否存在
    debugLog(@"count ==%d",count);
    BOOL existTable = count;
    if (existTable) {
        debugLog(@"数据库table存在!");
    }else{
        NSString *sql = [NSString stringWithFormat:@"create table %@ ('uid' INTEGER PRIMARY KEY AUTOINCREMENT  NOT NULL , 'strFileName' text,'strFileID' text,'strFileType' text,'strFileCounts' text)",kUserTableName];
        BOOL res = [_db executeUpdate:sql];//如果已经存在数据库了返回NO,没存在返回yes
        if (!res) {
            debugLog(@"error when creating db table");
        }else
            debugLog(@"表创建成功!");
    }
上面的sql就是对就的创建表的sqlit语句,主要是我们要创建表的字段还有对应的表的名称。

后面的增、删、改查就不在一一拿来赘述了,源码上都有,相信大家一看也就都会明白。

Learn to share progress!


你可能感兴趣的:(IOS)