您的位置:首页 > 移动开发 > IOS开发

ios FMDB初体验之增删改查

2015-05-31 15:40 381 查看
又又好久没见了。想你们。今天写一篇关于fmdb的使用文章。在工作中,我们有时会用到数据库,所以你会需要一个好用的工具。长话短说开始进入正题。


先导入fmdb库文件。还有就是加入libsqlite3.dylib。这2个前期准备好后,我们就可以开工了。
#import "ViewController.h"
#import "FMDB.h" //导入头文件
@interface ViewController ()

@property(nonatomic,retain) FMDatabaseQueue *fmQueue;//添加一个队列属性

@end

@implementation ViewController

//你数据库的路径
-(FMDatabaseQueue *)fmQueue
{

if (_fmQueue== nil) {
NSString *dbPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/student.sqlite"];

_fmQueue = [FMDatabaseQueue databaseQueueWithPath:dbPath];

NSLog(@"%@",dbPath);
}

return _fmQueue;

}

- (void)viewDidLoad {
[super viewDidLoad];

[self createAllBtn];

//这是在一个代码块中
[self.fmQueue inDatabase:^(FMDatabase *db) {

//创建一个表
[db executeUpdate:@"create table if not exists t_student (id integer primary key autoincrement, name text not null, age integer)"];
//保持数据库开启
if (![db open]) {

return ;
}
}];

}

-(void)createAllBtn
{

UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];

btn.frame = CGRectMake(100, 50, 100, 50);
[btn setTitle:@"增加数据" forState:UIControlStateNormal];

[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(increaseAction:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];

UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeSystem];

btn1.frame = CGRectMake(100, 100, 100, 50);
[btn1 setTitle:@"删除数据" forState:UIControlStateNormal];

[btn1 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[btn1 addTarget:self action:@selector(deleteAction:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn1];

UIButton *btn2 = [UIButton buttonWithType:UIButtonTypeSystem];

btn2.frame = CGRectMake(100, 150, 100, 50);
[btn2 setTitle:@"修改数据" forState:UIControlStateNormal];

[btn2 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[btn2 addTarget:self action:@selector(modifyAction:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn2];

UIButton *btn3 = [UIButton buttonWithType:UIButtonTypeSystem];

btn3.frame = CGRectMake(100, 200, 100, 50);
[btn3 setTitle:@"查询数据" forState:UIControlStateNormal];

[btn3 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[btn3 addTarget:self action:@selector(searchAction:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn3];

}

-(void)increaseAction:(UIButton *)btn
{

NSLog(@"增加数据");

[self.fmQueue inDatabase:^(FMDatabase *db) {

for (int i = 0; i<100; i++) {

NSString *name = [NSString stringWithFormat:@"james"];

int age = 10;

[db executeUpdate:@"insert into t_student (name,age) values (?,?)",name,[NSNumber numberWithInt:age]];

}

}];

}

-(void)deleteAction:(UIButton *)btn
{

NSLog(@"删除数据");

[self.fmQueue inDatabase:^(FMDatabase *db) {

NSString *name = [NSString stringWithFormat:@"james"];

//注意下这样是不能删除指定数据的,一定要是字符串nsstring类型
//[db executeUpdate:@"delete from t_student where name = '%@'",name];
//也就是这样
NSString *sql = [NSString stringWithFormat:@"delete from t_student where name = '%@'",name];
[db executeUpdate:sql];

}];

}

-(void)modifyAction:(UIButton *)btn
{

NSLog(@"修改数据");

[self.fmQueue inDatabase:^(FMDatabase *db) {
NSString *name = [NSString stringWithFormat:@"wq"];

NSString *set = [NSString stringWithFormat:@"UPDATE t_student SET name = '%@'",name];
[db executeUpdate:set];

}];

}

-(void)searchAction:(UIButton *)btn
{

NSLog(@"查询数据");

[self.fmQueue inDatabase:^(FMDatabase *db) {

NSString *sql = [NSString stringWithFormat:@"SELECT *from t_student"];
FMResultSet *set = [db executeQuery:sql];

while ([set next])
{
int stuId = [set intForColumn:@"id"];
NSString *name = [set stringForColumn:@"name"];
int age = [set intForColumn:@"age"];

NSLog(@"stuId = %d, name = %@, age = %d", stuId, name, age);

//这里的textview用于显示查询到的数据
UITextView *text = [[UITextView alloc]init];
text.frame = CGRectMake(50, 300, 300, 200);
text.backgroundColor = [UIColor grayColor];

[text setText:name];
[self.view addSubview:text];

}

}];

}

@end
没错就是这样,很简单,大家可以拉到工程中运行下。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息