(iOS)读取db数据库

作者: RocketsChen | 来源:发表于2017-11-06 14:47 被阅读267次

一般除了网络请求数据外,我们的项目中还会遇到导入本地数据库(db)。今天主要分享如何获取db数据库中的所有字段和数据。

首先我们需要导入依赖框架FMDB,将我们所需读取的db数据库拖入项目中

本地数据库

展示sql下的数据库里的数据

Navicat
CREATE TABLE "nba_star" (
  "nID" integer,
  "name" text,
  "age" integer,
  "team" text,
  "highest" integer
);

-- ----------------------------
-- Records of "nba_star"
-- ----------------------------
BEGIN;
INSERT INTO "nba_star" VALUES (1, '哈登', 28, '休斯顿火箭', 56);
INSERT INTO "nba_star" VALUES (2, '库里', 29, '金州勇士', 54);
INSERT INTO "nba_star" VALUES (3, '詹姆斯', 32, '克利夫兰骑士', 61);
INSERT INTO "nba_star" VALUES (4, '维斯布鲁克', 28, '俄克拉荷马城雷霆', 54);
INSERT INTO "nba_star" VALUES (5, '保罗', 32, '休斯顿火箭', 43);
INSERT INTO "nba_star" VALUES (6, '杜兰特', 29, '金州勇士', 54);
COMMIT;
PRAGMA foreign_keys = true;

创建模型文件nbaStarItem 和一个可读去数据的文件DCReadDBSQL

nbaStarItem.h
/* id */
@property (nonatomic, copy) NSString *nID;
/* 名字 */
@property (nonatomic, copy) NSString *name;
/* 年龄 */
@property (nonatomic, copy) NSString *age;
/* 球队 */
@property (nonatomic, copy) NSString *team;
/* 生涯最高分 */
@property (nonatomic, copy) NSString *highest;

DCReadDBSQL.h
/**
  读取db数据库中所有字段
 @return 字典
 */
+ (NSMutableDictionary *)dc_readDBColumnNameToIndexMap;

/**
 读取db数据库中所有数据
 @return 数组
 */
+ (NSMutableArray *)dc_getDBArrayWithdbArray;
DCReadDBSQL.m
#pragma mark - 读取字段
+ (NSMutableDictionary *)dc_readDBColumnNameToIndexMap
{
    NSString *table = [NSString stringWithFormat:@"select * from %@",TABLENAME];
    NSString *dbPath = [[NSBundle mainBundle]pathForResource:DBNAME ofType:@"db"];
    FMDatabase *database = [ FMDatabase databaseWithPath:dbPath];
    if (![database open]) return 0;
    // 查找表 AllTheQustions
    FMResultSet *resultSet = [database executeQuery:table];
    resultSet = [database executeQuery:table];
    
    //读取table表中所有字段
    return resultSet.columnNameToIndexMap;
}
#pragma mark - 读取数据
+ (NSMutableArray *)dc_getDBArrayWithdbArray
{
    NSString *table = [NSString stringWithFormat:@"select * from %@",TABLENAME];
    NSString *dbPath = [[NSBundle mainBundle]pathForResource:DBNAME ofType:@"db"];
    FMDatabase *database = [ FMDatabase databaseWithPath:dbPath];
    if (![database open]) return 0;
    // 查找表 AllTheQustions
    FMResultSet *resultSet = [database executeQuery:table];
    resultSet = [database executeQuery:table];
    
    NSMutableArray *array = [NSMutableArray array];
    // 循环逐行读取数据resultSet next
    while ([resultSet next])
    {
        nbaStarItem *item = [[nbaStarItem alloc] init]; //给模型赋值
        item.nID = [resultSet stringForColumn:@"nID"];
        item.name = [resultSet stringForColumn:@"name"];
        item.age = [resultSet stringForColumn:@"age"];
        item.team = [resultSet stringForColumn:@"team"];
        item.highest = [resultSet stringForColumn:@"highest"];
        
        [array addObject:item];
    }
    
    [database close]; //关闭
    
    return array;
}
RUN.........
断点图

相关文章

  • (iOS)读取db数据库

    一般除了网络请求数据外,我们的项目中还会遇到导入本地数据库(db)。今天主要分享如何获取db数据库中的所有字段和数...

  • # Android 9.0 Pie SQLite WAL

    问题描述:在服务端存储APP List数据库,在客户端下载数据库db文件。而后从db文件读取的内容总是缺少两条记录...

  • iOS如何读取.db文件

    做项目的过程中经常会遇到处理一些比较大而且比较固定的数据,比如汽车的品牌,型号,系列,或者是地区列表,这些数据都有...

  • IOS-OC读取外部数据库(.db)文件

    1. 首先导入SQL处理库FMDB,使用FMDB来处理 2. 在导入需要处理的文件,如file.db 3. 实例代码

  • thinkphp5的无限级分类

    数据库的设计: Goods_type分类表 无限级分类的读取,关键代码如下: $data=db('goods_ty...

  • iOS DB数据库

    一:创建DBManager .h 二:DBManager .m 三:添加表内数据 四:获取表内数据1.获取单个 2...

  • python 连接DB2数据库

    pandas 链接DB2数据库 注意事项: 1、就是一定记得要关闭连接。2、读取数据只能一行一行读取,需要 re...

  • XamarinSQLite教程Xamarin.iOS项目中打开数

    XamarinSQLite教程Xamarin.iOS项目中打开数据库文件 以下是打开MyDocuments.db数...

  • iOS原生s

    iOS原生sqlite的使用 首先导入数据库使用到的包 #import 声明一个数据库 sqlite3 *db; ...

  • IOS DB存储之Realm.swift (一) 使用篇

    @[TOC](IOS DB存储之Realm.swift ) Swift-Realm数据库的使用详解 下载本篇博客的...

网友评论

    本文标题:(iOS)读取db数据库

    本文链接:https://www.haomeiwen.com/subject/brrlmxtx.html