FMDatabase其实是一个很轻级的sqlite数据库封装库,用Object-C封装C,它主要有2个类:FMDatabase和FMResultSet

要使用它首先就要下载这个开源库,它的下载地址是:https://github.com/ccgus/fmdb

下载完成后,我们就可以开始使用它了:

它主要有这些文件
  
然后,就需要添加sqlite框架

这样,你的工程就能开始使用FMDatabase了。

下面就介绍一下它的用法:
1.首先我们需要创建一个FMDatabase实例:

+(FMDatabase*)DataBaseSigonInstance

{

//数据库初始化

NSString *homeDir =NSHomeDirectory();

//NSLog(@"%@",homeDir);

NSString *dbPath = [homeDirstringByAppendingPathComponent:@"Library/Caches/FMDatabaseDemo.db"];

FMDatabase *database = [FMDatabasedatabaseWithPath:dbPath];

return database;

}

2.接下来就是需要创建一个数据表了:

//打开数据库

FMDatabase *db = [FMDataBasePathDataBaseSigonInstance];

if (!db.open)

{

NSLog(@"fail to open database");

return;

}

db.logsErrors =YES;//开启错误日志

[db executeUpdate:@"CREATE TABLE IF NOT EXISTS studentTable(name varchar,age integer,totalScore float)"];

[dbclose];

3.添加数据:

FMDatabase *db = [FMDataBasePathDataBaseSigonInstance];

if (!db.open)

{

NSLog(@"fail to open database");

return;

}

//获得数据

student.name = ((UITextField*)[alertViewviewWithTag:TEXTFIELD_TAG]).text;

student.age = [((UITextField*)[alertViewviewWithTag:TEXTFIELD_TAG + 1]).textintValue];

student.totalScore = [((UITextField*)[alertViewviewWithTag:TEXTFIELD_TAG + 2]).textfloatValue];

db.logsErrors =YES;

[db executeUpdate:@"insert into studentTable(name,age,totalScore)values(?,?,?)",student.name,[NSNumbernumberWithInt:student.age],[NSNumbernumberWithFloat:student.totalScore]];//注意参数必须是对象

[dbclose];

4.删除数据:

FMDatabase *db = [FMDataBasePathDataBaseSigonInstance];

if (!db.open)

{

NSLog(@"fail to open!");

return;

}

db.logsErrors =YES;

NSString *delDataSqlStr =@"delete from studentTable";

[dbexecuteUpdate:delDataSqlStr];

[dbclose];

5.修改数据:

FMDatabase *db = [FMDataBasePathDataBaseSigonInstance];

if (!db.open)

{

NSLog(@"fail to open!");

return;

}

db.logsErrors =YES;

[db executeUpdate:@"update studentTable set totalScore = 100"];

[dbclose];

查询数据:

FMDatabase *db = [FMDataBasePathDataBaseSigonInstance];

if (!db.open)

{

NSLog(@"fail to open!");

return;

}

db.logsErrors =YES;

FMResultSet *rs = [dbexecuteQuery:@"select * from studentTable"];

NSMutableArray *studentArr = [[NSMutableArrayalloc]init];

while ([rsnext])

{

NSMutableDictionary *dic = [[NSMutableDictionaryalloc]init];

[dic setValue:[rsstringForColumn:@"name"]forKey:@"name"];

[dic setValue:[NSNumbernumberWithInt:[rsintForColumn:@"age"]]forKey:@"age"];

[dic setValue:[NSNumbernumberWithDouble:[rsdoubleForColumn:@"totalScore"]]forKey:@"totalScore"];

[studentArraddObject:dic];

[dicrelease];

}

for (int count = 0; count< [studentArrcount]; count++)

{

NSLog(@"sudent:%@  age:%@  totalScore:%@",[[studentArrobjectAtIndex:count]objectForKey:@"name"],[[studentArrobjectAtIndex:count]objectForKey:@"age"],[[studentArrobjectAtIndex:count]objectForKey:@"totalScore"]);

}

[studentArrrelease];

[dbclose];

上面的都是一些增删改查的用法
下面我们再来看看FMDatabase 和  FMResultSet
FMDatabase:(主要用到这两个)

- (BOOL)executeUpdate:(NSString*)sql, ...;   这个是用于执行无结果的sql语句的

- (FMResultSet *)executeQuery:(NSString*)sql, ...;  这个是用于执行有结果的sql语句的

FMResultSet:

- (BOOL)next; 结果集的下一个

- (int)columnCount; 结果集的字段个数

- (int)intForColumn:(NSString*)columnName; 获取整形字段的信息(下面的都是同理)

- (int)intForColumnIndex:(int)columnIdx;

- (long)longForColumn:(NSString*)columnName;

- (long)longForColumnIndex:(int)columnIdx;

- (longlongint)longLongIntForColumn:(NSString*)columnName;

- (longlongint)longLongIntForColumnIndex:(int)columnIdx;

- (unsignedlonglong int)unsignedLongLongIntForColumn:(NSString*)columnName;

- (unsignedlonglong int)unsignedLongLongIntForColumnIndex:(int)columnIdx;

