FDMB 增删改删 查 分页 封装
下载地址 http://pan.baidu.com/s/1qWrt9W4
//
// GCB_ProductDetailDB.h
// TestDemo001
//
// Created by Waltz3D on 14-3-13.
// Copyright (c) 2014年 Waltz. All rights reserved.
// #import <Foundation/Foundation.h> @interface GCB_ProductDetailDB : NSObject
+(id)share; #pragma mark - ------------------创建表------ #pragma mark -创建表
-(void)CreateTable; #pragma mark - -----------------插入-------
#pragma mark -拼接插入sql语句
-(NSString *)BuildInsertTableName:(NSString *)tablename keyArray:(NSArray *)keyArrary valueArrary:(NSArray *)valueArrary; #pragma mark -插入数据库操作
-(int )insertTablewithSql:(NSString *)sql; #pragma mark - ------------------删除------
#pragma mark -删除数据库操作
-(void)DeleteTableName:(NSString *)tableName PID:(int)ID; #pragma mark - ------------------更新------
#pragma mark -拼接更新sql语句
-(NSString *)BuildUpdateName:(NSString *)tablename keyArray:(NSArray *)keyArrary valueArrary:(NSArray *)valueArrary PID:(int)ID; #pragma mark -更新数据库操作
-(void)UpdateTableWithSql:(NSString *)sql; #pragma mark - ------------------查询------ #pragma mark -通过ID来查询数据
-(NSArray *)SelectTableName:(NSString *)tableName PID:(int)ID; #pragma mark -通过页码来查询数据(分页)
-(NSArray *)SelectTableName:(NSString *)tableName startPage:(int)page; #pragma mark -关闭数据库
-(void)closeDB;
#pragma mark-打开数据库
-(void)OpenDB;
@end
.m文件
//
// GCB_ProductDetailDB.m
// TestDemo001
//
// Created by Waltz3D on 14-3-13.
// Copyright (c) 2014年 Waltz. All rights reserved.
// #import "GCB_ProductDetailDB.h"
#import "FMDatabase.h"
#import "FMDatabaseQueue.h"
#import "FMDatabaseAdditions.h"
#import "GCB_Product.h" #define DB_PAGESIZE 50 @interface GCB_ProductDetailDB ()
{
FMDatabase *_db;
} @end @implementation GCB_ProductDetailDB +(id)share{
static dispatch_once_t onceToken;
static GCB_ProductDetailDB *db=nil;
dispatch_once(&onceToken, ^{
db=[[GCB_ProductDetailDB alloc] init];
});
return db;
} #pragma mark -关闭数据库
-(void)closeDB{
[_db close];
} #pragma mark-打开数据库
-(void)OpenDB{
[_db close];
[_db open];
} //===================创建表=======================
#pragma mark -创建数据库
-(void)CreateTable{
NSString *docs=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
docs=[docs stringByAppendingPathComponent:@"Boee.db"];
NSLog(@"--->doc=%@",docs); _db=[FMDatabase databaseWithPath:docs];
_db=[_db retain];
[_db open]; //现货
if (![_db tableExists:@"SpotProduce"]) {
NSArray *propertys=@[
@"ParentID"//分类ID
,@"ProductName"//品名
,@"ProductNum"//款号
,@"ProductCode"//条码
,@"ProductSize"//尺寸(具体数值)
,@"ProductPrice"//价格
,@"ProductPhoto"//大图
,@"AdPhoto"//南渄美钻广告图
,@"Description"//商品描述
,@"ProductType"//产品系列 ID(下单:1,现贷:2)
,@"Weigth"//产品重量
,@"Suttle"//净金重
,@"SetModel"//镶石类型
,@"Stuff"//材质(成色)
,@"ProductColor"//产品颜色
,@"Imprint"//字印
,@"Remark"//备注
,@"JoinDate"//最后更新时间
,@"JoinIP"//最后更新IP
,@"SubIntro"//副石集合
,@"Introduce"//主石集合
]; [self BuildCreateSqlWithTable:@"SpotProduce" Propertys:propertys]; }
//下单产品
if (![_db tableExists:@"OrderProduce"]) {
NSArray *propertys=@[
@"ParentID"//分类ID
,@"ProductName"//品名
,@"ProductNum"//款号
,@"ProductPhoto"//大图
,@"Description"//商品描述
,@"ProductType"//产品系列(下单:1,现贷:2)
,@"WeigthRange"//重量区间
,@"Remark"//备注
,@"JoinDate"//最后更新时间
,@"JoinIP"//最后更新IP
,@"DiamondIntr" ];
[self BuildCreateSqlWithTable:@"OrderProduce" Propertys:propertys];
} //分类
if (![_db tableExists:@"ProduceCategory"]) {
NSArray *propertys=@[
@"ID",
@"ParentID",
@"CatName",
@"CatPhoto",
@"Language" ];
[self BuildCreateSqlWithTable:@"ProduceCategory" Propertys:propertys];
} //南非美钻
if (![_db tableExists:@"SouthDiamond"]) {
NSArray *propertys=@[
@"Attr1",
@"Attr2",
@"AttrDescript",
@"AttrName",
@"AttrPhoto",
@"Id",
@"NodePath",
@"ParentId"
];
[self BuildCreateSqlWithTable:@"SouthDiamond" Propertys:propertys];
}
} #pragma mark -创建表
-( void)BuildCreateSqlWithTable:(NSString *)tableName Propertys:(NSArray *)propertys{
NSMutableString *sql=[NSMutableString string];
[sql appendFormat:@"CREATE TABLE %@ (PID INTEGER PRIMARY KEY AUTOINCREMENT,",tableName];
for (int i=0; i<propertys.count; i++) {
if (i==propertys.count-1) {
[sql appendFormat:@"%@ text)",propertys[i]];
}
else [sql appendFormat:@"%@ text,",propertys[i]];
}
BOOL flag= [_db executeUpdate:sql ]; if (flag) NSLog(@"create table %@ sucess",tableName);
else NSLog(@"create table %@ failed",tableName); } //===================删除=======================
#pragma mark -删除sql操作
//ID 等于0 删除所有表
-(void)DeleteTableName:(NSString *)tableName PID:(int)ID{
if(ID==0){
NSString *sql=[NSString stringWithFormat:@"DELETE FROM %@",tableName];
[_db executeUpdate:sql];
}
else{
NSString *sql=[NSString stringWithFormat:@"DELETE FROM %@ WHERE PID =%zi",tableName,ID];
[_db executeUpdate:sql];
}
if ([_db hadError])
{
NSLog(@"DELETE FROM %@ ERROR %d: %@",tableName, [_db lastErrorCode], [_db lastErrorMessage]);
}
} //===================查询=======================
#pragma mark -查询操作 -(NSArray *)SelectTableName:(NSString *)tableName PID:(int)ID{ NSMutableArray *temp=[NSMutableArray array];
FMResultSet *rs=nil;
if (ID==0) { NSString *sql=[NSString stringWithFormat:@"SELECT * FROM %@ ORDER BY PID DESC",tableName];
rs=[_db executeQuery:sql];
}
else{
NSString *sql=[NSString stringWithFormat:@"SELECT * FROM %@ WHERE PID = %zi",tableName,ID];
rs=[_db executeQuery:sql];
}
while ([rs next]){
GCB_Product *product= [GCB_Product ProductWithResultSet:rs];
[temp addObject:product]; }
return temp;
} -(NSArray *)SelectTableName:(NSString *)tableName startPage:(int)page{ NSMutableArray *temp=[NSMutableArray array];
NSString *sql=[NSString stringWithFormat:@"SELECT * FROM %@ WHERE PID>=%zi AND PID<=%zi ORDER BY PID DESC",tableName,(page-1)*DB_PAGESIZE+1,page*DB_PAGESIZE];
FMResultSet *rs=[_db executeQuery:sql]; while ([rs next]){ if ([tableName isEqualToString:@"OrderProduce"]) {
GCB_Product *product= [GCB_Product ProductWithResultSet:rs];
[temp addObject:product];
}
}
return temp;
} //===================插入=======================
#pragma mark -插入数据库操作 -(int)insertTablewithSql:(NSString *)sql{
// NSLog(@"%@",sql);
[_db executeUpdate:sql];
if ([_db hadError])
{
NSLog(@"insertWith ERROR %d: %@", [_db lastErrorCode], [_db lastErrorMessage]);
return (- 1);
}
return [_db lastInsertRowId];
}
#pragma mark -拼接插入sql语句 -(NSString *)BuildInsertTableName:(NSString *)tablename keyArray:(NSArray *)keyArrary valueArrary:(NSArray *)valueArrary {
NSMutableString *appendStr=[NSMutableString string];
NSMutableString *paramStr=[NSMutableString string];
[appendStr appendFormat:@"INSERT INTO %@(",tablename]; for (int i=0; i<keyArrary.count; i++) {
NSString *value=valueArrary[i];
if (i==keyArrary.count-1) {
[appendStr appendFormat:@"%@)VALUES (",keyArrary[i]];
[paramStr appendFormat:@"'%@')",value];
}
else{
[appendStr appendFormat:@"%@,",keyArrary[i]];
[paramStr appendFormat:@"'%@',",value];
}
}
[appendStr appendString:paramStr];
return appendStr; } //===================更新========================
#pragma mark -更新数据库操作
-(void)UpdateTableWithSql:(NSString *)sql{
NSLog(@"%@",sql);
[_db executeUpdate:sql];
if ([_db hadError])
{
NSLog(@"UpdateWith ERROR %d: %@", [_db lastErrorCode], [_db lastErrorMessage]); }
else{
NSLog(@"更新成功");
}
} #pragma mark -拼接更新sql语句
-(NSString *)BuildUpdateName:(NSString *)tablename keyArray:(NSArray *)keyArrary valueArrary:(NSArray *)valueArrary PID:(int)ID{
NSMutableString *appendStr=[NSMutableString string];
[appendStr appendFormat:@"UPDATE %@ SET ",tablename];
for (int i=0; i<keyArrary.count; i++) {
NSString *value=valueArrary[i];
if (i==keyArrary.count-1)
[appendStr appendFormat:@"%@='%@'",keyArrary[i],value];
else
[appendStr appendFormat:@"%@='%@',",keyArrary[i],value];
}
[appendStr appendFormat:@" where PID=%zi",ID];
return appendStr; } @end
FDMB 增删改删 查 分页 封装的更多相关文章
- OracleHelper(对增删改查分页查询操作进行了面向对象的封装,对批量增删改操作的事务封装)
公司的一个新项目使用ASP.NET MVC开发,经理让我写个OracleHelper,我从网上找了一个比较全的OracleHelper类,缺点是查询的时候返回DataSet,数据增删改要写很多代码(当 ...
- ADO.NET 增删改、查
数据访问 对应命名空间:System.Data.SqlClient; SqlConnection:连接对象SqlCommand:命令对象SqlDataReader:读取器对象 CommandText: ...
- linux sed 命令 实现对文件的增删改替换查 实验
1. 统一实验文本 # 创建包含下面内容的文件,后面的操作都会使用这个文件 [root@MongoDB ~]# cat person.txt ,mike,CEO ,jack,CTO ,yy,CFO , ...
- ADO.NET增删改-------跟查不一样
建立数据库 create database ren go use database go create table user ( code nvarchar(20) primary key,--编号 ...
- python数据类型—列表(增改删查,统计,取值,排序)
列表是最常用的数据类型之一,通过列表可以对数据实现方便的存储,修改等操作. 先声明一个空列表: >>> names = [] >>> names [] 可以存多个值 ...
- WPF中DataGrid的应用-绑定,增改删,分页,样式
参考以下网址: http://www.cnblogs.com/fwbnet/archive/2012/05/08/2490974.html
- 一个ibatis映射文件的例子(包含增删改单查,多查)
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-/ ...
- sql server 增删改(查太多了)
表: 学生(*学号,姓名,性别,年龄,专业) create table student( sno ) primary key, sname ) not null, ssex ), sage small ...
- JDBC概述及JDBC完成对Oracle的增删改查
什么是JDBC JDBC(Java Data Base Connectivity,Java数据库连接),是一种用于执行SQL语句的Java API,为多种关系数据库提供统一访问.它由一组用Java语言 ...
随机推荐
- ERP合同管理二(三十)
未审核表单列表显示: 1.用户登录后,根据登录用户加载审核流程表中属于当前登录用户的未审核表单.2.点击选中未审核表单跳转到指定审核流程页面 if (Request.QueryString[" ...
- poj 1789 每个字符串不同的字母数代表两个结点间的权值 (MST)
题目大意是就是给出n个长度为7的字符串,每个字符串代表一个车,定义车的距离是两个字符串间不同字母的个数,题目要求的数不同的车的距离的最小值,即所求的就是最小生成树 Sample Input 4aaaa ...
- 《Java程序性能优化》之并发优化
第四章 并行程序优化 1.非阻塞同步避免了基于锁的同步的缺陷,无锁算法没有锁竞争带来的系统开销,也没有线程间频繁调度带来的开销.CAS算法:包含3个参数CAS(v,e,n).V表示要更新的变量,E表示 ...
- HDU 5391 Zball in Tina Town【威尔逊定理】
<题目链接> Zball in Tina Town Problem Description Tina Town is a friendly place. People there care ...
- vue+axios实现移动端图片上传
在利用vue做一些H5页面时,或多或少会遇到有图片上传的操作,主要是运用html5里面的input[type=file]来实现,传递到后端的数据是以二进制的格式传递,所以上传图片的请求与普通的请求稍微 ...
- [洛谷P2123]皇后游戏
很抱歉,这个题我做的解法不是正解,只是恰巧卡了数据 目前数据已经更新,这个题打算过一段时间再去写. 目前在学习DP,这个会暂时放一放,很抱歉 这个题是一个国王游戏的变形(国王游戏就把我虐了qwq) 题 ...
- Python3练习题系列(07)——列表操作原理
目标: 理解列表方法的真实含义. 操作: list_1.append(element) ==> append(list_1, element) mystuff.append('hello') 这 ...
- U3D面试题
直接上新.... 什么是协同程序?答:在主线程运行时同时开启另一段逻辑处理,来协助当前程序的执行.换句话说,开启协程就是开启一个可以与程序并行的逻辑.可以用来控制运动.序列以及对象的行为. Unity ...
- Oozie分布式工作流——从理论和实践分析使用节点间的参数传递
Oozie支持Java Action,因此可以自定义很多的功能.本篇就从理论和实践两方面介绍下Java Action的妙用,另外还涉及到oozie中action之间的参数传递. 本文大致分为以下几个部 ...
- java连接数据库插入数据中文乱码
解决方案: jdbc连接数据库,向表中插入中文查看数据乱码:修改数据库连接url为jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8 注意 ...