最近在使用数据库的时候,觉得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
好了,大概就是这样,接下来要操作数据库就很简单了,在你需要的地方使用这个单例,进行你想要的增删改查