您的位置:首页 > 其它

FMDB 用法

2015-12-23 16:58 375 查看
1.下载FMBD类库(导入到iOS 项目中的时候会报错

_sqlite3_bind_blob", referenced from:
这是需要 导入一个 libsqlite3.0.dblib 系统类库 在
Link Binary WithLibraries )
2.创建文件

#import <Foundation/Foundation.h>

#import "FMDB.h"

@class LVModal;
@interface LVFmdbTool :
NSObject

// 插入模型数据
+ (BOOL)insertModal:(LVModal *)modal;

/** 查询数据,如果
传空 默认会查询表中所有数据 */
+ (NSArray *)queryData:(NSString *)querySql;

/** 删除数据,如果
传空 默认会删除表中所有数据 */
+ (BOOL)deleteData:(NSString *)deleteSql;

/** 修改数据 */
+ (BOOL)modifyData:(NSString *)modifySql;

@end

//****************** 封装工具类 *****************************

#import "LVFmdbTool.h"

#import "LVModal.h"

#define LVSQLITE_NAME @"modals.sqlite"

@implementation LVFmdbTool

static FMDatabase *_fmdb;

+ (void)initialize {

//
执行打开数据库和创建表操作

NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES)
lastObject] stringByAppendingPathComponent:LVSQLITE_NAME];

_fmdb = [FMDatabase
databaseWithPath:filePath];

[_fmdb
open];

#warning 必须先打开数据库才能创建表。。。否则提示数据库没有打开

[_fmdb
executeUpdate:@"CREATE TABLE IF NOT EXISTS t_modals(id INTEGER PRIMARY KEY, name TEXT NOT NULL, age INTEGER NOT NULL, ID_No INTEGER NOT NULL);"];
}

+ (BOOL)insertModal:(LVModal *)modal {

NSString *insertSql = [NSString
stringWithFormat:@"INSERT INTO t_modals(name, age, ID_No) VALUES ('%@', '%zd', '%zd');", modal.name,
modal.age, modal.ID_No];

return [_fmdb
executeUpdate:insertSql];
}

+ (NSArray *)queryData:(NSString *)querySql {

if (querySql == nil) {

querySql = @"SELECT * FROM t_modals;";
}

NSMutableArray *arrM = [NSMutableArray
array];

FMResultSet *set = [_fmdb
executeQuery:querySql];

while ([set next]) {

NSString *name = [set
stringForColumn:@"name"];

NSString *age = [set
stringForColumn:@"age"];

NSString *ID_No = [set
stringForColumn:@"ID_No"];

LVModal *modal = [LVModal
modalWith:name age:age.intValue
no:ID_No.intValue];
[arrM
addObject:modal];
}

return arrM;
}

+ (BOOL)deleteData:(NSString *)deleteSql {

if (deleteSql == nil) {

deleteSql = @"DELETE FROM t_modals";
}

return [_fmdb
executeUpdate:deleteSql];

}

+ (BOOL)modifyData:(NSString *)modifySql {

if (modifySql == nil) {

modifySql = @"UPDATE t_modals SET ID_No = '789789' WHERE name = 'lisi'";
}

return [_fmdb
executeUpdate:modifySql];
}

//******************* model 类 ****************************

#import <Foundation/Foundation.h>

@interface LVModal :
NSObject

@property (nonatomic,
copy) NSString *name;

@property (nonatomic,
assign) NSInteger age;

@property (nonatomic,
assign) NSInteger ID_No;

+ (instancetype)modalWith:(NSString *)name age:(NSInteger)age no:(NSInteger)ID_No;

@end

#import "LVModal.h"

@implementation LVModal

+ (instancetype)modalWith:(NSString *)name age:(NSInteger)age no:(NSInteger)ID_No
{

LVModal *modal = [[LVModal
alloc] init];
modal.name = name;
modal.age = age;
modal.ID_No = ID_No;

return modal;
}

@end

//******************* 调用方法 ****************************

- (IBAction)queryBtnDidClick:(UIButton *)sender {

[self.modalsArrM
removeAllObjects];

NSArray *modals = [LVFmdbTool
queryData:nil];

[self.modalsArrM
addObjectsFromArray:modals];

[self.tableView
reloadData];

}
- (IBAction)deleteBtnDidClick:(UIButton *)sender {

NSString *delesql =
@"DELETE FROM t_modals WHERE name = 'zhangsan'";
[LVFmdbTool
deleteData:delesql];

#warning 删除数据后执行一次查询工作刷新表格

[self
queryBtnDidClick:nil];
}

- (IBAction)updateBtnDidClick:(UIButton *)sender {

[LVFmdbTool
modifyData:nil];

#warning 删除数据后执行一次查询工作刷新表格

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