一 定义:
/*
1.FMDB 是 iOS 平台下的 SQLite 数据库 只不过它是以 OC 方式封装了 C 语言的 sqlite 语句
2.优点:①使用起来更加面对对象 ,省去很多麻烦
②对比苹果自带的数据管理工具 core Data 框架 更加的轻便 灵活 支持多平台
③提供了 多线程的安全数据库操作方式,能有效地防止数据混乱
3.FMDB 里面的类:
①FMDBDataBase 创建一个单独的数据库对象 创建数据库对象的时候使用
②FMDBResultSet 用来存储 SQL 语句执行后的结果的集(我们执行 SQL 语句后的结构就用这个类对象去取)
③FMDBDatabaseQuese 用于多线程中执行查找,删除,修改,它提供了多线程的安全
*/
也算是第三方 我们需要 导入文件 然后导入 FMDB 的头文件
还是用 sb 建一个界面和 不过 不需要textfiled 我们用代码 增删改查
#import "ViewController.h"
#import "FMDatabase.h"
#import "FMResultSet.h"
#import "FMDatabaseAdditions.h"
#import "FMDatabaseQueue.h"
#import "FMDatabasePool.h"
@interface ViewController ()
@property (nonatomic,retain)FMDatabase *db;
@end
@implementation ViewController
- (void)dealloc
{
[_db release];
[super dealloc];
}
- (void)viewDidLoad {
[super viewDidLoad];
#pragma mark ---------创建数据库对象-------
//获取 document 路径
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject];
// 拼接路径
NSString *copyPath = [documentPath stringByAppendingPathComponent:@"person.sqltite"];
NSLog(@"%@",copyPath);
//创建数据库对象 这个只是创建了 数据库对象 但是没有生成文件
// 里面的参数 是 数据库放置的路径
FMDatabase *db = [FMDatabase databaseWithPath:copyPath];
// NSLog(@"%@",db);
//打开数据库的时候 才是真正创建了文件
BOOL isSuccess = [db open];
if (isSuccess) {
NSLog(@"创建成功");
//创建数据库表格
// 注: executeUpdate :除了查询外,其他属于更新,删除,插入,创建表格都是使用这个
BOOL isSuccess = [db executeUpdate:@"Create table if not exists Person (id integer primary key autoincrement,name text not null,age integer,money integer not null) "];
if (isSuccess) {
NSLog(@"建表成功");
}
}
//不用修改上面的的 db 可以直接在下面加一句话 这样他们指定的就是同一个空间 给属性赋值
self.db = db;
// Do any additional setup after loading the view, typically from a nib.
}
#pragma mark---点击 button 事件
//增加 insert
- (IBAction)insert:(UIButton *)sender {
//参数是 SQL 语句
// ? 参数占位符 参数必须是对象类型
BOOL isSuccess = [self.db executeUpdate:@"insert into Person (name,money)values (?,?)",@"Nyx",@500000];
if (isSuccess) {
NSLog(@"Nyx 信息已录入");
}else{
NSLog(@"非法信息不予接受");
}
}
//删除 delete
- (IBAction)delete:(UIButton *)sender {
//清除全部信息
// BOOL isSuccess = [self.db executeUpdate:@"delete from Person"];
//根据条件删除
BOOL isSuccess = [ self.db executeUpdate:@"delete from Person where name = ?",@"Anne" ];
if (isSuccess) {
NSLog(@"清理成功");
}else{
NSLog(@"delete没有完成");
}
}
//修改update
- (IBAction)update:(UIButton *)sender {
// BOOL isSuccess = [self.db executeUpdate:@"update Person set money = ? where name = ?",@45612,@"Nyx" ];
// 还可以写成下面的
BOOL isSuccess = [self.db executeUpdate:@"update Person set money = 54651 where name = 'Nyx'" ];
//SQL 语句中字符串使用单引号''
if (isSuccess) {
NSLog(@"有钱啦");
}else {
NSLog(@"骗子");
}
}
//查询 select
- (IBAction)select:(UIButton *)sender {
// ①查找全部的信息
FMResultSet *set = [self.db executeQuery:@"select *from Person"];
// ② 根据条件查找
// FMResultSet *set = [self.db executeQuery:@"select *from Person where name = ?",@"Anne"];
//循环的条件 下一行有数据可查询
while ([set next]) {
//取出每一行,每一列对应的数据
NSInteger _id = [set intForColumn:@"id"];
NSString *name = [set stringForColumn:@"name"];
NSInteger money = [set intForColumn:@"money"];
NSLog(@"id:%ld name:%@ money :%ld",_id,name,money);
}
// NSLog(@"select");
}
总结:
1.FMDB 是一个非常方便的数据库 多研究
2.executeUpdate :除了查询外,其他属于更新,删除,插入,创建表格都是使用这个