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];
}
_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];
}
相关文章推荐
- viewpager增加滑动属性
- iOS在Xcode中,文件名后小方框中的A(M或C)代表的意思
- nginx配置优化
- LeetCode 033 Search in Rotated Sorted Array
- DOM操作-event触发顺序
- C语言undefined behaviour未定义行为
- (原)Linux下安装tomcat
- swift中Range的使用书名
- 【学习笔记】自定义关于wchar_t*的相关函数
- 微信开放平台开发(2) 微信登录
- 【Educational Codeforces Round 3 C】【贪心 排序】Load Balancing 最小操作步数使得数字之差尽可能小
- OC_08_03 通知
- Android之自定义ImageView圆形图片
- C,C++宏中#与##的讲解
- JSP+Ajax站点开发小知识
- jQuery,自定义滚动条
- libevent使用
- iOS,UITableView详细介绍之基本使用(一)
- linux笔记
- 67、STP简介