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语言 ...
随机推荐
- mysql批量插入数据优化
一.问题 很早以前做了一个更新功能,就是将A表中的数据全部查找出来,相对B表中改变的数据更新B表,B表中没有的数据插入B表. 最近发现该功能执行速率减慢,有时还跑超时.原来是A表中数据渐渐变多,就有了 ...
- 《JavaScript 高级程序设计》第二章:在HTML中使用JavaScript
script 标记是 netspace 公司最早为在 html中引入 javascript代码而创造的HTML元素,并最终被 HTML规范采纳. script 标记有四个比较重要的属性: src ty ...
- HDU 3980 (SG 环变成链 之前的先手变成后手)
题意 两个人在一个由 n 个玻璃珠组成的一个圆环上玩涂色游戏,游戏的规则是: 1.每人一轮,每轮选择一个长度为 m 的连续的.没有涂过色的玻璃珠串涂色 2.不能涂色的那个人输掉游戏 Aekdycoin ...
- hdu 2066 多起点 多终点
多起点 多终点 无向图 结点的个数要自己求 Sample Input6 2 3 //边数 起点数 终点数1 3 5 //u v w1 4 72 8 123 8 44 9 129 10 21 2 //起 ...
- 支持删除的并查集 hdu2473
题解: 代码: #include<bits/stdc++.h> using namespace std; #define ll long long ; int fa[maxn],id,vi ...
- Maven启动代理访问
1.说明 如果你的公司正在建立一个防火墙,并使用HTTP代理服务器来阻止用户直接连接到互联网.如果您使用代理,Maven将无法下载任何依赖. 为了使它工作,你必须声明在 Maven 的配置文件中设置代 ...
- Linux 之 Makefile 报错
1. 在make命令后出现这种错误提示,是提示第4行没有分隔符. 例如: 1 target:prerequisites ...... 4 command …… 改为: 1 target:prerequ ...
- POJ2417 Discrete Logging【BSGS】(模板题)
<题目链接> 题目大意: P是素数,然后分别给你P,B,N三个数,然你求出满足这个式子的L的最小值 : BL== N (mod P). 解题分析: 这题是bsgs算法的模板题. #incl ...
- Python 函数装饰器
首次接触到装饰器的概念,太菜啦! Python 装饰器可以大大节省代码的编写量,提升代码的重复使用率.函数装饰器其本质也是一个函数,我们可以把它理解为函数中定义了一个子函数. 例如我们有这么一个需求, ...
- springboot项目接入配置中心,实现@ConfigurationProperties的bean属性刷新方案
前言 配置中心,通过key=value的形式存储环境变量.配置中心的属性做了修改,项目中可以通过配置中心的依赖(sdk)立即感知到.需要做的就是如何在属性发生变化时,改变带有@Configuratio ...