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];
}