数据库工具类 (通过外面传入一个数值和表中字段值进行比较)
2016-03-29 23:19
513 查看
#import <Foundation/Foundation.h>
@interface QJFMDBTool : NSObject
/**
* 根据外面传入一个数值和表中字段值进行比较
*
* @param params 比较的参数
*/
+ (NSArray *)compareWithParams:(NSString *)str;
/**
* 存储数据到沙盒中
*
* @param goods
需要存储的数据
*/
+ (void)saveGoods:(NSArray *)goods;
+ (NSArray *)delGoods:(NSString *)str;
@end
#import "QJFMDBTool.h"
#import "FMDB.h"
@implementation
QJFMDBTool
static FMDatabase *_db;
+ (void)initialize
{
// 1.打开数据库
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"goods.sqlite"];
_db = [FMDatabase databaseWithPath:path];
[_db open];
// 2.创表
[_db executeUpdate:@"CREATE TABLE IF NOT EXISTS t_goods (goodIdtext PRIMARY
KEY, good blob NOT NULL);"];
}
+ (NSArray *)compareWithParams:(NSString *)str
{
// SELECT
列名称 FROM 表名称 WHERE列
运算符
值
NSString *sql = [NSStringstringWithFormat:@"SELECT
* FROM t_goods WHERE goodId = %@ ;", str];
//
执行SQL
FMResultSet *set = [_db executeQuery:sql];
NSMutableArray *datas = [NSMutableArray array];
while (set.next) {
NSData *goodsData = [set objectForColumnName:@"good"];
NSDictionary *goodD = [NSKeyedUnarchiver unarchiveObjectWithData:goodsData];
[datas addObject:goodD];
}
return
datas;
}
+ (void)saveGoods:(NSArray *)goods
{
//
要将一个对象存进数据库的blob字段,最好先转为NSData
//
一个对象要遵守NSCoding协议,实现协议中相应的方法,才能转成NSData
for (NSDictionary *good in goods) {
// NSDictionary --> NSData
NSData *goodsData = [NSKeyedArchiver archivedDataWithRootObject:good];
[_db executeUpdateWithFormat:@"INSERT INTO t_goods(goodId, good) VALUES (%@, %@);", good[@"goodId"],goodsData];
}
}
+ (NSArray *)delGoods:(NSString *)str
{
// DELETE FROM
表名称 WHERE 列名称 =
值
NSString *sql = [NSString
stringWithFormat:@"DELETE FROM t_goods WHERE goodId = %@ ;", str];
//
执行SQL
FMResultSet *set = [_db executeQuery:sql];
NSMutableArray *datas = [NSMutableArray array];
while (set.next) {
NSData *goodsData = [set objectForColumnName:@"good"];
NSDictionary *goodD = [NSKeyedUnarchiver unarchiveObjectWithData:goodsData];
[datas addObject:goodD];
}
return
datas;
}
@interface QJFMDBTool : NSObject
/**
* 根据外面传入一个数值和表中字段值进行比较
*
* @param params 比较的参数
*/
+ (NSArray *)compareWithParams:(NSString *)str;
/**
* 存储数据到沙盒中
*
* @param goods
需要存储的数据
*/
+ (void)saveGoods:(NSArray *)goods;
+ (NSArray *)delGoods:(NSString *)str;
@end
#import "QJFMDBTool.h"
#import "FMDB.h"
@implementation
QJFMDBTool
static FMDatabase *_db;
+ (void)initialize
{
// 1.打开数据库
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"goods.sqlite"];
_db = [FMDatabase databaseWithPath:path];
[_db open];
// 2.创表
[_db executeUpdate:@"CREATE TABLE IF NOT EXISTS t_goods (goodIdtext PRIMARY
KEY, good blob NOT NULL);"];
}
+ (NSArray *)compareWithParams:(NSString *)str
{
// SELECT
列名称 FROM 表名称 WHERE列
运算符
值
NSString *sql = [NSStringstringWithFormat:@"SELECT
* FROM t_goods WHERE goodId = %@ ;", str];
//
执行SQL
FMResultSet *set = [_db executeQuery:sql];
NSMutableArray *datas = [NSMutableArray array];
while (set.next) {
NSData *goodsData = [set objectForColumnName:@"good"];
NSDictionary *goodD = [NSKeyedUnarchiver unarchiveObjectWithData:goodsData];
[datas addObject:goodD];
}
return
datas;
}
+ (void)saveGoods:(NSArray *)goods
{
//
要将一个对象存进数据库的blob字段,最好先转为NSData
//
一个对象要遵守NSCoding协议,实现协议中相应的方法,才能转成NSData
for (NSDictionary *good in goods) {
// NSDictionary --> NSData
NSData *goodsData = [NSKeyedArchiver archivedDataWithRootObject:good];
[_db executeUpdateWithFormat:@"INSERT INTO t_goods(goodId, good) VALUES (%@, %@);", good[@"goodId"],goodsData];
}
}
+ (NSArray *)delGoods:(NSString *)str
{
// DELETE FROM
表名称 WHERE 列名称 =
值
NSString *sql = [NSString
stringWithFormat:@"DELETE FROM t_goods WHERE goodId = %@ ;", str];
//
执行SQL
FMResultSet *set = [_db executeQuery:sql];
NSMutableArray *datas = [NSMutableArray array];
while (set.next) {
NSData *goodsData = [set objectForColumnName:@"good"];
NSDictionary *goodD = [NSKeyedUnarchiver unarchiveObjectWithData:goodsData];
[datas addObject:goodD];
}
return
datas;
}
相关文章推荐
- Oracle学习(六)----子查询
- Oracle SQL 经典查询练手第二篇
- redis初识
- 性别字段在数据库中存储数字,查询时,如何查询出数字对应的男和女?(case when的应用)
- Oracle 常见的SQL调优
- redis dump.rdb appendonly.aof 文件路径修改
- Redis数据库入门
- node.js 连接数据库
- asp.net用npoi读取ecxel数据到oracle表
- 安装mysql 5.7.11,初始登录出现:mysql Access denied for user 'root'@'localhost' (using password: YES)
- mysql别名
- mysql绿色版安装使用配置教程?
- 数据库DBO代码
- 验证ORACLE不同字符集中汉字占用的byte及NLS_LENGTH_SEMANTICS参数的影响
- 数据库学习
- Redis集群监控工具之RedisLive
- oracle中的char、varchar、varchar2、nvarchar、nvarchar2区别
- 数据库事务解析
- IOS操作数据库总结
- mysql字符集