FMDB 使用方法简介

ARC 和 MRC数据库

FMDB做为一个优秀的通用第三方数据库框架,不管在ARC仍是MRC下,均可以自动匹配。多线程

使用框架

在FMDB中,有三个重要的类:spa

  • FMDatabase:是一个提供SQLite数据库的类,每个SQLite的对象对应一个数据库,用于执行SQL语句。
  • FMResultSet:在FMDatabase中用于执行查询结果的类
  • FMDatabaseQueue:在多线程下查询和更新数据库用到的类

数据库的建立和使用线程

  • 数据库的文件路径能够是一下三者之一:
    • 一个文件的系统路径,磁盘中能够不存在此文件,由于若是不存在会自动为你建立
    • 一个空的字符串@"",会在临时位置建立一个空的数据库,当FMDatabase链接关闭时,该数据库会被删除
    • NULL,会在内存中穿件一个数据库,当FMDatabase链接关闭时,该数据库会被销毁。

代码示例orm

- (void)viewDidLoad {对象

    [super viewDidLoad];内存

 

 

    //获取沙盒路径的方法一字符串

    //实例化一个FMDatabase对象,并打开一个数据库,若是没有这个数据库,就会建立一个数据库string

//    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

//    

//    NSString *documentDirectory = [paths objectAtIndex:0];

//    

//    NSString *dbPath = [documentDirectory stringByAppendingPathComponent:@"Test.db"];

 

    //获取沙盒的路径的方法二

    NSString *dbPath = [NSString stringWithFormat:@"%@/Documents/xiaoming.db", NSHomeDirectory()];

 

    NSLog(@"%@", dbPath);

    //建立库

    FMDatabase *db = [FMDatabase databaseWithPath:dbPath];

 

    //判断若是数据库打开失败,就什么都不作

    if(![db open])

    {

        return;

    }

 

    //建立表

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

 

    //插入数据

    [db executeUpdate:@"INSERT INTO Users(Name, Age)VALUES(?,?)",@"Eric",[NSNumber numberWithInt:25]];

 

    NSString *userName1 = [db stringForQuery:@"SELECT Name FROM Users WHERE Age = ?", @"25"];

 

    NSLog(@"%@", userName1);

 

    //更新数据

    [db executeUpdate:@"UPDATE Users SET Name = ? WHERE Name = ?",@"Michael",@"Eric"];

 

    //删除数据

//    [db executeUpdate:@"DELETE FROM Users WHERE Name = ?", @"Michael"];

 

 

    //查询数据

    NSString *userName = [db stringForQuery:@"SELECT Name FROM Users WHERE Age = ?", @"25"];

 

    NSLog(@"%@", userName);

 

    //查询多个数据,FMResultSet类,是一个结果集,返回多条数据,FMDB会将数据放在这个结果集中,而后在对这个结果集进行查询便可

    FMResultSet *res = [db executeQuery:@"SELECT * FROM Users"];

 

    res = [db executeQuery:@"SELECT * FROM Users WHERE Age = ?", @"25"];

 

    while ([res next]) {

        NSString *name = [res stringForColumn:@"Name"];

        NSString *age = [res stringForColumn:@"Age"];

 

        NSLog(@"%@%@", name, age);

    }

}

输出结果

 

相关文章
相关标签/搜索