- (BOOL)boolForColumn:(NSString*)columnName;

- (BOOL)boolForColumnIndex:(int)columnIdx;

- (double)doubleForColumn:(NSString*)columnName;

- (double)doubleForColumnIndex:(int)columnIdx;

- (NSString*)stringForColumn:(NSString*)columnName;

- (NSString*)stringForColumnIndex:(int)columnIdx;

- (NSDate*)dateForColumn:(NSString*)columnName;

- (NSDate*)dateForColumnIndex:(int)columnIdx;

- (NSData*)dataForColumn:(NSString*)columnName; 获取二进制数据(图片可以使用这个)

- (NSData*)dataForColumnIndex:(int)columnIdx;

fmdb的一些基本的用法相关推荐

  1. 李洪强iOS开发之FMDB线程安全的用法

    // //  ViewController.m //  04 - FMDB线程安全的用法 // //  Created by 李洪强 on 2017/6/6. //  Copyright © 2017 ...

  2. FMDB:中的用法介绍

    2019独角兽企业重金招聘Python工程师标准>>> FMDB:我的SQLite救星 好滴-离上次发文又给他隔了三个月,为什么咧??因为林杯我很忙,这三个月我跑去订婚.结婚.归宁外 ...

  3. 【iOS】—— FMDB的基础用法

    一.基本介绍: 1.简介: 由于iOS中原生的 SQLite API 使用时非常不方便 ,于是就出现了一系列将 SQLite API 进行封装的库,例如FMDB.PlausibleDatabase.s ...

  4. SQLite第三方框架FMDB的使用,以及使用FMDatabaseQueue保证线程安全

    2019独角兽企业重金招聘Python工程师标准>>> (1)下载地址:https://github.com/ccgus/fmdb (2)注意点 --语句可以带分号":&q ...

  5. Sqlite3数据库之第三方库FMDB学习心得

    很早之前就接触Sqlite数据库,但是之前对数据库操作未使用任何第三方库,只是实现基本的增.删.改.查功能,自己对着一本iPhone开发入门级的书籍写了一个类,基本能实现上述四个功能.最近在开发一个软 ...

  6. ios FMDB数据库添删改查应用

    本文原创,转载请注明出处! 哦吼吼,又研究了几天,把FMDB这个封装好的数据库搞定了,写了个简单的例子,基于FMDB的添删改查操作,界面很一般了,代码可能比较乱,希望不要伤了各位的眼睛.依旧是纯代码实 ...

  7. fmdb和mysql的区别_fmdb数据库

    FMDB/SQLCipher数据库加解密,迁移 sqlite应用几乎在所有的App都能看到,虽然我们的数据存储在沙盒里面,一般情况下无法拿到,但是iOS管理软件(如:iFunBox)可以读取到应用程序 ...

  8. c语言中external,static关键字用法

    static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...

  9. Pandas_transform的用法

    先来看一个实例问题. 如下销售数据中展现了三笔订单,每笔订单买了多种商品,求每种商品销售额占该笔订单总金额的比例.例如第一条数据的最终结果为:235.83 / (235.83+232.32+107.9 ...

最新文章

  1. 把Windows CA根证书安装到iPhone
  2. 漫画 | TCP,一个悲伤的故事
  3. R语言-文本挖掘 主题模型 文本分类
  4. MindCon极客周 | 第三届全新席卷而来,SIG英雄帖,做硬核玩家,夺万元大奖!
  5. 【Spark】SparkStreaming-如何使用checkpoint
  6. Tyche 2147 旅行
  7. 用 label 控制 Pod 的位置 - 每天5分钟玩转 Docker 容器技术(128)
  8. EChart:基础学习
  9. 视频教程-轻松搞定Spring全家桶(初识篇)-Java
  10. 资治通鉴-5 商鞅的得与失
  11. 地铁综合监控系统网络方案,简化工作轻松应对客流高峰
  12. 调用QQ与陌生人聊天
  13. python求三个整数最大值_Python 输入三个整数,输出最大值
  14. 【梳理】数字设计基础与应用 第1章 数字逻辑基础 1.3 逻辑代数基础 1.4 逻辑函数的表述方式
  15. You need Perl 5 安装openssl时报错,提示需要安装perl 5
  16. 图书借阅java设计报告_JAVA课程设计报告图书借阅系统.pdf
  17. 两个EXcel的关联表格进行合并详细步骤
  18. 以前写的代码感觉很有用
  19. (42)C#里使用WeifenLuo.WinFormsUI.Docking库为界面自动布局
  20. Camunda BPM工作流引擎入坑指南(一)

热门文章

  1. mmWave Radar AWR1843硬件组成认识
  2. GPL和LGPL协议
  3. 双核心三层交换机路由功能详细配置
  4. 执行命令hadoop version出现错误
  5. ifc文件转换成obj和mtl文件
  6. CSDN超简单的上传gif动图方法
  7. nagios详细解说
  8. 中国高校与研究院所计算机学科分专业点评(本贴内容仅供参考!)
  9. Python滚动条如果滚不动
  10. 基于javaweb的社区居民户籍管理系统(java+ssm+jsp+js+html+mysql)