• SQLite基本操作-----IOS(如有雷同,纯属巧合)


    一、常用方法

    sqlite3          *db, 数据库句柄,跟文件句柄FILE很类似

    sqlite3_stmt      *stmt, 这个相当于ODBC的Command对象,用于保存编译好的SQL语句
    sqlite3_open(),   打开数据库,没有数据库时创建。
    sqlite3_exec(),   执行非查询的sql语句
    Sqlite3_step(), 在调用sqlite3_prepare后,使用这个函数在记录集中移动。
    Sqlite3_close(), 关闭数据库文件
    还有一系列的函数,用于从记录集字段中获取数据,如
    sqlite3_column_text(), 取text类型的数据。
    sqlite3_column_blob(),取blob类型的数据
    sqlite3_column_int(), 取int类型的数据

     

    二、创建表

    创建表的时候需要预处理和执行创建两个过程

    执行创建的时多选择sqlite3_step

     

     

    三、相关代码

    1、打开或者创建数据库

     sqlite3 *sqlDataBase;
    
    -(BOOL)createOrOpen:(NSString *)dbName
    
    {
    
        //获取用户域覆径信息
    
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);
    
        NSString *documentsDirectory = [paths objectAtIndex:0];
    
        /**
    
         *Users/admin/Library/Application Support/iPhone Simulator/7.1/Applications/8E23557E-AAA6-471A-AAFE-E036BF1B7E4C/Library/Documentation
    
         *判断用户域是否有数据库dbNmae
    
         */
    
        NSString *path = [documentsDirectory stringByAppendingPathComponent:dbName];
    
        NSFileManager *fileManageer = [NSFileManager defaultManager];
    
        //如果用户域内有该数据库,则返回yes,否则返回NO
    
        BOOL find = [fileManageer fileExistsAtPath:path];
    
        if(find)   //对找到进行处理,如果找到了,并且打开了,则返回yes
    
        {
    
            //打开该数据库,如果打开失败,则返回NO,否则返回yes
    
            if(sqlite3_open([path UTF8String], &sqlDataBase)!= SQLITE_OK)
    
               {
    
                   //关闭sqlDataBase,实际是释放了它
    
                   sqlite3_close(sqlDataBase);
    
                   return NO;
    
               }
    
               return YES;
    
        }
    
        
    
        NSLog(@"%d",sqlite3_open([path UTF8String], &sqlDataBase));
    
               //创建数据库,创建返回yes,并且打开数据库,否则返回NO
    
        if(sqlite3_open([path UTF8String], &sqlDataBase)==SQLITE_OK)
    
        {
    
            return YES;
    
        }else
    
        {
    
         //关闭sqlDataBase,实际是释放了它
    
            sqlite3_close(sqlDataBase);
    
            return NO;
    
        }
    
               
    
               
    
               
    
        return NO;
    
     
    
    }

    2、插入数据

    //向表中插入数据
    
    -(void)insertMBkey:(NSString *)key
    
    {
    
        BOOL isOK = NO;
    
        sqlite3_stmt *statement;
    
        static char *sql = "INSERT INTO user VALUES ('1', 'Bill', '河南', 'ssss','2')";
    
        int success = sqlite3_prepare_v2(sqlDataBase, sql, -1, &statement, NULL);
    
        if(success !=SQLITE_OK)
    
        {
    
            isOK = NO;
    
        }else
    
        {
    
            sqlite3_bind_text(statement, 1, [key UTF8String], -1, SQLITE_TRANSIENT);
    
            success = sqlite3_step(statement);
    
            sqlite3_finalize(statement);
    
        }
    
        
    
        if(success ==SQLITE_ERROR)
    
        {
    
            isOK = NO;
    
        }else
    
        {
    
            isOK=YES;
    
        }
    
        
    
        return;
    
    }

    3、查询数据

    //查询数据
    
    -(void)GetList:(NSMutableArray *)KeysList
    
    {
    
        BOOL  isOK = NO;
    
        sqlite3_stmt *statement;
    
        static char *sql = "select id,address from user";
    
        int success = sqlite3_prepare_v2(sqlDataBase, sql, -1, &statement, NULL);
    
        if(success !=SQLITE_OK)
    
        {
    
            isOK = NO;
    
        }else
    
        {
    
            //查询结果集中一条一条地遍历所有记录,这里的数字对应的时列值
    
            while (sqlite3_step(statement)==SQLITE_ROW) {
    
                int kid = sqlite3_column_int(statement, 0);
    
                char *key = (char  *)sqlite3_column_text(statement, 1);
    
                UserInfo *userModel = [[UserInfo alloc] init];
    
            
    
                    userModel.userId =kid;
    
                if (key) {
    
                  userModel.userAddress = [NSString stringWithUTF8String:key];
    
                }
    
                    [KeysList addObject:userModel];
    
                sqlite3_finalize(statement);
    
            }
    
            NSLog(@"%@",KeysList);
    
            if(success==SQLITE_ERROR)
    
            {
    
                isOK = NO;
    
            }else
    
            {
    
                isOK = YES;
    
            }
    
            return;
    
        }
    
    }

     

  • 相关阅读:
    nginx的优化
    apache日志轮询技术
    PV IP UV的概念介绍
    日志文件记录的重要性
    linux chmod 755
    ssh免密码登录机器(使用公钥和秘钥进行加密来实现)
    ffmpeg基础
    linux使用grep和find查找内容
    为什么我们会越来越穷?
    从我干程序员开始 我就不准备干这个行业
  • 原文地址:https://www.cnblogs.com/zhanggui/p/3926705.html
Copyright © 2020-2023  润新知