zoukankan      html  css  js  c++  java
  • 使用FMDB框架来加载数据库

    1、打开数据库

        先要获取沙盒的数据库文件名,并创建数据库文件名,定数据库:

        @property (nonatomic, strong) FMDatabase *db;

        // 0.获得沙盒中的数据库文件名

        NSString *filename = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 

        NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"student.sqlite"];

       // 1.创建数据库实例对象

        self.db = [FMDatabase databaseWithPath:filename];

       // 2.打开数据库

        if ( [self.db open] ) {

            NSLog(@"数据库打开成功");

        // 创表

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

    if (result) {

                NSLog(@"创表成功");

            } else {

                NSLog(@"创表失败");

            }

        } else {

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

    }

    2、FMDB的核心类

        FMDB有三个主要的类:

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

        FMResultSet:使用FMDatabase执行查询后的结果集

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

    3、执行更新

         使用executeUpdate:方法执行更新:

             - (BOOL)executeUpdate:(NSString*)sql, ...  // 添加数据库更新语句,除了查找,其他都用更新语句

             - (BOOL)executeUpdateWithFormat:(NSString*)format, ...

             -(BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)arguments

    4、执行查询

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

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

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

       示例:

              // 查询数据

             FMResultSet *rs = [db executeQuery:@"SELECT * FROM t_student"];

            // 遍历结果集

           while ([rs next]) {

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

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

           double score = [rs doubleForColumn:@"score"];

           }

    5、FMDB事务的使用

         // 开启事务

         [db beginTransaction];

         //  [db executeUpdate:@"begin transaction;"];

         // 更新数据

          [db executeUpdate:@"update t_student set age = ? where name = ?;", @20, @"jack"];

         [db executeUpdate:@"update t_student set age = ? where name = ?;", @20, @"jack"];

         // 提交事务

          [db commit]; 

         //[db executeUpdate:@"commit transaction;"];

     注意:其中有一条失败了,就会出错,发现情况不对,可以使用回滚事务:

            if (发现情况不对)

             {

                // 回滚事务

                [db rollback]; 

               // [db executeUpdate:@"rollback transaction;"];

              }

  • 相关阅读:
    基于nginx+tomcat部署商城系统并连接数据库
    nginx防DDOS、cc、爬虫攻击
    nginx企业级优化
    基于nginx结合openssl实现https
    nginx打包成rpm
    产品运营3部曲:引量、留存、活跃
    从赢利前和赢利后分析 提高美国市场APP安装量的技巧
    APP海外优质推广渠道(三):海外ASO服务/工具汇总
    APP海外优质推广渠道(二):海外广告联盟/平台汇总
    关于O2O项目的个人看法
  • 原文地址:https://www.cnblogs.com/angongIT/p/3815837.html
Copyright © 2011-2022 走看看