OC数据存储大集合2(手把手教你全搞定)
来源:互联网 发布:c语言用while求次方 编辑:程序博客网 时间:2024/06/07 02:46
以下模型类
在LLUser.h中
#import <Foundation/Foundation.h>
@interface LLUser : NSObject
@property (nonatomic ,strong)NSString *userName;
@property (nonatomic ,strong)NSString *userAge;
@property (nonatomic ,strong)NSString *ids;
@end
在LLUser.m文件中
#import "LLUser.h"
@implementation LLUser
- (void)dealloc
{
self.userAge = nil;
self.userName = nil;
}
@end
以下是数据接口管理类
在LLDataManager.h的类中
#import <Foundation/Foundation.h>
#import "FMDatabase.h"
@class LLUser;
@interface LLDataManager : NSObject
@property (nonatomic ,strong)FMDatabase *fmdb;
+ (LLDataManager *)defaultDataBase;
- (void)insertUser:(LLUser *)user;
- (NSMutableArray *)selectData;
- (void)deleteData:(LLUser *)item;
- (void)updateData:(LLUser *)item;
@end
在LLDataManager.m的类中
#import "LLDataManager.h"
#import "FMDatabase.h"
#import "LLUser.h"
static LLDataManager *dataManager =nil;
@implementation LLDataManager
+ (LLDataManager *)defaultDataBase
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
dataManager = [[LLDataManageralloc] init];
});
returndataManager;
}
- (id)init
{
if (self == [superinit])
{
[self createData];
}
return self;
}
//创建表
- (void)createData
{
NSString *path = [LLDataManagerpathWithFilePath:@"myCommunity.db"];
self.fmdb = [FMDatabasedatabaseWithPath:path];
if ([self.fmdbopen])
{
[self createTable];
}
}
- (void)createTable
{
NSString *sql =@"CREATE TABLE IF NOT EXISTS user (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,name TEXT(1024),age TEXT(1024))";
if ([self.fmdbexecuteUpdate:sql])
{
NSLog(@"seccuss");
}
else
{
NSLog(@"fail");
}
}
//验证数据是否存在
- (BOOL)isExistUser:(LLUser *)user
{
NSLog(@"%@",user.userName);
NSString *sql = [NSStringstringWithFormat:@"SELECT name FROM user WHERE name = ?"];
FMResultSet *result = [self.fmdbexecuteQuery:sql,user.userName];
while ([result next])
{
return YES;
}
return NO;
}
//增加
- (void)insertUser:(LLUser *)user
{
if ([self isExistUser:user])
{
NSLog(@"记录已经存在");
return;
}
NSString *sql = [NSStringstringWithFormat:@"INSERT INTO user(name,age) VALUES(?,?)"];
if ([self.fmdbexecuteUpdate:sql,user.userName,user.userAge])
{
NSLog(@"insert Success");
UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:@"insert User"message:@"success"delegate:selfcancelButtonTitle:@"ok"otherButtonTitles:nil,nil];
[alert show];
}
}
//删除
- (void)deleteData:(LLUser *)item
{
NSString *sql = [NSStringstringWithFormat:@"DELETE FROM user WHERE id = ?"];
if ([self.fmdbexecuteUpdate:sql,item.ids])
{
NSLog(@"delete success");
}
}
//修改
- (void)updateData:(LLUser *)item
{
NSString *sql = [NSStringstringWithFormat:@"UPDATE user SET name = ?,age = ? WHERE id = ?"];
[self.fmdbexecuteUpdate:sql,item.userName,item.userAge,item.ids];
}
+ (NSString *)pathWithFilePath:(NSString *)dataBaseName
{
NSString *path = NSHomeDirectory();
if (dataBaseName.length > 0)
{
path = [path stringByAppendingFormat:@"/tmp/%@",dataBaseName];
}
return path;
}
//查询获取数据
- (NSMutableArray *)selectData
{
NSMutableArray *array = [NSMutableArrayarrayWithCapacity:0];
NSString *sql = [NSStringstringWithFormat:@"SELECT id,name,age FROM user"];
FMResultSet *result = [self.fmdbexecuteQuery:sql];
while ([result next])
{
LLUser *item = [[LLUseralloc] init];
item.ids = [result stringForColumn:@"id"];
item.userName = [result stringForColumn:@"name"];
item.userAge = [result stringForColumn:@"age"];
[array addObject:item];
}
return array;
}
@end
注意使用的时候,记得导入依赖框架libsqlite3.dylib,在接口类中导入FMDatabase.h文件
- OC数据存储大集合2(手把手教你全搞定)
- OC数据存储大集合1(手把手教你全搞定)
- OC数据存储大集合3(手把手教你全搞定)
- 携程 | 手把手教你用大数据打造用户画像
- 手把手教你搞定虚拟机的网络设置
- 大数据挖掘:手把手教你分析头条小程序文章数据
- 大数据江湖之即席查询与分析(下篇)--手把手教你搭建即席查询与分析Demo
- 大数据江湖之即席查询与分析(下篇)--手把手教你搭建即席查询与分析Demo
- 手把手教你mysql(十四)存储过程
- 手把手教你开发Chrome扩展三:关于本地存储数据
- 手把手教你开发Chrome扩展三:关于本地存储数据
- 手把手教你开发Chrome扩展三:关于本地存储数据
- Python+大数据计算平台,PyODPS架构手把手教你搭建
- 手把手教你数据恢复编程(一)基础知识篇
- 手把手教你数据恢复编程(二)基础知识篇
- 手把手教你使用Git(最全的Git教程)
- 手把手教你破解全网视频vip权限
- 手把手教你快速搞定京东APP设置页面布局
- NotificationManager和Notification的使用总结
- MySQL 修改参数
- 王立平--android:gravity与android:layout_gravity区别
- hdu1176——免费馅饼
- Android中Activity启动过程探究
- OC数据存储大集合2(手把手教你全搞定)
- android viewflipper和tabhost效率对比
- EditText的属性使用
- 提交时提示错误This Bundle is invalid.New apps and app updates submitted to the App Store must be built wit
- jquery操作复选框(checkbox)的12个小技巧总结
- VS插件介绍
- zoj3822 Domination 概率dp --- 2014 ACM-ICPC Asia Mudanjiang Regional Contest
- hdu 4994 前后有序Nim游戏
- Android中TextView首行缩进的问题