FMDB 用法

来源:互联网 发布:hello world程序python 编辑:程序博客网 时间:2024/05/20 02:53


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 = [FMDatabasedatabaseWithPath:filePath];

    

    [_fmdbopen];

    

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

    [_fmdbexecuteUpdate:@"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 = [NSStringstringWithFormat:@"INSERT INTO t_modals(name, age, ID_No) VALUES ('%@', '%zd', '%zd');", modal.name, modal.age, modal.ID_No];

   return [_fmdbexecuteUpdate:insertSql];

}


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

    

   if (querySql == nil) {

        querySql = @"SELECT * FROM t_modals;";

    }

    

    NSMutableArray *arrM = [NSMutableArrayarray];

   FMResultSet *set = [_fmdbexecuteQuery:querySql];

    

   while ([set next]) {

        

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

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

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

        

       LVModal *modal = [LVModalmodalWith:name age:age.intValueno:ID_No.intValue];

        [arrMaddObject:modal];

    }

   return arrM;

}


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

    

   if (deleteSql == nil) {

        deleteSql = @"DELETE FROM t_modals";

    }

    

   return [_fmdbexecuteUpdate:deleteSql];


}


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

    

   if (modifySql == nil) {

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

    }

   return [_fmdbexecuteUpdate: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 = [[LVModalalloc] init];

    modal.name = name;

    modal.age = age;

    modal.ID_No = ID_No;

   return modal;

}


@end


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


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

    

    [self.modalsArrMremoveAllObjects];

    

   NSArray *modals = [LVFmdbToolqueryData:nil];

    [self.modalsArrMaddObjectsFromArray:modals];

    

    [self.tableViewreloadData];

    

}

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


    NSString *delesql =@"DELETE FROM t_modals WHERE name = 'zhangsan'";

    [LVFmdbTooldeleteData:delesql];

    

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

    [selfqueryBtnDidClick:nil];

}


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

    

    [LVFmdbTool modifyData:nil];

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

    [selfqueryBtnDidClick:nil];

}





0 0
原创粉丝点击