iOS使用fmdb创建单例

最近在使用数据库的时候,觉得fmdb还是比原生的sqlite好用一点,而在用fmdb的时候,使用单例用起来就更爽了。

话不多说,直接贴代码

创建一个DataBaseHelper

.这是h文件

#import <Foundation/Foundation.h>

#import "FMDatabase.h"

@class TPUserinfo;


@interface TPDataBaseHelper : NSObject


@property (nonatomic,strong)FMDatabase *db;   //FMDatabase对象就代表一个单独的SQLite数据库,用来执行SQL语句


+(TPDataBaseHelper *)sharedDatabaseHelper;  //创建单例的方法


-(void)insertUserinfo:(TPUserinfo *)userinfo; //插入数据

-(void)updateUserinfo:(TPUserinfo *)userinfo newUserinfo:(TPUserinfo *)newUserinfo;   //修改数据

-(NSArray *)queryUserinfo;   //查询数据


@end






#import "TPDataBaseHelper.h"
#import "TPUserinfo.h"

static TPDataBaseHelper *helper = nil;


@implementation TPDataBaseHelper

+(TPDataBaseHelper *)sharedDatabaseHelper
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
helper = [[TPDataBaseHelper alloc]init];
[helper createDataBase];
[helper createTable];
});
return helper;
}

/*

下面都是一些数据库操作的基本语法,都是套路

*/


//创建数据库
-(void)createDataBase
{
NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)firstObject];  //获取Docment文件路径
NSString *filPath = [doc stringByAppendingPathComponent:@"userinfo.sqlite"]; /数据库文件的路径+名字
self.db = [FMDatabase databaseWithPath:filPath]; //创建数据库
}

//创建表
-(void)createTable
{
if ([self.db open]) {
BOOL result = [self.db executeUpdate:@"CREATE TABLE IF NOT EXISTS t_userinfo (id integer PRIMARY KEY AUTOINCREMENT, users text NOT NULL, password text NOT NULL);"];
if (result) {
NSLog(@"创建成功");
}else{
NSLog(@"创建失败");
}
[self.db close];
}else{
NSLog(@"数据库打开失败");
}
}

//插入操作
-(void)insertUserinfo:(TPUserinfo *)userinfo
{
if ([self.db open]) {
BOOL result = [self.db executeUpdate:@"INSERT INTO t_userinfo (users, password) VALUES (?,?);",userinfo.users,userinfo.password];
if (result) {
NSLog(@"插入成功");
}else{
NSLog(@"插入失败");
}
[self.db close];
}else{
NSLog(@"打开数据库失败");
}
}

//修改数据
-(void)updateUserinfo:(TPUserinfo *)userinfo newUserinfo:(TPUserinfo *)newUserinfo
{
if ([self.db open]) {
BOOL result = [self.db executeUpdate:@"UPDATE t_userinfo SET users = ?,password = ? WHERE password = ?",
userinfo.users,newUserinfo.password,userinfo.password];   //修改数据,前面这个password是新数据,后面这个password是旧数据
if (result) {
NSLog(@"修改成功");
}else{
NSLog(@"修改失败");
}
[self.db close];
}else{
NSLog(@"数据库打开失败");
}
}

//查询
-(NSArray *)queryUserinfo
{
NSMutableArray *arr = [NSMutableArray array];
if ([self.db open]) {
FMResultSet *set = [self.db executeQuery:@"SELECT * FROM t_userinifo"];
while ([set next]) {
NSString *users = [set stringForColumn:@"users"];
NSString *password = [set stringForColumn:@"password"];
TPUserinfo *userinfo = [[TPUserinfo alloc]initWithUsers:users password:password];
[arr addObject:userinfo];
}
}
return arr;
}

@end


好了,大概就是这样,接下来要操作数据库就很简单了,在你需要的地方使用这个单例,进行你想要的增删改查



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值