根据抽象工厂实现的DBHelpers类
- public abstract class DBHelper
- {
- public static SqlConnection conn = new SqlConnection("server=longdabing;database=test;uid=sa;pwd=sasa");
- public DBHelper()
- {
- conn.Open();
- }
- /// <summary>
- /// insert,update,delete
- /// </summary>
- /// <returns></returns>
- public abstract int ExecuteNonQuery(string sql);
- /// <summary>
- /// mulinsert
- /// </summary>
- /// <param name="insertdata"></param>
- /// <returns></returns>
- public abstract bool MutiInsertData(DataTable insertdata);
- /// <summary>
- /// 查询select
- /// </summary>
- /// <returns></returns>
- public abstract DataTable ExecuteGetData(string sql);
- //public abstract IQueryable<ldbEFEntities> ExecuteEFQuery();
- /// <summary>
- /// 调用存储过程
- /// </summary>
- /// <param name="procedurename"></param>
- /// <returns>返回数据集</returns>
- public abstract DataSet ExeStoredProcedure(string procedurename,SqlParameter[] sqlpara);
- /// <summary>
- /// 执行存储过程
- /// </summary>
- /// <param name="procedurename">存储过程名字</param>
- /// <param name="sqlpara">参数</param>
- /// <returns>返回被影响的行数</returns>
- public abstract void ExeStoredProcedure(string procedurename, SqlParameter[] sqlpara,out int rowcount);
- }
- /// <summary>
- /// sql数据库查询
- /// </summary>
- public class DBHelperSql : DBHelper
- {
- public override int ExecuteNonQuery(string sql)
- {
- int cnt = ;
- try
- {
- SqlCommand cmd = new SqlCommand(sql, conn);
- cnt = cmd.ExecuteNonQuery();
- cmd.Dispose();
- return cnt;
- }
- catch (Exception)
- {
- return cnt;
- }
- finally
- {
- conn.Close();
- }
- }
- public override DataTable ExecuteGetData(string sql)
- {
- DataTable dt = new DataTable();
- try
- {
- SqlDataAdapter sdd = new SqlDataAdapter(sql, conn);
- sdd.Fill(dt);
- }
- catch (Exception)
- {
- //return dt;
- }
- finally
- {
- conn.Close();
- }
- return dt;
- }
- /// <summary>
- /// 执行存储过程
- /// </summary>
- /// <param name="procedurename"></param>
- /// <param name="sqlpara"></param>
- /// <returns>返回数据集</returns>
- public override DataSet ExeStoredProcedure(string procedurename,SqlParameter[] sqlpara)
- {
- DataSet ds = new DataSet();
- try
- {
- SqlCommand cmd = new SqlCommand();
- cmd.Connection = conn;
- cmd.CommandText = procedurename;
- cmd.CommandType = CommandType.StoredProcedure;
- if (sqlpara.Length > )
- {
- cmd.Parameters.AddRange(sqlpara);
- }
- //cmd.Parameters.Add("@para", SqlDbType.VarChar, 50);
- SqlDataAdapter sdd = new SqlDataAdapter(cmd);
- sdd.Fill(ds);
- }
- catch (Exception)
- {
- //return dt;
- }
- finally
- {
- conn.Close();
- }
- return ds;
- }
- public override void ExeStoredProcedure(string procedurename, SqlParameter[] sqlpara,out int rowcount)
- {
- rowcount = ;
- try
- {
- SqlCommand cmd = new SqlCommand();
- cmd.Connection = conn;
- cmd.CommandText = procedurename;
- cmd.CommandType = CommandType.StoredProcedure;
- //SqlParameter para = new SqlParameter();
- //para.TypeName = "";
- if (sqlpara.Length > )
- {
- cmd.Parameters.AddRange(sqlpara);
- }
- rowcount = cmd.ExecuteNonQuery();
- }
- catch (Exception)
- {
- //return dt;
- }
- finally
- {
- conn.Close();
- }
- }
- public override bool MutiInsertData(DataTable insertdata)
- {
- SqlBulkCopy bulkCopy = new SqlBulkCopy(conn);
- SqlTransaction sqltran = conn.BeginTransaction();//开启事务
- bulkCopy.DestinationTableName = "inforsqlbulk";
- bulkCopy.BatchSize = insertdata.Rows.Count;
- if (conn.State == ConnectionState.Closed)
- {
- conn.Open();
- }
- //for (int i = 0; i < dt.Columns.Count; i++)
- //{
- // bulkCopy.ColumnMappings.Add(i, i); //映射定义数据源中的列和目标表中的列之间的关系
- //}
- try
- {
- if (insertdata != null && insertdata.Rows.Count > )
- {
- bulkCopy.WriteToServer(insertdata);
- }
- return true;
- }
- catch
- {
- sqltran.Rollback();//回滚。
- return false;
- }
- }
- }
- /// <summary>
- /// EntityFramework 查询
- /// </summary>
- public class DBHelperEF : DBHelper
- {
- public override int ExecuteNonQuery(string sql)
- {
- throw new NotImplementedException();
- }
- public override DataTable ExecuteGetData(string sql)
- {
- throw new NotImplementedException();
- }
- public override DataSet ExeStoredProcedure(string procedurename, SqlParameter[] sqlpara)
- {
- throw new NotImplementedException();
- }
- public override void ExeStoredProcedure(string procedurename, SqlParameter[] sqlpara, out int rowcount)
- {
- throw new NotImplementedException();
- }
- public override bool MutiInsertData(DataTable insertdata)
- {
- throw new NotImplementedException();
- }
- }
- /// <summary>
- /// Access数据库
- /// </summary>
- public class DBHelperAccess : DBHelper
- {
- public override int ExecuteNonQuery(string sql)
- {
- throw new NotImplementedException();
- }
- public override DataTable ExecuteGetData(string sql)
- {
- throw new NotImplementedException();
- }
- public override DataSet ExeStoredProcedure(string procedurename, SqlParameter[] sqlpara)
- {
- throw new NotImplementedException();
- }
- public override void ExeStoredProcedure(string procedurename, SqlParameter[] sqlpara, out int rowcount)
- {
- throw new NotImplementedException();
- }
- public override bool MutiInsertData(DataTable insertdata)
- {
- throw new NotImplementedException();
- }
- }
- /// <summary>
- /// Oracle数据库
- /// </summary>
- public class DBHelperOracle : DBHelper
- {
- public override int ExecuteNonQuery(string sql)
- {
- throw new NotImplementedException();
- }
- public override DataTable ExecuteGetData(string sql)
- {
- throw new NotImplementedException();
- }
- public override DataSet ExeStoredProcedure(string procedurename, SqlParameter[] sqlpara)
- {
- throw new NotImplementedException();
- }
- public override void ExeStoredProcedure(string procedurename, SqlParameter[] sqlpara, out int rowcount)
- {
- throw new NotImplementedException();
- }
- public override bool MutiInsertData(DataTable insertdata)
- {
- throw new NotImplementedException();
- }
- }
- public abstract class DBHelperFactory
- {
- public abstract DBHelper CreateDBHelper();
- }
- public class DBHelperSQLFactory : DBHelperFactory
- {
- public override DBHelper CreateDBHelper()
- {
- return new DBHelperSql();
- }
- }
- public class DBHelperAccessFactory : DBHelperFactory
- {
- public override DBHelper CreateDBHelper()
- {
- return new DBHelperAccess();
- }
- }
- public class DBHelperEFFactory : DBHelperFactory
- {
- public override DBHelper CreateDBHelper()
- {
- return new DBHelperEF();
- }
- }
- public class DBHelperOracleFactory : DBHelperFactory
- {
- public override DBHelper CreateDBHelper()
- {
- return new DBHelperOracle();
- }
- }
根据抽象工厂实现的DBHelpers类的更多相关文章
- 设计模式之工厂模式VS抽象工厂
一.工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 工厂模式在<Java与模式>中分为三类:1)简单工厂模式(Simple Factor ...
- C#设计模式(3):抽象工厂模式(Abstract Factory)(转载)
概述 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作:同时由于需求的变化,往往存在着更多系列对象的创建工作.如何应对这种变化?如何绕过常规的对象的创建方法(new),提供一种“封装机制”来 ...
- 设计模式学习之抽象工厂(Abstract Factory,创建型模式)(3)
假如我们的苹果和香蕉还分为北方的和南方的,那么苹果Apple和香蕉Banana就是抽象类了,所以采集的方法就应该抽象的 第一步: 我们会创建北方的苹果NorthApple类和SourthBanana类 ...
- .NET设计模式(3):抽象工厂模式(Abstract Factory)(转)
概述 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作:同时由于需求的变化,往往存在着更多系列对象的创建工作.如何应对这种变化?如何绕过常规的对象的创建方法(new),提供一种“封装机制”来 ...
- [设计模式]<<设计模式之禅>>抽象工厂模式
1 女娲的失误 上一篇讲了女娲造人的故事.人是造出来了,世界也热闹了,可是低头一看,都是清一色的类型,缺少关爱.仇恨.喜怒哀乐等情绪,人类的生命太平淡了,女娲一想,猛然一拍 脑袋,忘记给人类定义性别了 ...
- .NET设计模式(3):抽象工厂模式(Abstract Factory)
):抽象工厂模式(Abstract Factory) 抽象工厂模式(Abstract Factory) --探索设计模式系列之三 Terrylee,2005年12月12日 转载:http://terr ...
- C++设计模式——抽象工厂模式
问题描述 之前讲到了C++设计模式——工厂方法模式,我们可能会想到,后期产品会越来越多了,建立的工厂也会越来越多,工厂进行了增长,工厂变的凌乱而难于管理:由于工厂方法模式创建的对象都是继承于Produ ...
- 设计模式(3)抽象工厂模式(Abstract Factory)
设计模式(0)简单工厂模式 设计模式(1)单例模式(Singleton) 设计模式(2)工厂方法模式(Factory Method) 源码地址 0 抽象工厂模式简介 0.0 抽象工厂模式定义 抽象工厂 ...
- .NET设计模式 第二部分 创建型模式(2)—抽象工厂模式(Abstract Factory)
抽象工厂模式(Abstract Factory) ——探索设计模式系列之三 Terrylee,2005年12月12日 概述 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作:同时由于需求的变 ...
随机推荐
- jxl 导出数据到excel
优点: Jxl对中文支持非常好,操作简单,方法看名知意. Jxl是纯javaAPI,在跨平台上表现的非常完美,代码可以再windows或者Linux上运行而无需重新编写 支持Excel 95-2000 ...
- Js表单验证控件(使用方便,无需编码)-01使用说明
演示地址:http://weishakeji.net/Utility/Verify/Index.htm 开源地址:https://github.com/weishakeji/Verify_Js ...
- 使用asyncio实现redis客户端
redis协议格式请参考,http://doc.redisfans.com/topic/protocol.html 这里简单介绍下: *<参数数量> \r\n $<参数 的字节数量& ...
- Django入门-通用视图
文档:https://docs.djangoproject.com/en/1.11/topics/class-based-views/ from django.shortcuts import get ...
- PHP随机函数-集锦
1 PHP随机函数收藏 function random_string($len = 6) { $chars = array( "a", "b", "c ...
- 解决PhpMyadmin1440秒未活动自动退出
解决方法如下:#vim phpMyAdmin/libraries/config.default.php找到如下位置$cfg['LoginCookieValidity'] = ; 将1440修改成 ...
- 夹缝中求生存-在一无所有的php虚拟主机环境下利用smtp发送邮件(二)
夹缝中求生存 前言:在上一篇随笔中,以163个人邮箱作为发送邮箱地址,当收件邮箱为QQ邮箱时,极有可能会被直接扔进邮件垃圾箱里,为了解决这个问题,申请注册企业邮箱,可以减少发出的邮件被当作垃圾邮件的可 ...
- Unity如何管理住Android 6.0 调皮的权限
前天我们项目有这么个需求,台湾版本由于要上谷歌Play要求安卓系统6.0以上的动态申请权限,对于一个做Unity的来说,是不是有点懵逼,这我该何去何从呢?我想静静,静静的想一想,权限也不就那么点事吗? ...
- 使用外置无线网卡来切换mac地址
mac地址被別人過濾了!小樣,既然內置網卡不能修改mac,那我就用外置usb無線網卡,你以為你很厲害嗎,看我怎麼破解了你.
- Selenium学习资源和网站
用于收集常用的网站和学习资源: 文章: Selenium私房菜系列--总章 WEB 自动化测试工具 Selenium 简介及其应用 Selenium教程 和我一起学 Selenium WebDrive ...