zoukankan      html  css  js  c++  java
  • iOS-Senior19-FMDB第三方应用

    代码版

    //第一步:引入框架,引入支持类库(libsqlite3.0添加)

    #import <FMDB.h>

    //声明数据库对象

    @property (nonatomic,strong) FMDatabase *dataBase;

    //存储路径

    @property (nonatomic,strong) NSString *filePath;

    ###############创建表######################

    - (void) createTable {

    //第一步:创建sql语句

    NSString *createSql = @"create table if not exists t_student(id integer primary key autoincrement not null,name text not null,age integer not null,sex text not null)";

    //第二步:找到存储路径

    NSString *document = [NSSearchPathForDirectoriesInDomains (NSDocumentDirctory,NSUserDomainMask,YES) objectAtIndex:0];

    NSLog(@"document = %@",document);

    self.filePath = [document stringByAppendingPathComponent:@"student.sqlite"];

    //第三步:使用路径初始化FMDB对象

    self.dataBase = [FMDatabase databaseWithPath:self.filePath];

    //第四步:(数据库执行相关的操作)需要判断数据库打开的时候进行的执行语句

    if([self.dataBase open]){

    BOOL result = [self.dataBase executeUpdate:createSql];

    if(result){

    NSLog(@"建表成功");

    }else {

    NSLog(@"建表失败");

    }

    }

    //第五步:关闭数据库

    [self.dataBase close];

    }

    ############添加数据####################

    //打开数据库

    [self.dataBase open];

    //第二步:进行相关的操作

    NSArray *nameArray = [NSArray arrayWithObjects :@"mbboy",@"boom sky",@"小明"];

    for(int i = 0; i <nameArray.count; i++){

    NSString *name = [nameArray objectAtIndex : i];

    //插入语句

    NSString *insertSql = @"insert into t_student(name,age,sex) values(?,?,?)";

    BOOL result = [self.dataBase executeUpdate:@"insert into t_student(name,age,sex) values(?,?,?)",name,@"69",@"boy"];

    if(result) {

    NSLog(@"插入成功");

    }else {

    NSLog(@"插入失败");

    }

    //关闭数据库

    [self.dataBase close];

    }

    ##############更改数据######################

    //打开数据库

    [self.dataBase];

    //给mbboy改名字

    BOOL result = [self.dataBase executeUpdate : @"update t_student set name = ? where name = ?",@"孟玲旭",@"mbboy"];

    if(result){

    NSLog(@"更改成功");

    } else {

    NSLog(@"更改失败");

    }

    //关闭数据库

    [self.dataBase close];

    }

    ##############删除数据#######################

    //打开数据库

    [self.dataBase open];

    //执行语句

    BOOL result = [self.dataBase executeUpdate:@"delete from t_student where name = ?",@"孟玲旭"];

    if(result){

    NSLog(@"删除成功");

    }else {

    NSLog(@"删除失败");

    }

    [self.dataBase close];

    ###################查询数据###################

    //打开数据库

    [self.dataBase open];

    //查询当前结果使用的类FMResultSet

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

    //遍历出需要的结果内容

    while([resultSet next]){

    NSSting *name = [resultSet objectForColumnName :@"name"];

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

    NSString *sex = [resultSet objectForColumnName:@"sex"];

    }

    //关闭数据库

    [self.dataBase close];

    }

    ##############插入很多学生####################

    //以队列的形式添加数据是FMDB比较常用的添加方式

        //FMDB不支持多个线程同时操作,所有一般以串行的方式实现相关的操作

        [self.dataBase open];

        //第一步:创建操作队列

        FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:self.filePath];

        //标识:记录是否操作成功

        __block BOOL isSucceed = YES;

        //第二步:把所需要的事件打包放在操作队列中

        [queue inTransaction:^(FMDatabase *db, BOOL *rollback) {

            //串行队列

            isSucceed = [db executeUpdate:@"insert into t_student(name, age, sex) values (?,?,?)", @"隔壁老王", @"18", @"nan"] && isSucceed;

            isSucceed = [db executeUpdate:@"insert into t_student(name, age, sex) values (?,?,?)", @"-1", @"69", @"unknow"] && isSucceed;

            isSucceed = [db executeUpdate:@"insert into t_student(name, age, sex) values (?,?,?)", @"ajar", @"18", @"nan"] && isSucceed;

            //如果有错误,就会将它返回

            if (!isSucceed) {

                //block返回的参数rollback尽行处理(bool类型的指针)

                *rollback = YES;

                return;

            }

            

        }];

        //关闭数据库

        [self.dataBase close];

     

  • 相关阅读:
    virtualBox下面安装linux系统如何共享目录
    PHP中spl_autoload_register()函数
    PHP 5.5 新特性
    useradd密码无效
    Linux audit安全审计工具
    Javascript class获取回调函数数据
    RPi 3B 无线连接配置
    Refused to execute inline event handler because it violates the following Content Security Policy directive: "xxx". Either the 'unsafe-inline' keyword, a hash ('sha256-...'), or a nonce ('nonce-...')
    options.html:1 Refused to load the script 'xxxx' because it violates the following Content Security Policy directive: "script-src 'self' blob: filesystem: chrome-extension-resource:".
    jQuery.Deferred exception: $.get is not a function TypeError: $.get is not a function
  • 原文地址:https://www.cnblogs.com/zhoulina/p/5544001.html
Copyright © 2011-2022 走看看