zoukankan      html  css  js  c++  java
  • FMDB使用的理解

    直接使用 FMDatabase(一个对象对应一个sqlite3*)对应第一种模式,自己持有并保证进行单线程操作

    使用FMDatabasePool对应第二种模式,保证不同线程使用同一个FMDatabasePool对象而使用不同的FMDatabase对象来进行数据库操作

    使用FMDatabaseQueue对应第三种模式,可以多线程访问,但是都是使用同一个FMDatabase对象,保证同时只有一个线程持有FMDatabase对象,排起队来一个一个访问操作

    简略的数据库操作代码:

    //打开数据库返回sqlite3*
    int err = sqlite3_open([self sqlitePath], (sqlite3**)&_db );
    int err = sqlite3_open_v2([self sqlitePath], (sqlite3**)&_db, flags, [vfsName UTF8String]);
    
    ///语法检查返回 sqlite3_stmt* (如果需要复用的话需要将对象重置sqlite3_reset(pStmt);)
    rc = sqlite3_prepare_v2(_db, [sql UTF8String], -1, &pStmt, 0);
    
    ///通过sqlite3_stmt*绑定条件赋值的参数数据
    NSString *parameterName = [[NSString alloc] initWithFormat:@":%@", dictionaryKey];
    int idx = sqlite3_bind_parameter_index(pStmt, [parameterName UTF8String]);
    sqlite3_bind_blob(pStmt, idx, bytes, (int)[obj length], SQLITE_STATIC);
    sqlite3_bind_text(pStmt, idx, [[self stringFromDate:obj] UTF8String], -1, SQLITE_STATIC);
    sqlite3_bind_double(pStmt, idx, [obj floatValue]);
    
    ///读取这条命令返回结果(对应update后续命令或next命令)
    rc      = sqlite3_step(pStmt);
    
    ///通过pStmt读取想要的数据
    const char *c = (const char *)sqlite3_column_text(pStmt, columnIdx);
  • 相关阅读:
    PIC基础学习3
    增强WebClient的同步下载功能
    同步模式下的端口映射程序
    .Net并行库介绍——Parallel
    写了一个测试正则表达式的小工具
    Windows 7下的虚拟光驱
    昨天发的一篇帖子竟然上了60天点击排行榜了
    .Net中的Junction Points操作
    在技嘉主板上实现USB启动
    正则表达式测试工具原型完成
  • 原文地址:https://www.cnblogs.com/yuxiaoyiyou/p/12895300.html
Copyright © 2011-2022 走看看