zoukankan      html  css  js  c++  java
  • iOS 数据库第三方FMDB的简单使用

    一 FMDB的简单说明及介绍

    FMDB的github地址 https://github.com/ccgus/fmdb

    FMDB是一款简洁的,易用的封装库,简单介绍一下FMDB的使用

    在FMDB下载文件后,工程中必须导入如下文件,并使用libsqlite3.0.tbd依赖包

    FMDB同时兼容ARC和非ARC工程,会自动根据工程配置来调整相关的内存管理代码.

    二.FMDB的核心类

    FMDB有三个主要的类

    (1)FMDatabase

         一个FMDatabase对象就代表一个单独的SQLite数据库,用来执行SQL语句

    (2)FMResultSet

        使用FMDatabase执行查询后的结果集(即所查询结果的集合)

    (3)FMDatabaseQueue

        用于多线程中执行多个查询或更新,它是线程安全的

    三.打开数据库

    通过指定的SQLite数据库文件路径创建FMDatabase对象

    path 为所创建数据库的路径

    FMDatabase *db = [FMDatabase databaseWithPath:path];

    if (![db open]){

    NSLog(@"数据库打开失败");

    }

    文件路径有三种情况

    (1)具体文件路径

    如果不存在会自动创建

    (2)空字符串@""

    会在临时目录创建一个空得数据库

    当FMDatabase连接关闭时,数据库文件也会被删除

    (3)nil

    会创建一个内存中林女士数据库,当FMDatabase连接关闭时,数据库会被销毁

    四 执行更新

    在FMDB中,除查询以外的所有操作都称为更新

    create、drop、insert、update、delete等

    使用executeUpdate:方法执行更新

    示例

    [db executeUpdate:@"UPDATE t_student SET age = ? WHERE name = ?;", @20, @"Jack"]

    五.执行查询

    查询方法

    - (FMResultSet *)executeQuery:(NSString*)sql, ...

    - (FMResultSet *)executeQueryWithFormat:(NSString*)format, ...

    - (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray *)arguments

    示例代码

    //

    //  ViewController.m

    //  数据库

     

    //  Copyright © 2016 zm. All rights reserved.

    //

     

    #import "ViewController.h"

    #import "FMDB.h"

    @interface ViewController ()

    @property (nonatomic,strong)FMDatabase *db;

     

    @end

     

    @implementation ViewController

     

    - (void)viewDidLoad {

        [super viewDidLoad];

      //1. 获取数据库文件的路径

        NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

        

        NSString *fileName= [doc stringByAppendingPathComponent:@"student.sqlite"];

        

        //2.获取数据库

        FMDatabase *db = [FMDatabase databaseWithPath:fileName];

        

        //3.打开数据库

        if ([db open]) {

            //创表

            BOOL result = [db executeUpdate:@"create table if not exists t_student (id integer primary key autoincrement,name text not null,age integer not null);"];

            if (result) {

                NSLog(@"创建表成功");

            }else{

                

                NSLog(@"创建表失败");

            }

        }

        

        self.db = db;

     

    }

     

    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

        

        [self delete];

        [self insert];

        [self query];

        

        

    }

    //删除数据

     

    - (void)delete{

        

        [self.db executeUpdate:@"drop table if exests t_student;"];

        [self.db executeUpdate:@"create table if not exists t_student (id integer primary key autoincrement,name text not null, age integer not null);"];

        

        

        

    }

     

    //插入数据

    - (void)insert{

        

        for (int i = 0; i < 10; i++) {

            NSString *name = [NSString stringWithFormat:@"jack-%d",arc4random_uniform(40)];

            

            [self.db executeUpdate:@"insert into t_student (name,age) values (?,?);",name,@(arc4random_uniform(40))];

     

            

        }

      

    }

     

    //查询

     

    -(void)query{

        //1.执行查询语句

        FMResultSet *resultSet = [self.db executeQuery:@"select * from t_student"];

        //2遍历结果

        while ([resultSet next]) {

            int ID = [resultSet intForColumn:@"id"];

            NSString *name = [resultSet stringForColumn:@"name"];

            int age = [resultSet intForColumn:@"age"];

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

        }

        

        

        

    }

     

    @end

  • 相关阅读:
    C++开发人脸性别识别教程(12)——加入性别识别功能
    Java数组实现循环队列的两种方法
    开源 免费 java CMS
    Android必知必会-Stetho调试工具
    初中级DBA必需要学会的9个Linux网络命令,看看你有哪些还没用过
    fputs与fgets
    一个使用命令行编译Android项目的工具类
    SpringMVC @RequestBody接收Json对象字符串 demo
    spring 事件(Application Event)
    spring Aop的一个demo
  • 原文地址:https://www.cnblogs.com/zmloveworld/p/5169276.html
Copyright © 2011-2022 走看看