iOS:第三方数据库文件FMDB的使用
第三方数据库FMDB
FMDatabase:对象就代表一个单独的SQLite数据库用来执行SQL语句
FMResultSet:使用FMDatabase执行查询后的结果集
- (BOOL)next;
-{type}ForColumnIndex:(int)columnIdx
执行SQL语句:
self.db = [FMDatabase databaseWithPath:fileName]; //创建数据库
[self.db open];//打开数据库
[self.db close]; //关闭数据库
//对数据库进行插入、修改的操作
[self.db executeUpdate:@“CREATE TABLE IF NOT EXISTS t_student (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name TEXT,age INTEGER)”];
[self.db executeUpdate:@"INSERT INTO t_student(name , age) VALUES(?, ?);", @"xuneng", @(10)];
[self.db executeUptate:@"update t_student set name = 'lisi' where age = @(10)"];
<2>查询:FMResultSet类(数据取出完全后,不需要再去关闭结果集,当新的结果集产生,或者其数据库关闭时,会自动关闭。)
// 1.查询
FMResultSet *set = [self.db executeQuery:@"SELECT * FROM t_student;"]; //返回结果集
// 2.取出数据
while ([set next])
{
// 取出姓名
NSString *name = [set stringForColumnIndex:1];
// 取出年龄
int age = [set intForColumnIndex:2];
NSString *name = [set stringForColumn:@"name"];
int age = [set intForColumn:@"age"];
NSLog(@"name = %@, age = %d", name, age);
}
创建数据库并进行增删改查的操作举例如下:
1、首先导入sqlite本地数据库和第三方数据库FMDB



2、在UIViewController类中对数据库表进行增删该查操作如下:
《1》数据库路径
NSArray *dics = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *dbPath = [[dics lastObject] stringByAppendingPathComponent:@"user.db"];
《2》 创建数据库
self.db = [FMDatabase databaseWithPath:dbPath];
《3》打开数据库
if(![self.db open])
{
return; //打开数据库失败
}
《4》创建数据库表
if(![self.db executeUpdate:@"create table if not exists user (ID integer primary key autoincrement,name text,password text)"])
{
return; //创建数据库表失败
}
《5》插入数据
if(![self.db executeUpdate:@"insert into user (name,password) values('admin','123456')"])
{
return; //插入数据失败
}
《6》修改数据
if(![self.db executeUpdate:@"update user set name = 'zhangsan' where ID = 2"])
{
return; //修改数据失败
}
《7》获取结果集
FMResultSet *resultSet = [self.db executeQuery:@"select * from user"];
《8》遍历结果集,取出数据
while ([resultSet next])
{
int ID = [resultSet intForColumnIndex:0];
NSString *name = [resultSet stringForColumnIndex:1];
NSString *password = [resultSet stringForColumnIndex:2];
NSLog(@"ID:%d,name:%@,password:%@",ID,name,password);
}
《8》//关闭数据库
[self.db close];
演示结果如下:
-- ::38.640 第三方数据库FMDB[:] ID:,name:admin,password:
-- ::38.641 第三方数据库FMDB[:] ID:,name:zhangsan,password:
-- ::38.641 第三方数据库FMDB[:] ID:,name:admin,password:
-- ::38.641 第三方数据库FMDB[:] ID:,name:admin,password:
-- ::38.641 第三方数据库FMDB[:] ID:,name:admin,password:
iOS:第三方数据库文件FMDB的使用的更多相关文章
- iOS开发数据库篇—FMDB简单介绍
iOS开发数据库篇—FMDB简单介绍 一.简单说明 1.什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API 2.FMDB的优点 使用起来 ...
- iOS开发数据库篇—FMDB数据库队列
iOS开发数据库篇—FMDB数据库队列 一.代码示例 1.需要先导入FMDB框架和头文件,由于该框架依赖于libsqlite库,所以还应该导入该库. 2.代码如下: // // YYViewContr ...
- IOS第三方数据库--FMDB
iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepers ...
- IOS第三方数据库--FMDB 分类: ios技术 2015-03-01 09:38 57人阅读 评论(0) 收藏
iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepers ...
- iOS 把数据库文件打包到mainbundle中,查找不到路径的解决的方法;以及在删除bundle中文件的可行性
在开发中有时我们须要把数据库文件打包到我们的项目中.一般我们都是在外部用工具生成数据库文件,然后拉入项目中.可是我们在程序中查找改文件时.返回的路径总是nil 解决的方法: 原因我们拉入其它资源文件( ...
- iOS开发数据库-FMDB
前言 FMDB是以OC的方式封装了SQLite的C语言API,使用起来更加面向对象,省去了很多麻烦.冗余的C语言代码:对比苹果自带的Core Data框架,更加轻量级和灵活:提供了多线程安全的数据库操 ...
- QF——iOS中的数据库操作:SQLite数据库,第三方封装库FMDB,CoreData
SQLite数据库: SQLite是轻量级的数据库,适合应用在移动设备和小型设备上,它的优点是轻量,可移植性强.但它的缺点是它的API是用C写的,不是面向对象的.整体来说,操作起来比较麻烦.所以,一般 ...
- IOS学习笔记28—SQLite3第三方库之FMDB
本文转载至 http://blog.csdn.net/happyrabbit456/article/details/11609451 SQLite是一种小型的轻量级的关系型数据库,在移动设备上使用是非 ...
- IOS数据存储之FMDB数据库
前言: 最近几天一直在折腾数据库存储,之前文章(http://www.cnblogs.com/whoislcj/p/5485959.html)介绍了Sqlite 数据库,SQLite是一种小型的轻量级 ...
随机推荐
- DOM的查找与操作
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- Q:WCHAR转化为CHAR
A: int len =WideCharToMultiByte(CP_ACP,0,此处是WCHAR的参数,-1,NULL,0,NULL,NULL); WideCharToMultiByte(CP_AC ...
- lr场景运行报错的解决方法
- CountDownLatch 使用方法
CountDownLatch 使用方法 import java.util.concurrent.CountDownLatch; public class TestCountDownLatch { pu ...
- 那些年遇到的php之坑
1. php指针没有重置 $arr = array( array('aaaaaaaa'), array('bbbbbbb') ); unset($arr[0]); unset($arr[1]); so ...
- Java多线程编程——volatile关键字
(本篇主要内容摘自<Java多线程编程核心技术>) volatile关键字的主要作用是保证线程之间变量的可见性. package com.func; public class RunThr ...
- TCP/IP——IP网络协议简记
IP提供不可靠.无连接的数据报传送服务 不可靠:不保证IP数据报能成功到达目的地,当发生错误时,IP的做法是丢弃这个数据报,然后发送ICMP消息报给信息源. 无连接:IP不维护任何关于后续数据报的状态 ...
- linux——(4)磁盘与文件系统管理
概念一:linux-ext2文件系统 ext2在分区的时候会分成多个组块(block group)和一个启动扇区(boot sector),每一个组块内又有superblock.File system ...
- 51nod1437 迈克步 单调栈
考虑一个点作为最小值的区间$[L[i], R[i]]$ 那么这个区间的所有含$i$的子区间最小值都是$v[i]$ 因此,用单调栈求出$L[i], R[i]$后,对$R[i] - L[i] + 1$这个 ...
- HDU 5640 King's Cake GCD
King's Cake 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5640 Description It is the king's birthd ...