• oc中数据库使用详细解释(一)


    ////以下为定义为DB.h的单例.继承自NSObject,引入sqlite3头文件.引入前请在框架Framework中引入sqlite3.0的框架  
    #import <Foundation/Foundation.h>
    
    #import <sqlite3.h>
    
    @interface DB : NSObject
    
    //打开数据库,并返回数据库的指针
    + (sqlite3 *)open;
    
    //关闭数据库
    + (void)close;
    
    @end
    
    #import "DB.h"
    
    @implementation DB
    
    //实际开发中 对数据库的操作会比较多,为了避免不停的打开和关闭数据库, 我们把数据库指针做成单例,如果单例有值,直接返回,如果单例没值,创建一个。
    #define kSQLFileName @"StudentManage.sqlite"
    static sqlite3 *db = nil;
    
    + (sqlite3 *)open
    {
        if (db != nil) {//如果数据库已经打开,无需再次打开
            return db;
        }
        
        //Documents文件夹路径
        //如果数据库在docments文件下还没有创建.
        //第一步先通过NSSearchPathForDirectoriesInDomains找到docments文件夹路径
        NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
        //数据库文件 路径
        NSString *sqlFilePath = [docPath stringByAppendingPathComponent:kSQLFileName];
        NSLog(@"%@",sqlFilePath);
        //NSFileManager 类型的实例对象.用来检测给定路径有木有文件
        NSFileManager *fm = [NSFileManager defaultManager];
        if ([fm fileExistsAtPath:sqlFilePath] == NO) {//如果给定的路径没有文件
            NSString *bundleSQLFilePath = [[NSBundle mainBundle] pathForResource:kSQLFileName ofType:nil];
            //把包里面的数据库文件 拷贝到 Documents下
            [fm copyItemAtPath:bundleSQLFilePath toPath:sqlFilePath error:nil];
        }
        sqlite3_open([sqlFilePath UTF8String], &db);
        return db;
    }
    
    
    + (void)close
    {
        sqlite3_close(db);
        db = nil;
    }
    



  • 相关阅读:
    页面实现文件的下载
    微信小程序拉起登录的操作
    css3之border-radius理解
    web前端常用网站--更新中
    小程序中遇见文件过大的话就需要分包
    JS中的“&&”与“&”和“||”“|”有什么区别?
    ts中有时莫名报错
    浏览器解析JavaScript的原理
    在vue中axios的问题
    eslint的规则
  • 原文地址:https://www.cnblogs.com/xukunhenwuliao/p/3576224.html
Copyright © 2020-2023  润新知